simple_crowd 1.0.5 → 1.1.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.
- data/.document +5 -0
- data/Gemfile +7 -0
- data/Rakefile +1 -1
- data/lib/simple_crowd/cache/null_store.rb +86 -0
- data/lib/simple_crowd/client.rb +334 -298
- data/lib/simple_crowd/crowd_entity.rb +199 -199
- data/lib/simple_crowd/crowd_error.rb +24 -15
- data/lib/simple_crowd/group.rb +11 -11
- data/lib/simple_crowd/mappers/soap_attributes.rb +13 -13
- data/lib/simple_crowd/mock_client.rb +3 -2
- data/lib/simple_crowd/user.rb +17 -17
- data/lib/simple_crowd/version.rb +1 -1
- data/lib/simple_crowd.rb +53 -51
- data/simple_crowd.gemspec +19 -50
- data/test/crowd_config.yml.example +6 -6
- data/test/factories.rb +11 -9
- data/test/helper.rb +32 -28
- data/test/test_client.rb +329 -331
- data/test/test_simple_crowd.rb +22 -22
- data/test/test_user.rb +69 -69
- metadata +75 -158
data/test/test_simple_crowd.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class TestSimpleCrowd < Test::Unit::TestCase
|
4
|
-
context "with default keys" do
|
5
|
-
setup do
|
6
|
-
@default_keys = [:service_url, :service_ns, :service_namespaces, :app_name, :app_password]
|
7
|
-
end
|
8
|
-
should "return options" do
|
9
|
-
options = SimpleCrowd.options
|
10
|
-
options.should_not be nil
|
11
|
-
options.empty?.should be false
|
12
|
-
@default_keys.each {|v| options[v].should_not be nil}
|
13
|
-
end
|
14
|
-
|
15
|
-
should "only have default options" do
|
16
|
-
options = SimpleCrowd.options
|
17
|
-
options.should_not be nil
|
18
|
-
(options.keys - @default_keys).length.should == 0
|
19
|
-
(@default_keys - options.keys).length.should == 0
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSimpleCrowd < Test::Unit::TestCase
|
4
|
+
context "with default keys" do
|
5
|
+
setup do
|
6
|
+
@default_keys = [:service_url, :service_ns, :service_namespaces, :app_name, :app_password, :cache_prefix]
|
7
|
+
end
|
8
|
+
should "return options" do
|
9
|
+
options = SimpleCrowd.options
|
10
|
+
options.should_not be nil
|
11
|
+
options.empty?.should be false
|
12
|
+
@default_keys.each {|v| options[v].should_not be nil}
|
13
|
+
end
|
14
|
+
|
15
|
+
should "only have default options" do
|
16
|
+
options = SimpleCrowd.options
|
17
|
+
options.should_not be nil
|
18
|
+
(options.keys - @default_keys).length.should == 0
|
19
|
+
(@default_keys - options.keys).length.should == 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/test_user.rb
CHANGED
@@ -1,69 +1,69 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class TestUser < Test::Unit::TestCase
|
4
|
-
context 'A User' do
|
5
|
-
setup do
|
6
|
-
@user =
|
7
|
-
end
|
8
|
-
should "track dirty properties" do
|
9
|
-
@user.dirty_properties.should_not be nil
|
10
|
-
@user.dirty_properties.empty?.should be true
|
11
|
-
@user.dirty?.should be false
|
12
|
-
oldname = @user.first_name
|
13
|
-
@user.first_name = "Changed"
|
14
|
-
@user.email = @user.email
|
15
|
-
@user.dirty_properties.length.should == 1
|
16
|
-
@user.dirty_properties.include?(:first_name).should be true
|
17
|
-
@user.dirty?.should be true
|
18
|
-
@user.dirty?(:first_name).should be true
|
19
|
-
@user.dirty?(:last_name).should be false
|
20
|
-
@user.dirty?(:email).should be false
|
21
|
-
end
|
22
|
-
|
23
|
-
should "test attributes" do
|
24
|
-
@user.first_name = "Blah"
|
25
|
-
@user.givenName.should == "Blah"
|
26
|
-
end
|
27
|
-
|
28
|
-
should "update with" do
|
29
|
-
@user.dirty?.should be false
|
30
|
-
@user.update_with(@user.merge({:first_name => @user.first_name, :last_name => "Updated"}))
|
31
|
-
@user.dirty?.should be true
|
32
|
-
@user.dirty_properties.length.should == 1
|
33
|
-
@user.dirty?(:last_name).should be true
|
34
|
-
@user.dirty?(:first_name).should be false
|
35
|
-
end
|
36
|
-
|
37
|
-
should "map to soap" do
|
38
|
-
soap_user = @user.map_to :soap
|
39
|
-
soap_user.should_not be nil
|
40
|
-
soap_user[:attributes].key?('int:SOAPAttribute').should be true
|
41
|
-
soap_user[:attributes]['int:SOAPAttribute'].length.should == @user.attributes.length
|
42
|
-
soap_user[:name].should == @user.username
|
43
|
-
soap_user[:attributes]['int:SOAPAttribute'].select{|a|a['int:name'] == :mail}[0]['int:values']['wsdl:string'].should == @user.email
|
44
|
-
end
|
45
|
-
should "parse from soap" do
|
46
|
-
soap_user = {:name => "testparse", :active => true, :attributes => {:soap_attribute => [
|
47
|
-
{:name => "givenName", :values => {:string => "parsefirstname"}},
|
48
|
-
{:name => "sn", :values => {:string => "parselastname"}},
|
49
|
-
{:name => "displayName", :values => {:string => "parsedisplayname"}},
|
50
|
-
{:name => "customAttr", :values => {:string => ["custom1", "custom2"]}}
|
51
|
-
]}}
|
52
|
-
obj_user = SimpleCrowd::User.parse_from :soap, soap_user
|
53
|
-
obj_user.should_not be_nil
|
54
|
-
obj_user.active.should == true
|
55
|
-
obj_user.first_name.should == "parsefirstname"
|
56
|
-
obj_user.last_name.should == "parselastname"
|
57
|
-
obj_user.display_name.should == "parsedisplayname"
|
58
|
-
obj_user.customAttr.should == ["custom1", "custom2"]
|
59
|
-
(obj_user.attributes_keys - [:first_name, :last_name, :display_name, :customAttr, :email]).empty?.should be true
|
60
|
-
end
|
61
|
-
|
62
|
-
should "mark new props as atttributes" do
|
63
|
-
curr_attributes = @user.attributes_keys
|
64
|
-
@user[:new_prop] = "new value"
|
65
|
-
(@user.attributes_keys - curr_attributes).should == [:new_prop]
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestUser < Test::Unit::TestCase
|
4
|
+
context 'A User' do
|
5
|
+
setup do
|
6
|
+
@user = FactoryGirl.build(:user)
|
7
|
+
end
|
8
|
+
should "track dirty properties" do
|
9
|
+
@user.dirty_properties.should_not be nil
|
10
|
+
@user.dirty_properties.empty?.should be true
|
11
|
+
@user.dirty?.should be false
|
12
|
+
oldname = @user.first_name
|
13
|
+
@user.first_name = "Changed"
|
14
|
+
@user.email = @user.email
|
15
|
+
@user.dirty_properties.length.should == 1
|
16
|
+
@user.dirty_properties.include?(:first_name).should be true
|
17
|
+
@user.dirty?.should be true
|
18
|
+
@user.dirty?(:first_name).should be true
|
19
|
+
@user.dirty?(:last_name).should be false
|
20
|
+
@user.dirty?(:email).should be false
|
21
|
+
end
|
22
|
+
|
23
|
+
should "test attributes" do
|
24
|
+
@user.first_name = "Blah"
|
25
|
+
@user.givenName.should == "Blah"
|
26
|
+
end
|
27
|
+
|
28
|
+
should "update with" do
|
29
|
+
@user.dirty?.should be false
|
30
|
+
@user.update_with(@user.merge({:first_name => @user.first_name, :last_name => "Updated"}))
|
31
|
+
@user.dirty?.should be true
|
32
|
+
@user.dirty_properties.length.should == 1
|
33
|
+
@user.dirty?(:last_name).should be true
|
34
|
+
@user.dirty?(:first_name).should be false
|
35
|
+
end
|
36
|
+
|
37
|
+
should "map to soap" do
|
38
|
+
soap_user = @user.map_to :soap
|
39
|
+
soap_user.should_not be nil
|
40
|
+
soap_user[:attributes].key?('int:SOAPAttribute').should be true
|
41
|
+
soap_user[:attributes]['int:SOAPAttribute'].length.should == @user.attributes.length
|
42
|
+
soap_user[:name].should == @user.username
|
43
|
+
soap_user[:attributes]['int:SOAPAttribute'].select{|a|a['int:name'] == :mail}[0]['int:values']['wsdl:string'].should == @user.email
|
44
|
+
end
|
45
|
+
should "parse from soap" do
|
46
|
+
soap_user = {:name => "testparse", :active => true, :attributes => {:soap_attribute => [
|
47
|
+
{:name => "givenName", :values => {:string => "parsefirstname"}},
|
48
|
+
{:name => "sn", :values => {:string => "parselastname"}},
|
49
|
+
{:name => "displayName", :values => {:string => "parsedisplayname"}},
|
50
|
+
{:name => "customAttr", :values => {:string => ["custom1", "custom2"]}}
|
51
|
+
]}}
|
52
|
+
obj_user = SimpleCrowd::User.parse_from :soap, soap_user
|
53
|
+
obj_user.should_not be_nil
|
54
|
+
obj_user.active.should == true
|
55
|
+
obj_user.first_name.should == "parsefirstname"
|
56
|
+
obj_user.last_name.should == "parselastname"
|
57
|
+
obj_user.display_name.should == "parsedisplayname"
|
58
|
+
obj_user.customAttr.should == ["custom1", "custom2"]
|
59
|
+
(obj_user.attributes_keys - [:first_name, :last_name, :display_name, :customAttr, :email]).empty?.should be true
|
60
|
+
end
|
61
|
+
|
62
|
+
should "mark new props as atttributes" do
|
63
|
+
curr_attributes = @user.attributes_keys
|
64
|
+
@user[:new_prop] = "new value"
|
65
|
+
(@user.attributes_keys - curr_attributes).should == [:new_prop]
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
metadata
CHANGED
@@ -1,168 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_crowd
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 5
|
10
|
-
version: 1.0.5
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Paul Strong
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2012-04-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: savon
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
22
17
|
none: false
|
23
|
-
requirements:
|
24
|
-
- -
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
|
27
|
-
|
28
|
-
- 0
|
29
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.9.9
|
22
|
+
type: :runtime
|
30
23
|
prerelease: false
|
31
|
-
|
32
|
-
name: shoulda
|
33
|
-
requirement: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
25
|
none: false
|
37
|
-
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
prerelease: false
|
45
|
-
type: :development
|
46
|
-
name: fcoury-matchy
|
47
|
-
requirement: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.9
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: hashie
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
50
33
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
|
56
|
-
- 0
|
57
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.0.0
|
38
|
+
type: :runtime
|
58
39
|
prerelease: false
|
59
|
-
|
60
|
-
name: factory_girl
|
61
|
-
requirement: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
41
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
prerelease: false
|
73
|
-
type: :development
|
74
|
-
name: forgery
|
75
|
-
requirement: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
78
49
|
none: false
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
83
|
-
segments:
|
84
|
-
- 0
|
85
|
-
version: "0"
|
86
|
-
prerelease: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.21
|
87
54
|
type: :development
|
88
|
-
name: webmock
|
89
|
-
requirement: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
hash: 3
|
97
|
-
segments:
|
98
|
-
- 0
|
99
|
-
version: "0"
|
100
55
|
prerelease: false
|
101
|
-
|
102
|
-
name: rr
|
103
|
-
requirement: *id006
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
57
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
|
111
|
-
|
112
|
-
- 0
|
113
|
-
version: "0"
|
114
|
-
prerelease: false
|
115
|
-
type: :development
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.21
|
62
|
+
- !ruby/object:Gem::Dependency
|
116
63
|
name: rake
|
117
|
-
requirement:
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
120
65
|
none: false
|
121
|
-
requirements:
|
122
|
-
- -
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
|
125
|
-
|
126
|
-
- 0
|
127
|
-
- 7
|
128
|
-
- 9
|
129
|
-
version: 0.7.9
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
130
71
|
prerelease: false
|
131
|
-
|
132
|
-
name: savon
|
133
|
-
requirement: *id008
|
134
|
-
- !ruby/object:Gem::Dependency
|
135
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
73
|
none: false
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
- 0
|
144
|
-
- 0
|
145
|
-
version: 1.0.0
|
146
|
-
prerelease: false
|
147
|
-
type: :runtime
|
148
|
-
name: hashie
|
149
|
-
requirement: *id009
|
150
|
-
description: |-
|
151
|
-
Simple Atlassian Crowd client using REST and SOAP APIs where needed.
|
152
|
-
Doesn't do any fancy object mapping, etc.
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: Simple Atlassian Crowd client using REST and SOAP APIs where needed. Doesn't
|
79
|
+
do any fancy object mapping, etc.
|
153
80
|
email: paul@thestrongfamily.org
|
154
81
|
executables: []
|
155
|
-
|
156
82
|
extensions: []
|
157
|
-
|
158
83
|
extra_rdoc_files: []
|
159
|
-
|
160
|
-
|
84
|
+
files:
|
85
|
+
- .document
|
161
86
|
- .gitignore
|
162
87
|
- Gemfile
|
163
88
|
- README.md
|
164
89
|
- Rakefile
|
165
90
|
- lib/simple_crowd.rb
|
91
|
+
- lib/simple_crowd/cache/null_store.rb
|
166
92
|
- lib/simple_crowd/client.rb
|
167
93
|
- lib/simple_crowd/crowd_entity.rb
|
168
94
|
- lib/simple_crowd/crowd_error.rb
|
@@ -180,38 +106,29 @@ files:
|
|
180
106
|
- test/test_user.rb
|
181
107
|
homepage: http://github.com/thinkwell/simple_crowd
|
182
108
|
licenses: []
|
183
|
-
|
184
109
|
post_install_message:
|
185
110
|
rdoc_options: []
|
186
|
-
|
187
|
-
require_paths:
|
111
|
+
require_paths:
|
188
112
|
- lib
|
189
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
114
|
none: false
|
191
|
-
requirements:
|
192
|
-
- -
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
|
195
|
-
|
196
|
-
- 0
|
197
|
-
version: "0"
|
198
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
120
|
none: false
|
200
|
-
requirements:
|
201
|
-
- -
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
|
204
|
-
segments:
|
205
|
-
- 0
|
206
|
-
version: "0"
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
207
125
|
requirements: []
|
208
|
-
|
209
|
-
|
210
|
-
rubygems_version: 1.8.24
|
126
|
+
rubyforge_project: simple_crowd
|
127
|
+
rubygems_version: 1.8.21
|
211
128
|
signing_key:
|
212
129
|
specification_version: 3
|
213
130
|
summary: Simple Atlassian Crowd client using REST and SOAP APIs where needed.
|
214
|
-
test_files:
|
131
|
+
test_files:
|
215
132
|
- test/crowd_config.yml.example
|
216
133
|
- test/factories.rb
|
217
134
|
- test/helper.rb
|