swd 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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