swd 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- swd (0.1.1)
4
+ swd (0.1.2)
5
5
  activesupport (>= 3)
6
6
  attr_required (>= 0.0.5)
7
7
  httpclient (>= 2.2.1)
@@ -11,12 +11,12 @@ PATH
11
11
  GEM
12
12
  remote: http://rubygems.org/
13
13
  specs:
14
- activesupport (3.2.1)
14
+ activesupport (3.2.8)
15
15
  i18n (~> 0.6)
16
16
  multi_json (~> 1.0)
17
- addressable (2.2.6)
17
+ addressable (2.3.2)
18
18
  attr_required (0.0.5)
19
- configatron (2.9.0)
19
+ configatron (2.9.1)
20
20
  yamler (>= 0.1.0)
21
21
  cover_me (1.2.0)
22
22
  configatron
@@ -24,21 +24,21 @@ GEM
24
24
  crack (0.3.1)
25
25
  diff-lcs (1.1.3)
26
26
  hashie (1.2.0)
27
- httpclient (2.2.4)
28
- i18n (0.6.0)
29
- json (1.6.5)
30
- multi_json (1.0.4)
27
+ httpclient (2.2.7)
28
+ i18n (0.6.1)
29
+ json (1.7.5)
30
+ multi_json (1.3.6)
31
31
  rake (0.9.2.2)
32
- rspec (2.8.0)
33
- rspec-core (~> 2.8.0)
34
- rspec-expectations (~> 2.8.0)
35
- rspec-mocks (~> 2.8.0)
36
- rspec-core (2.8.0)
37
- rspec-expectations (2.8.0)
38
- diff-lcs (~> 1.1.2)
39
- rspec-mocks (2.8.0)
40
- webmock (1.7.10)
41
- addressable (~> 2.2, > 2.2.5)
32
+ rspec (2.11.0)
33
+ rspec-core (~> 2.11.0)
34
+ rspec-expectations (~> 2.11.0)
35
+ rspec-mocks (~> 2.11.0)
36
+ rspec-core (2.11.1)
37
+ rspec-expectations (2.11.3)
38
+ diff-lcs (~> 1.1.3)
39
+ rspec-mocks (2.11.3)
40
+ webmock (1.8.11)
41
+ addressable (>= 2.2.7)
42
42
  crack (>= 0.1.7)
43
43
  yamler (0.1.0)
44
44
 
data/Rakefile CHANGED
@@ -5,9 +5,15 @@ require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
7
  if RUBY_VERSION >= '1.9'
8
- require 'cover_me'
9
- CoverMe.config do |c|
10
- c.file_pattern = /(#{CoverMe.config.project.root}\/lib\/.+\.rb)/i
8
+ namespace :cover_me do
9
+ desc "Generates and opens code coverage report."
10
+ task :report do
11
+ require 'cover_me'
12
+ CoverMe.complete!
13
+ end
14
+ end
15
+ task :spec do
16
+ Rake::Task['cover_me:report'].invoke
11
17
  end
12
18
  else
13
19
  RSpec::Core::RakeTask.new(:rcov) do |spec|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
data/lib/swd.rb CHANGED
@@ -4,6 +4,7 @@ require 'json'
4
4
  require 'active_support/core_ext'
5
5
  require 'httpclient'
6
6
  require 'attr_required'
7
+ require 'attr_optional'
7
8
 
8
9
  module SWD
9
10
  VERSION = ::File.read(
@@ -1,12 +1,13 @@
1
1
  module SWD
2
2
  class Resource
3
- include AttrRequired
3
+ include AttrRequired, AttrOptional
4
4
  attr_required :principal, :service, :host, :path
5
+ attr_optional :port
5
6
 
6
7
  class Expired < Exception; end
7
8
 
8
9
  def initialize(attributes = {})
9
- required_attributes.each do |key|
10
+ (optional_attributes + required_attributes).each do |key|
10
11
  self.send "#{key}=", attributes[key]
11
12
  end
12
13
  @path ||= '/.well-known/simple-web-discovery'
@@ -22,7 +23,7 @@ module SWD
22
23
  end
23
24
 
24
25
  def endpoint
25
- SWD.url_builder.build [nil, host, nil, path, {
26
+ SWD.url_builder.build [nil, host, port, path, {
26
27
  :principal => principal,
27
28
  :service => service
28
29
  }.to_query, nil]
@@ -64,7 +65,7 @@ module SWD
64
65
 
65
66
  def redirect_to(location, expires)
66
67
  uri = URI.parse(location)
67
- @host, @path = uri.host, uri.path
68
+ @host, @path, @port = uri.host, uri.path, uri.port
68
69
  raise Expired if expires && expires.to_i < Time.now.utc.to_i
69
70
  discover!
70
71
  end
@@ -0,0 +1,5 @@
1
+ {
2
+ "SWD_service_redirect": {
3
+ "location": "https://swd.proseware.com:8080/swd_server"
4
+ }
5
+ }
@@ -1,8 +1,5 @@
1
1
  if RUBY_VERSION >= '1.9'
2
2
  require 'cover_me'
3
- at_exit do
4
- CoverMe.complete!
5
- end
6
3
  end
7
4
 
8
5
  require 'rspec'
@@ -17,7 +17,7 @@ describe SWD::Resource do
17
17
  it "should require #{key}" do
18
18
  expect do
19
19
  SWD::Resource.new attributes.merge(key => nil)
20
- end.should raise_error AttrRequired::AttrMissing
20
+ end.to raise_error AttrRequired::AttrMissing
21
21
  end
22
22
  end
23
23
 
@@ -49,7 +49,7 @@ describe SWD::Resource do
49
49
  context 'when expired' do
50
50
  it 'should return SWD::Response' do
51
51
  mock_json resource.endpoint, 'redirect_expired' do
52
- expect { res = resource.discover! }.should raise_error SWD::Resource::Expired
52
+ expect { res = resource.discover! }.to raise_error SWD::Resource::Expired
53
53
  end
54
54
  end
55
55
  end
@@ -84,35 +84,35 @@ describe SWD::Resource do
84
84
  context 'when invalid SSL cert' do
85
85
  it do
86
86
  SWD.http_client.should_receive(:get_content).and_raise(OpenSSL::SSL::SSLError)
87
- expect { res = resource.discover! }.should raise_error SWD::Exception
87
+ expect { res = resource.discover! }.to raise_error SWD::Exception
88
88
  end
89
89
  end
90
90
 
91
91
  context 'when invalid JSON' do
92
92
  it do
93
93
  SWD.http_client.should_receive(:get_content).and_raise(JSON::ParserError)
94
- expect { res = resource.discover! }.should raise_error SWD::Exception
94
+ expect { res = resource.discover! }.to raise_error SWD::Exception
95
95
  end
96
96
  end
97
97
 
98
98
  context 'when SocketError' do
99
99
  it do
100
100
  SWD.http_client.should_receive(:get_content).and_raise(SocketError)
101
- expect { res = resource.discover! }.should raise_error SWD::Exception
101
+ expect { res = resource.discover! }.to raise_error SWD::Exception
102
102
  end
103
103
  end
104
104
 
105
105
  context 'when BadResponseError without response' do
106
106
  it do
107
107
  SWD.http_client.should_receive(:get_content).and_raise(HTTPClient::BadResponseError.new(''))
108
- expect { res = resource.discover! }.should raise_error SWD::Exception
108
+ expect { res = resource.discover! }.to raise_error SWD::Exception
109
109
  end
110
110
  end
111
111
 
112
112
  context 'when bad request' do
113
113
  it 'should raise SWD::BadRequest' do
114
114
  mock_json resource.endpoint, 'blank', :status => 400 do
115
- expect { res = resource.discover! }.should raise_error SWD::BadRequest
115
+ expect { res = resource.discover! }.to raise_error SWD::BadRequest
116
116
  end
117
117
  end
118
118
  end
@@ -120,7 +120,7 @@ describe SWD::Resource do
120
120
  context 'when unauthorized' do
121
121
  it 'should raise SWD::Unauthorized' do
122
122
  mock_json resource.endpoint, 'blank', :status => 401 do
123
- expect { res = resource.discover! }.should raise_error SWD::Unauthorized
123
+ expect { res = resource.discover! }.to raise_error SWD::Unauthorized
124
124
  end
125
125
  end
126
126
  end
@@ -128,7 +128,7 @@ describe SWD::Resource do
128
128
  context 'when forbidden' do
129
129
  it 'should raise SWD::Forbidden' do
130
130
  mock_json resource.endpoint, 'blank', :status => 403 do
131
- expect { res = resource.discover! }.should raise_error SWD::Forbidden
131
+ expect { res = resource.discover! }.to raise_error SWD::Forbidden
132
132
  end
133
133
  end
134
134
  end
@@ -136,7 +136,7 @@ describe SWD::Resource do
136
136
  context 'when not found' do
137
137
  it 'should raise SWD::NotFound' do
138
138
  mock_json resource.endpoint, 'blank', :status => 404 do
139
- expect { res = resource.discover! }.should raise_error SWD::NotFound
139
+ expect { res = resource.discover! }.to raise_error SWD::NotFound
140
140
  end
141
141
  end
142
142
  end
@@ -144,7 +144,7 @@ describe SWD::Resource do
144
144
  context 'when other error happened' do
145
145
  it 'should raise SWD::HttpError' do
146
146
  mock_json resource.endpoint, 'blank', :status => 500 do
147
- expect { res = resource.discover! }.should raise_error SWD::HttpError
147
+ expect { res = resource.discover! }.to raise_error SWD::HttpError
148
148
  end
149
149
  end
150
150
  end
@@ -20,6 +20,66 @@ describe SWD do
20
20
  ).should be_a SWD::Response
21
21
  end
22
22
  end
23
+
24
+ context 'when port specified' do
25
+ it 'should use it' do
26
+ mock_json "https://example.com:8080/.well-known/simple-web-discovery", 'success', :query => {
27
+ :principal => 'mailto:joe@example.com',
28
+ :service => 'urn:adatum.com:calendar'
29
+ } do
30
+ SWD.discover!(
31
+ :principal => 'mailto:joe@example.com',
32
+ :service => 'urn:adatum.com:calendar',
33
+ :host => 'example.com',
34
+ :port => 8080
35
+ ).should be_a SWD::Response
36
+ end
37
+ end
38
+
39
+ context 'when redirected to different host' do
40
+ context 'with port' do
41
+ it 'should success' do
42
+ mock_json "https://example.com:8080/.well-known/simple-web-discovery", 'redirect_with_port', :query => {
43
+ :principal => 'mailto:joe@example.com',
44
+ :service => 'urn:adatum.com:calendar'
45
+ } do
46
+ mock_json "https://swd.proseware.com:8080/swd_server", 'success', :query => {
47
+ :principal => 'mailto:joe@example.com',
48
+ :service => 'urn:adatum.com:calendar'
49
+ } do
50
+ SWD.discover!(
51
+ :principal => 'mailto:joe@example.com',
52
+ :service => 'urn:adatum.com:calendar',
53
+ :host => 'example.com',
54
+ :port => 8080
55
+ ).should be_a SWD::Response
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ context 'without port' do
62
+ it 'should success' do
63
+ mock_json "https://example.com:8080/.well-known/simple-web-discovery", 'redirect', :query => {
64
+ :principal => 'mailto:joe@example.com',
65
+ :service => 'urn:adatum.com:calendar'
66
+ } do
67
+ mock_json "https://swd.proseware.com/swd_server", 'success', :query => {
68
+ :principal => 'mailto:joe@example.com',
69
+ :service => 'urn:adatum.com:calendar'
70
+ } do
71
+ SWD.discover!(
72
+ :principal => 'mailto:joe@example.com',
73
+ :service => 'urn:adatum.com:calendar',
74
+ :host => 'example.com',
75
+ :port => 8080
76
+ ).should be_a SWD::Response
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
23
83
  end
24
84
 
25
85
  describe '.debug!' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-16 00:00:00.000000000Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70264558491420 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.4.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70264558491420
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.4.3
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: httpclient
27
- requirement: &70264558490160 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 2.2.1
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70264558490160
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 2.2.1
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: activesupport
38
- requirement: &70264558489460 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '3'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70264558489460
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: i18n
49
- requirement: &70264558488860 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70264558488860
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: attr_required
60
- requirement: &70264558488260 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 0.0.5
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70264558488260
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.5
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rake
71
- requirement: &70264558483860 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0.8'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *70264558483860
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0.8'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: cover_me
82
- requirement: &70264558481700 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: 1.2.0
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *70264558481700
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 1.2.0
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: rspec
93
- requirement: &70264558480100 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '2'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *70264558480100
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '2'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: webmock
104
- requirement: &70264558478160 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,7 +149,12 @@ dependencies:
109
149
  version: 1.6.2
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *70264558478160
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: 1.6.2
113
158
  description: SWD (Simple Web Discovery) Client Library
114
159
  email:
115
160
  - nov@matake.jp
@@ -137,6 +182,7 @@ files:
137
182
  - spec/mock_json/blank.json
138
183
  - spec/mock_json/redirect.json
139
184
  - spec/mock_json/redirect_expired.json
185
+ - spec/mock_json/redirect_with_port.json
140
186
  - spec/mock_json/success.json
141
187
  - spec/spec_helper.rb
142
188
  - spec/swd/debugger/request_filter_spec.rb
@@ -164,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
210
  version: '0'
165
211
  requirements: []
166
212
  rubyforge_project:
167
- rubygems_version: 1.8.12
213
+ rubygems_version: 1.8.24
168
214
  signing_key:
169
215
  specification_version: 3
170
216
  summary: SWD (Simple Web Discovery) Client Library
@@ -173,6 +219,7 @@ test_files:
173
219
  - spec/mock_json/blank.json
174
220
  - spec/mock_json/redirect.json
175
221
  - spec/mock_json/redirect_expired.json
222
+ - spec/mock_json/redirect_with_port.json
176
223
  - spec/mock_json/success.json
177
224
  - spec/spec_helper.rb
178
225
  - spec/swd/debugger/request_filter_spec.rb