ecircle_soap_client 0.0.5

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.
@@ -0,0 +1,220 @@
1
+ require File.dirname(__FILE__)+'/helper'
2
+ require 'ostruct'
3
+
4
+ class TestEcircleSoapClientUser < Test::Unit::TestCase
5
+
6
+ def setup
7
+ config_soap_client
8
+
9
+ @example_user_string = Savon::SOAP::XML.new.xml do |x|
10
+ x.user(:id => "4130268167") do |u|
11
+ u.email("bill@microsoft.com")
12
+ u.title("-1")
13
+ u.firstname("Bill")
14
+ u.lastname("Gates")
15
+ u.nickname("")
16
+ u.dob_dd("")
17
+ u.dob_mm("")
18
+ u.dob_yyyy("")
19
+ u.countrycode("US")
20
+ u.languagecode("en")
21
+ 9.times do |idx|
22
+ u.instance_eval "cust_attr_#{idx+1}('')"
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ context "Ecircle::User" do
29
+
30
+ should "class method for getting group id from either group object or other value" do
31
+ [ ["1", 1], ["2", "2"], ["", ""], ["", nil] ].each do |expval, val|
32
+ assert_equal expval, Ecircle::User.group_id(val), "Failed for #{expval} / #{val}"
33
+ end
34
+
35
+ grp = Ecircle::Group.new
36
+ [ ["1", 1], ["2", "2"], ["", ""], ["", nil] ].each do |expval, val|
37
+ grp.id = val
38
+ assert_equal expval, Ecircle::User.group_id(grp), "Failed for #{expval} / #{val}"
39
+ end
40
+ end
41
+
42
+ should "return nil when user can't be found" do
43
+ mock_response(in_soap_body do
44
+ <<-SOAP
45
+ <LookupUserByEmailResponse xmlns="">
46
+ <ns1:lookupUserByEmailReturn xsi:nil="true" xmlns:ns1="http://webservices.ecircleag.com/rpcns"/>
47
+ </LookupUserByEmailResponse>
48
+ SOAP
49
+ end)
50
+ assert_equal(nil, Ecircle::User.find_by_email("bogus"))
51
+ end
52
+
53
+ should "be able to create via email" do
54
+ user, email, req_obj = Ecircle::User.new, "this@is.the.email.org", Object.new
55
+
56
+ user.email = email
57
+ user.title = "-1"
58
+
59
+ mock(req_obj).create_user(:userXmlSpec => user.to_xml) { "thisisid" }
60
+ mock(Ecircle).client { req_obj }
61
+
62
+ user = Ecircle::User.create_by_email(email)
63
+ assert_equal "thisisid", user.id
64
+ assert_equal email, user.email
65
+ end
66
+
67
+ should "return the group ids of a user" do
68
+ id1, id2 = "123", "456"
69
+ mock_response(in_soap_body do
70
+ <<-SOAP
71
+ <FindMembershipsByEmailResponse xmlns="">
72
+ <ns1:findMembershipsByEmailReturn xmlns:ns1="http://webservices.ecircleag.com/rpcns">#{id1}</ns1:findMembershipsByEmailReturn>
73
+ <ns2:findMembershipsByEmailReturn xmlns:ns2="http://webservices.ecircleag.com/rpcns">#{id2}</ns2:findMembershipsByEmailReturn>
74
+ </FindMembershipsByEmailResponse>
75
+ SOAP
76
+ end)
77
+ user = Ecircle::User.new
78
+ user.email = "bla@example.com"
79
+ assert_equal([id1, id2], user.group_ids)
80
+ end
81
+
82
+ should "return an array even if there is only one membership" do
83
+ id1 = "123"
84
+ mock_response(in_soap_body do
85
+ <<-SOAP
86
+ <FindMembershipsByEmailResponse xmlns="">
87
+ <ns1:findMembershipsByEmailReturn xmlns:ns1="http://webservices.ecircleag.com/rpcns">#{id1}</ns1:findMembershipsByEmailReturn>
88
+ </FindMembershipsByEmailResponse>
89
+ SOAP
90
+ end)
91
+ user = Ecircle::User.new
92
+ user.email = "bla@example.com"
93
+ assert_equal([id1], user.group_ids)
94
+ end
95
+
96
+ should "return an empty array if there is no membership" do
97
+ mock_response(in_soap_body do
98
+ <<-SOAP
99
+ <FindMembershipsByEmailResponse xmlns="">
100
+ <ns1:findMembershipsByEmailReturn xsi:nil="true" xmlns:ns1="http://webservices.ecircleag.com/rpcns"/>
101
+ </FindMembershipsByEmailResponse>
102
+ SOAP
103
+ end)
104
+ user = Ecircle::User.new
105
+ user.email = "bla@example.com"
106
+ assert_equal([], user.group_ids)
107
+ end
108
+
109
+ should "return all groups with groups" do
110
+ user = Ecircle::User.new
111
+ mock(user).group_ids { [1] }
112
+ mock(Ecircle::Group).find_by_id(1) { "imagroup" }
113
+ assert_equal(["imagroup"], user.groups)
114
+ end
115
+
116
+ should "return all groups with memberships" do
117
+ user = Ecircle::User.new
118
+ mock(user).group_ids { [1,2] }
119
+ mock(Ecircle::Group).find_by_id(1) { "imagroup" }
120
+ mock(Ecircle::Group).find_by_id(2) { "fubar" }
121
+ assert_equal(["imagroup", "fubar"], user.memberships)
122
+ end
123
+
124
+ should "return the inclusion into a group by id or group" do
125
+ user = Ecircle::User.new
126
+ mock(user).group_ids.any_number_of_times { ["1", "42", "64"] }
127
+ assert user.in_group?("42")
128
+ assert !user.in_group?("43")
129
+ grp = Ecircle::Group.new
130
+ grp.id = "1"
131
+ assert user.in_group?(grp)
132
+ grp.id = "0"
133
+ assert !user.in_group?(grp)
134
+ end
135
+
136
+ should "be able to unsubscribe from a group by using the group id" do
137
+ user, email, req_obj = Ecircle::User.new, "this@is.the.email.org", Object.new
138
+
139
+ user.email = email
140
+ group_id = 123456
141
+
142
+ mock(req_obj).unsubscribe_member_by_email(
143
+ :groupId => "123456",
144
+ :email => email,
145
+ :sendMessage => false
146
+ ) { true }
147
+ mock(Ecircle).client { req_obj }
148
+
149
+ assert user.leave_group(group_id)
150
+ end
151
+
152
+ should "be able to unsubscribe from a group by using a group object" do
153
+ user, email, req_obj = Ecircle::User.new, "this@is.the.email.org", Object.new
154
+
155
+ user.email = email
156
+
157
+ group = Ecircle::Group.new
158
+ group.id = "123456"
159
+
160
+ mock(req_obj).unsubscribe_member_by_email(
161
+ :groupId => "123456",
162
+ :email => email,
163
+ :sendMessage => false
164
+ ) { true }
165
+ mock(Ecircle).client { req_obj }
166
+
167
+ assert user.leave_group(group)
168
+ end
169
+
170
+ should "support namedattr's for defining custom values" do
171
+ attrs = {
172
+ "fubar" => "value",
173
+ "attr2" => "bill's",
174
+ "attr3" => "miracle",
175
+ "attr4" => "adventure",
176
+ "attr5" => "inwonderland",
177
+ }
178
+
179
+ complex_user_string = Savon::SOAP::XML.new.xml do |x|
180
+ x.user(:id => "4130268167") do |u|
181
+ attrs.each do |key,value|
182
+ x.namedattr({:name => key}, value)
183
+ end
184
+ end
185
+ end
186
+
187
+ user = Ecircle::User.new(complex_user_string)
188
+ attrs.each do |key,value|
189
+ assert_equal value, user.named_attrs[key], "FAILED for #{key}"
190
+ end
191
+ end
192
+
193
+ should "be able to generate xml from user" do
194
+ user = Ecircle::User.new(@example_user_string)
195
+ assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?><user id=\"4130268167\">"+
196
+ "<email>bill@microsoft.com</email><title>-1</title><firstname>Bill<"+
197
+ "/firstname><lastname>Gates</lastname><nickname></nickname><dob_dd>"+
198
+ "</dob_dd><dob_mm></dob_mm><dob_yyyy></dob_yyyy><countrycode>US</co"+
199
+ "untrycode><languagecode>en</languagecode><cust_attr_1></cust_attr_"+
200
+ "1><cust_attr_2></cust_attr_2><cust_attr_3></cust_attr_3><cust_attr"+
201
+ "_4></cust_attr_4><cust_attr_5></cust_attr_5><cust_attr_6></cust_at"+
202
+ "tr_6><cust_attr_7></cust_attr_7><cust_attr_8></cust_attr_8><cust_a"+
203
+ "ttr_9></cust_attr_9></user>", user.to_xml)
204
+ end
205
+
206
+ should "be instantiable from xml string" do
207
+ user = Ecircle::User.new(@example_user_string)
208
+
209
+ assert_equal "4130268167", user.id
210
+ assert_equal "bill@microsoft.com", user.email
211
+ assert_equal "bill@microsoft.com", user[:email]
212
+ assert_equal "bill@microsoft.com", user["email"]
213
+ assert_equal "US", user[:countrycode]
214
+ assert_equal "en", user[:languagecode]
215
+ 9.times do |idx|
216
+ assert_equal "", user["cust_attr_#{idx+1}"], "Failed for cust_attr_#{idx+1}"
217
+ end
218
+ end
219
+ end
220
+ end
metadata ADDED
@@ -0,0 +1,288 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ecircle_soap_client
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 5
10
+ version: 0.0.5
11
+ platform: ruby
12
+ authors:
13
+ - Gerrit Riessen
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-01 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - "="
25
+ - !ruby/object:Gem::Version
26
+ hash: 49
27
+ segments:
28
+ - 0
29
+ - 8
30
+ - 7
31
+ version: 0.8.7
32
+ name: rake
33
+ prerelease: false
34
+ type: :runtime
35
+ requirement: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ name: savon
47
+ prerelease: false
48
+ type: :runtime
49
+ requirement: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ name: nokogiri
61
+ prerelease: false
62
+ type: :runtime
63
+ requirement: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ version_requirements: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ name: multipart-post
75
+ prerelease: false
76
+ type: :runtime
77
+ requirement: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ version_requirements: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ name: uuidtools
89
+ prerelease: false
90
+ type: :runtime
91
+ requirement: *id005
92
+ - !ruby/object:Gem::Dependency
93
+ version_requirements: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ name: pry
103
+ prerelease: false
104
+ type: :development
105
+ requirement: *id006
106
+ - !ruby/object:Gem::Dependency
107
+ version_requirements: &id007 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ name: pry-doc
117
+ prerelease: false
118
+ type: :development
119
+ requirement: *id007
120
+ - !ruby/object:Gem::Dependency
121
+ version_requirements: &id008 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 3
127
+ segments:
128
+ - 0
129
+ version: "0"
130
+ name: gist
131
+ prerelease: false
132
+ type: :development
133
+ requirement: *id008
134
+ - !ruby/object:Gem::Dependency
135
+ version_requirements: &id009 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ name: thoughtbot-shoulda
145
+ prerelease: false
146
+ type: :development
147
+ requirement: *id009
148
+ - !ruby/object:Gem::Dependency
149
+ version_requirements: &id010 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ hash: 23
155
+ segments:
156
+ - 1
157
+ - 0
158
+ - 0
159
+ version: 1.0.0
160
+ name: bundler
161
+ prerelease: false
162
+ type: :development
163
+ requirement: *id010
164
+ - !ruby/object:Gem::Dependency
165
+ version_requirements: &id011 !ruby/object:Gem::Requirement
166
+ none: false
167
+ requirements:
168
+ - - ~>
169
+ - !ruby/object:Gem::Version
170
+ hash: 7
171
+ segments:
172
+ - 1
173
+ - 6
174
+ - 4
175
+ version: 1.6.4
176
+ name: jeweler
177
+ prerelease: false
178
+ type: :development
179
+ requirement: *id011
180
+ - !ruby/object:Gem::Dependency
181
+ version_requirements: &id012 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ hash: 3
187
+ segments:
188
+ - 0
189
+ version: "0"
190
+ name: rcov
191
+ prerelease: false
192
+ type: :development
193
+ requirement: *id012
194
+ - !ruby/object:Gem::Dependency
195
+ version_requirements: &id013 !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ hash: 3
201
+ segments:
202
+ - 0
203
+ version: "0"
204
+ name: rr
205
+ prerelease: false
206
+ type: :development
207
+ requirement: *id013
208
+ - !ruby/object:Gem::Dependency
209
+ version_requirements: &id014 !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ hash: 3
215
+ segments:
216
+ - 0
217
+ version: "0"
218
+ name: cheat
219
+ prerelease: false
220
+ type: :development
221
+ requirement: *id014
222
+ description: See summary.
223
+ email: gerrit.riessen@gmail.com
224
+ executables: []
225
+
226
+ extensions: []
227
+
228
+ extra_rdoc_files:
229
+ - README.md
230
+ files:
231
+ - .document
232
+ - .rvmrc
233
+ - Gemfile
234
+ - README.md
235
+ - Rakefile
236
+ - VERSION
237
+ - ecircle_soap_client.gemspec
238
+ - lib/ecircle/base.rb
239
+ - lib/ecircle/client.rb
240
+ - lib/ecircle/configuration.rb
241
+ - lib/ecircle/group.rb
242
+ - lib/ecircle/member.rb
243
+ - lib/ecircle/message.rb
244
+ - lib/ecircle/user.rb
245
+ - lib/ecircle_soap_client.rb
246
+ - start_pry_with_ecircle
247
+ - test/.login.yml.sample
248
+ - test/helper.rb
249
+ - test/test_ecircle_soap_client.rb
250
+ - test/test_ecircle_soap_client_group.rb
251
+ - test/test_ecircle_soap_client_member.rb
252
+ - test/test_ecircle_soap_client_message.rb
253
+ - test/test_ecircle_soap_client_user.rb
254
+ homepage: http://google.com/search?q=ecircle
255
+ licenses:
256
+ - MIT
257
+ post_install_message:
258
+ rdoc_options: []
259
+
260
+ require_paths:
261
+ - lib
262
+ required_ruby_version: !ruby/object:Gem::Requirement
263
+ none: false
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ hash: 3
268
+ segments:
269
+ - 0
270
+ version: "0"
271
+ required_rubygems_version: !ruby/object:Gem::Requirement
272
+ none: false
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ hash: 3
277
+ segments:
278
+ - 0
279
+ version: "0"
280
+ requirements: []
281
+
282
+ rubyforge_project:
283
+ rubygems_version: 1.8.10
284
+ signing_key:
285
+ specification_version: 3
286
+ summary: Ecircle SOAP client for synchron API
287
+ test_files: []
288
+