grouper-rest-client 0.2.6 → 0.2.7
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.
- data/HISTORY +3 -0
- data/Rakefile +9 -3
- data/grouper-rest-client.gemspec +2 -1
- data/lib/grouper-rest-client/resource.rb +7 -4
- data/lib/grouper-rest-client/version.rb +1 -1
- data/test/subjects_test.rb +90 -0
- data/{spec/spec_helper.rb → test/test_helper.rb} +4 -0
- metadata +35 -13
- data/spec/resource_spec.rb +0 -110
data/HISTORY
CHANGED
data/Rakefile
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
require 'bundler'
|
2
|
+
require 'rake/testtask'
|
2
3
|
require 'rdoc-readme/rake_task'
|
3
|
-
require 'rspec/core/rake_task'
|
4
4
|
|
5
5
|
Bundler::GemHelper.install_tasks
|
6
6
|
RDoc::Readme::RakeTask.new 'lib/grouper-rest-client.rb', 'README.rdoc'
|
7
|
-
RSpec::Core::RakeTask.new(:spec)
|
8
7
|
|
9
|
-
task :default => :
|
8
|
+
task :default => :test
|
9
|
+
|
10
|
+
Rake::TestTask.new { |t|
|
11
|
+
t.libs = [ 'test' ]
|
12
|
+
t.pattern = 'test/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
t.warning = true
|
15
|
+
}
|
10
16
|
|
data/grouper-rest-client.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_dependency( %q<json>, [ ">=1.5.1" ] )
|
23
23
|
s.add_dependency( %q<rest-client>, [ ">=1.6.1" ] )
|
24
24
|
|
25
|
-
s.add_development_dependency( %q<
|
25
|
+
s.add_development_dependency( %q<fakeweb>, [ ">=1.3.0" ] )
|
26
|
+
s.add_development_dependency( %q<shoulda>, [ ">=2.11.3" ] )
|
26
27
|
end
|
27
28
|
|
@@ -127,12 +127,15 @@ module Grouper # :nodoc:
|
|
127
127
|
# +subjects+:: Get subject(s) matching this identifier.
|
128
128
|
def subjects(subject)
|
129
129
|
raise ArgumentError if subject.nil? || subject.empty?
|
130
|
-
k1, k2
|
131
|
-
|
130
|
+
k1, k2 = 'WsGetSubjectsResults', 'wsSubjects'
|
131
|
+
|
132
|
+
result = call("subjects/#{subject}")
|
132
133
|
if result.key?(k1) && result[k1].key?(k2)
|
133
|
-
return result[k1][k2].
|
134
|
+
return result[k1][k2].select { |tmp| tmp['success'] == 'T' }.collect do |r|
|
135
|
+
Grouper::Rest::Client::Resource::Subject.new(self, r)
|
136
|
+
end
|
134
137
|
end
|
135
|
-
|
138
|
+
result
|
136
139
|
end
|
137
140
|
|
138
141
|
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SubjectsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context '#subjects()' do
|
6
|
+
setup do
|
7
|
+
FakeWeb.allow_net_connect = false
|
8
|
+
@url = 'http://grouper.example.org'
|
9
|
+
@grouper = Grouper::Rest::Client::Resource.new @url
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'invalid argument' do
|
13
|
+
should 'raise ArgumentError when query string is nil' do
|
14
|
+
assert_raise(ArgumentError) { @grouper.subjects(nil) }
|
15
|
+
end
|
16
|
+
should 'raise ArgumentError when query string is empty' do
|
17
|
+
assert_raise(ArgumentError) { @grouper.subjects('') }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when subject not found' do
|
22
|
+
setup do
|
23
|
+
query = 'no_such_subject'
|
24
|
+
mock = JSON.generate(
|
25
|
+
{
|
26
|
+
'WsGetSubjectsResults' =>
|
27
|
+
{
|
28
|
+
'wsSubjects' =>
|
29
|
+
[
|
30
|
+
{
|
31
|
+
'id' => 'no_such_subject',
|
32
|
+
'resultCode' => 'SUBJECT_NOT_FOUND',
|
33
|
+
'success' => 'F'
|
34
|
+
}
|
35
|
+
]
|
36
|
+
}
|
37
|
+
}
|
38
|
+
)
|
39
|
+
FakeWeb.register_uri( :get, "#{@url}/subjects/#{query}", :body => mock )
|
40
|
+
@result = @grouper.subjects(query)
|
41
|
+
@response = @grouper.response
|
42
|
+
end # setup
|
43
|
+
|
44
|
+
should 'return an empty array' do
|
45
|
+
assert @result.instance_of? Array
|
46
|
+
assert_equal 0, @result.size
|
47
|
+
end
|
48
|
+
|
49
|
+
end # context 'when subject not found'
|
50
|
+
|
51
|
+
context 'when subject found' do
|
52
|
+
setup do
|
53
|
+
query = 'blair'
|
54
|
+
mock = JSON.generate(
|
55
|
+
{
|
56
|
+
'WsGetSubjectsResults' =>
|
57
|
+
{
|
58
|
+
'wsSubjects' =>
|
59
|
+
[
|
60
|
+
{
|
61
|
+
'id' => '12345678A',
|
62
|
+
'name' => 'Blair Christensen',
|
63
|
+
'resultCode' => 'SUCCESS',
|
64
|
+
'sourceId' => 'mcdb',
|
65
|
+
'success' => 'T'
|
66
|
+
}
|
67
|
+
]
|
68
|
+
}
|
69
|
+
}
|
70
|
+
)
|
71
|
+
FakeWeb.register_uri( :get, "#{@url}/subjects/#{query}", :body => mock )
|
72
|
+
@result = @grouper.subjects(query)
|
73
|
+
@response = @grouper.response
|
74
|
+
end # setup
|
75
|
+
|
76
|
+
should 'return an array with one expected entry' do
|
77
|
+
assert @result.instance_of? Array
|
78
|
+
assert_equal 1, @result.size
|
79
|
+
s = @result.first
|
80
|
+
assert s.instance_of? Grouper::Rest::Client::Resource::Subject
|
81
|
+
assert_equal '12345678A', s['id']
|
82
|
+
assert_equal 'Blair Christensen', s['name']
|
83
|
+
end
|
84
|
+
|
85
|
+
end # context 'when successful'
|
86
|
+
|
87
|
+
end # context '#subjects()'
|
88
|
+
|
89
|
+
end # class SubjectsTest
|
90
|
+
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grouper-rest-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
9
|
+
- 7
|
10
|
+
version: 0.2.7
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Blair Christensen
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-
|
18
|
+
date: 2011-06-01 00:00:00 -05:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,6 +26,7 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 1
|
28
30
|
segments:
|
29
31
|
- 1
|
30
32
|
- 5
|
@@ -40,6 +42,7 @@ dependencies:
|
|
40
42
|
requirements:
|
41
43
|
- - ">="
|
42
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 13
|
43
46
|
segments:
|
44
47
|
- 1
|
45
48
|
- 6
|
@@ -48,20 +51,37 @@ dependencies:
|
|
48
51
|
type: :runtime
|
49
52
|
version_requirements: *id002
|
50
53
|
- !ruby/object:Gem::Dependency
|
51
|
-
name:
|
54
|
+
name: fakeweb
|
52
55
|
prerelease: false
|
53
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
57
|
none: false
|
55
58
|
requirements:
|
56
59
|
- - ">="
|
57
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 27
|
58
62
|
segments:
|
59
|
-
-
|
60
|
-
-
|
63
|
+
- 1
|
64
|
+
- 3
|
61
65
|
- 0
|
62
|
-
version:
|
66
|
+
version: 1.3.0
|
63
67
|
type: :development
|
64
68
|
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: shoulda
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 37
|
78
|
+
segments:
|
79
|
+
- 2
|
80
|
+
- 11
|
81
|
+
- 3
|
82
|
+
version: 2.11.3
|
83
|
+
type: :development
|
84
|
+
version_requirements: *id004
|
65
85
|
description: REST client for accessing the Grouper WS API
|
66
86
|
email:
|
67
87
|
- blair.christensen@gmail.com
|
@@ -81,8 +101,8 @@ files:
|
|
81
101
|
- lib/grouper-rest-client.rb
|
82
102
|
- lib/grouper-rest-client/resource.rb
|
83
103
|
- lib/grouper-rest-client/version.rb
|
84
|
-
-
|
85
|
-
-
|
104
|
+
- test/subjects_test.rb
|
105
|
+
- test/test_helper.rb
|
86
106
|
has_rdoc: true
|
87
107
|
homepage: https://github.com/blairc/
|
88
108
|
licenses: []
|
@@ -97,6 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
117
|
requirements:
|
98
118
|
- - ">="
|
99
119
|
- !ruby/object:Gem::Version
|
120
|
+
hash: 3
|
100
121
|
segments:
|
101
122
|
- 0
|
102
123
|
version: "0"
|
@@ -105,16 +126,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
126
|
requirements:
|
106
127
|
- - ">="
|
107
128
|
- !ruby/object:Gem::Version
|
129
|
+
hash: 3
|
108
130
|
segments:
|
109
131
|
- 0
|
110
132
|
version: "0"
|
111
133
|
requirements: []
|
112
134
|
|
113
135
|
rubyforge_project: grouper-rest-client
|
114
|
-
rubygems_version: 1.
|
136
|
+
rubygems_version: 1.6.2
|
115
137
|
signing_key:
|
116
138
|
specification_version: 3
|
117
139
|
summary: REST client for accessing the Grouper WS API
|
118
140
|
test_files:
|
119
|
-
-
|
120
|
-
-
|
141
|
+
- test/subjects_test.rb
|
142
|
+
- test/test_helper.rb
|
data/spec/resource_spec.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Grouper::Rest::Client::Resource initialization" do
|
4
|
-
|
5
|
-
context "with no arguments" do
|
6
|
-
it "should raise ArgumentError" do
|
7
|
-
lambda { Grouper::Rest::Client::Resource.new }.should raise_error(ArgumentError)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
context "with one argument" do
|
12
|
-
|
13
|
-
context "that is invalid" do
|
14
|
-
it "should raise ArgumentError when nil" do
|
15
|
-
lambda { Grouper::Rest::Client::Resource.new(nil) }.should raise_error(ArgumentError)
|
16
|
-
end
|
17
|
-
it "should raise ArgumentError when blank" do
|
18
|
-
lambda { Grouper::Rest::Client::Resource.new('') }.should raise_error(ArgumentError)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "that is valid" do
|
23
|
-
it "should return Grouper::Rest::Client::Resource object" do
|
24
|
-
Grouper::Rest::Client::Resource.new('foo').should be_an_instance_of(Grouper::Rest::Client::Resource)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end # describe initialization
|
31
|
-
|
32
|
-
|
33
|
-
describe "Grouper::Rest::Client::Resource#groups()" do
|
34
|
-
|
35
|
-
before(:each) do
|
36
|
-
@grouper = Grouper::Rest::Client::Resource.new('foo')
|
37
|
-
end
|
38
|
-
|
39
|
-
context "with no arguments" do
|
40
|
-
it "should raise ArgumentError" do
|
41
|
-
lambda { @grouper.groups }.should raise_error(ArgumentError)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context "with one argument" do
|
46
|
-
context "that is invalid" do
|
47
|
-
it "should raise ArgumentError when nil" do
|
48
|
-
lambda { @grouper.groups(nil) }.should raise_error(ArgumentError)
|
49
|
-
end
|
50
|
-
it "should raise ArgumentError when blank" do
|
51
|
-
lambda { @grouper.groups('') }.should raise_error(ArgumentError)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
end # describe #groups()
|
57
|
-
|
58
|
-
|
59
|
-
describe "Grouper::Rest::Client::Resource#error?()" do
|
60
|
-
context "before any WS calls have been made" do
|
61
|
-
it "should be false" do
|
62
|
-
Grouper::Rest::Client::Resource.new('foo').error?.should be_false
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end # describe #error?()
|
66
|
-
|
67
|
-
|
68
|
-
describe "Grouper::Rest::Client::Resource#ok?()" do
|
69
|
-
context "before any WS calls have been made" do
|
70
|
-
it "should be true" do
|
71
|
-
Grouper::Rest::Client::Resource.new('foo').ok?.should be_true
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end # describe #ok?()
|
75
|
-
|
76
|
-
|
77
|
-
describe "Grouper::Rest::Client::Resource#response" do
|
78
|
-
context "before any WS calls have been made" do
|
79
|
-
it "should be nil" do
|
80
|
-
Grouper::Rest::Client::Resource.new('foo').response.should be_nil
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end # describe #response
|
84
|
-
|
85
|
-
|
86
|
-
describe "Grouper::Rest::Client::Resource#subjects()" do
|
87
|
-
|
88
|
-
before(:each) do
|
89
|
-
@grouper = Grouper::Rest::Client::Resource.new('foo')
|
90
|
-
end
|
91
|
-
|
92
|
-
context "with no arguments" do
|
93
|
-
it "should raise ArgumentError" do
|
94
|
-
lambda { @grouper.subjects }.should raise_error(ArgumentError)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "with one argument" do
|
99
|
-
context "that is invalid" do
|
100
|
-
it "should raise ArgumentError when nil" do
|
101
|
-
lambda { @grouper.subjects(nil) }.should raise_error(ArgumentError)
|
102
|
-
end
|
103
|
-
it "should raise ArgumentError when blank" do
|
104
|
-
lambda { @grouper.subjects('') }.should raise_error(ArgumentError)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
end # describe #subjects()
|
110
|
-
|