ecircle_soap_client 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rvmrc +1 -0
- data/Gemfile +20 -0
- data/README.md +89 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/ecircle_soap_client.gemspec +100 -0
- data/lib/ecircle/base.rb +40 -0
- data/lib/ecircle/client.rb +145 -0
- data/lib/ecircle/configuration.rb +14 -0
- data/lib/ecircle/group.rb +73 -0
- data/lib/ecircle/member.rb +31 -0
- data/lib/ecircle/message.rb +93 -0
- data/lib/ecircle/user.rb +120 -0
- data/lib/ecircle_soap_client.rb +48 -0
- data/start_pry_with_ecircle +31 -0
- data/test/.login.yml.sample +4 -0
- data/test/helper.rb +116 -0
- data/test/test_ecircle_soap_client.rb +317 -0
- data/test/test_ecircle_soap_client_group.rb +61 -0
- data/test/test_ecircle_soap_client_member.rb +48 -0
- data/test/test_ecircle_soap_client_message.rb +174 -0
- data/test/test_ecircle_soap_client_user.rb +220 -0
- metadata +288 -0
@@ -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
|
+
|