tsig_api 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,90 @@
1
+ require File.join(File.dirname(__FILE__), '/test_helper')
2
+
3
+ class TsigApiGroupTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ response_xml = <<-EOS
7
+ <?xml version='1.0'?>
8
+ <txtsig_response version="1.0">
9
+ <content type="response">
10
+ <item type="groups">
11
+ <element name='success'>
12
+ true
13
+ </element>
14
+ <element name='group_a'>
15
+ Group A
16
+ </element>
17
+ <element name='group_b'>
18
+ Foo
19
+ </element>
20
+ <element name='group_c'>
21
+ Group C
22
+ </element>
23
+ <element name='group_d'>
24
+ Group D
25
+ </element>
26
+ <element name='group_e'>
27
+ Group E
28
+ </element>
29
+ </item>
30
+ </content>
31
+ </txtsig_response>
32
+ EOS
33
+
34
+ error_xml = <<-EOS
35
+ <?xml version='1.0'?>
36
+ <txtsig_response version="1.0">
37
+ <content type="error">
38
+ <item type="error_description">
39
+ <element name="error_code">10</element>
40
+ <element name="error_text"><![CDATA[General Fault]]></element>
41
+ </item>
42
+ </content>
43
+ </txtsig_response>
44
+ EOS
45
+
46
+ net_response = stub("net_response")
47
+ net_response.body{response_xml}
48
+ net_error = stub("net_error")
49
+ net_error.body{error_xml}
50
+
51
+ @valid_response = TsigApi::RemoteActions::Response.new(true, net_response)
52
+ stub(@valid_response).body{response_xml}
53
+ @error_response = TsigApi::RemoteActions::Response.new(true, net_error)
54
+ stub(@error_response).body{error_xml}
55
+
56
+ TsigApi::Base.establish_connection(1234, 'joe', '123456789012345678901234567890ab')
57
+ end
58
+
59
+ def test_should_initialize_carrier
60
+ g = TsigApi::Group.new
61
+ assert_equal TsigApi::Group, g.class
62
+ assert_equal :groups, g.class.remote_type
63
+ end
64
+
65
+ def test_should_build_query_xml
66
+ g = TsigApi::Group.new
67
+ request = g.query
68
+ assert request.body.include?('<action type="list_groups">')
69
+ assert request.body.include?('<client_id><![CDATA[1234]]></client_id>')
70
+ assert request.body.include?('<api_username><![CDATA[joe]]></api_username>')
71
+ assert request.body.include?('<api_password><![CDATA[123456789012345678901234567890ab]]></api_password>')
72
+ end
73
+
74
+ def test_should_send_request_and_parse_response
75
+ g = TsigApi::Group.new
76
+ request = g.query
77
+ stub(request).send_request{@valid_response}
78
+ content_type, response_hash = g.parse_response(request.send_request)
79
+ assert_equal content_type, "response"
80
+ assert_equal response_hash["group_a"], "Group A"
81
+ assert_equal response_hash["group_b"], "Foo"
82
+
83
+ # now we fake an error response
84
+ stub(request).send_request{@error_response}
85
+ content_type, response_hash = g.parse_response(request.send_request)
86
+ assert_equal content_type, "error"
87
+ assert_equal response_hash["error_code"], "10"
88
+ end
89
+
90
+ end
@@ -0,0 +1,167 @@
1
+ require File.join(File.dirname(__FILE__), '/test_helper')
2
+
3
+ class TsigApiMessageTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+
7
+ @tsig_message = TsigApi::Message.new("Group A")
8
+
9
+ create_response_xml = <<-EOS
10
+ <?xml version='1.0'?>
11
+ <txtsig_response version="1.0">
12
+ <content type="response">
13
+ <item type="message">
14
+ <element name='success'>1</element>
15
+ <element name='message_id'>15</element>
16
+ </item>
17
+ </content>
18
+ </txtsig_response>
19
+ EOS
20
+
21
+ query_response_xml = <<-EOS
22
+ <?xml version='1.0'?>
23
+ <txtsig_response version="1.0">
24
+ <content type="response">
25
+ <item type="message">
26
+ <element name='success'>1</element>
27
+ <element name='group'>a</element>
28
+ <element name='status'>PENDING</element>
29
+ <element name='date_sent'>2007-08-19 18:50:00</element>
30
+ <element name='broadcast_type'>team</element>
31
+ <element name='message'><![CDATA[sending messages is awesome]]></element>
32
+ </item>
33
+ </content>
34
+ </txtsig_response>
35
+ EOS
36
+
37
+ update_response_xml = <<-EOS
38
+ <?xml version='1.0'?>
39
+ <txtsig_response version="1.0">
40
+ <content type="response">
41
+ <item type="message">
42
+ <element name='success'>1</element>
43
+ <element name='message_id'>15</element>
44
+ </item>
45
+ </content>
46
+ </txtsig_response>
47
+ EOS
48
+
49
+ delete_response_xml = <<-EOS
50
+ <?xml version='1.0'?>
51
+ <txtsig_response version="1.0">
52
+ <content type="response">
53
+ <item type="message">
54
+ <element name='success'>1</element>
55
+ <element name='message_id'>15</element>
56
+ </item>
57
+ </content>
58
+ </txtsig_response>
59
+ EOS
60
+
61
+ error_xml = <<-EOS
62
+ <?xml version='1.0'?>
63
+ <txtsig_response version="1.0">
64
+ <content type="error">
65
+ <item type="error_description">
66
+ <element name="error_code">10</element>
67
+ <element name="error_text"><![CDATA[General Fault]]></element>
68
+ </item>
69
+ </content>
70
+ </txtsig_response>
71
+ EOS
72
+
73
+ create_response = stub("create_response")
74
+ create_response.body{create_response_xml}
75
+ query_response = stub("query_response")
76
+ query_response.body{query_response_xml}
77
+ update_response = stub("update_response")
78
+ update_response.body{update_response_xml}
79
+ delete_response = stub("delete_response")
80
+ delete_response.body{delete_response_xml}
81
+ net_error = stub("net_error")
82
+ net_error.body{error_xml}
83
+
84
+ @valid_create_response = TsigApi::RemoteActions::Response.new(true, create_response)
85
+ stub(@valid_create_response).body{create_response_xml}
86
+ @valid_query_response = TsigApi::RemoteActions::Response.new(true, query_response)
87
+ stub(@valid_query_response).body{query_response_xml}
88
+ @valid_update_response = TsigApi::RemoteActions::Response.new(true, update_response)
89
+ stub(@valid_update_response).body{update_response_xml}
90
+ @valid_delete_response = TsigApi::RemoteActions::Response.new(true, delete_response)
91
+ stub(@valid_delete_response).body{delete_response_xml}
92
+ @error_response = TsigApi::RemoteActions::Response.new(true, net_error)
93
+ stub(@error_response).body{error_xml}
94
+
95
+ @valid_message = {:broadcast_type => "team", :date_sent => Time.now + 3600, :send_now => false, :message => "sending messages is awesome"}
96
+ end
97
+
98
+ def test_should_initialize_message
99
+ assert_equal @tsig_message.class, TsigApi::Message
100
+ assert_equal @tsig_message.class.remote_type, :message
101
+ end
102
+
103
+ def test_should_build_create_xml
104
+ message_hash = @valid_message.merge({:has_contacts => [15], :has_teams => ["Team A"]})
105
+ request = @tsig_message.create(message_hash)
106
+ doc = REXML::Document.new(request.body)
107
+ assert_equal "Team A", REXML::XPath.first(doc, "//param[@name='has_teams']/team").get_text.to_s
108
+ end
109
+
110
+ def test_should_send_create_request_and_parse_response
111
+ message_hash = @valid_message.merge({:has_contacts => [15], :has_teams => ["Team A"]})
112
+ request = @tsig_message.create(message_hash)
113
+ stub(request).send_request{@valid_create_response}
114
+ content_type, response_hash = @tsig_message.parse_response(request.send_request)
115
+ assert_equal content_type, "response"
116
+ assert_equal response_hash["success"], "1"
117
+ assert_equal response_hash["message_id"], "15"
118
+ # now we fake an error response
119
+ stub(request).send_request{@error_response}
120
+ content_type, response_hash = @tsig_message.parse_response(request.send_request)
121
+ assert_equal content_type, "error"
122
+ assert_equal response_hash["error_code"], "10"
123
+ end
124
+
125
+ def test_should_send_query_and_parse_response
126
+ request = @tsig_message.query(:message_id => 15)
127
+ stub(request).send_request{@valid_query_response}
128
+ content_type, response_hash = @tsig_message.parse_response(request.send_request)
129
+ assert_equal "response", content_type
130
+ assert_equal response_hash["success"], "1"
131
+ assert_equal response_hash["group"], "a"
132
+ assert_equal "sending messages is awesome", response_hash["message"]
133
+ end
134
+
135
+ def test_should_send_delete_and_parse_response
136
+ request = @tsig_message.delete(15)
137
+ stub(request).send_request{@valid_delete_response}
138
+ content_type, response_hash = @tsig_message.parse_response(request.send_request)
139
+ assert_equal "response", content_type
140
+ assert_equal response_hash["success"], "1"
141
+ end
142
+
143
+ def test_should_send_update_request_and_parse_response
144
+ request = @tsig_message.update(15, :send_now => true)
145
+ stub(request).send_request{@valid_update_response}
146
+ content_type, response_hash = @tsig_message.parse_response(request.send_request)
147
+ assert_equal content_type, "response"
148
+ assert_equal response_hash["success"], "1"
149
+ assert_equal response_hash["message_id"], "15"
150
+ end
151
+
152
+ test 'create should return expected params' do
153
+ request = @tsig_message.create(
154
+ :broadcast_type => "team",
155
+ :send_at => '2020-01-02 03:04 PM',
156
+ :send_now => '0',
157
+ :message => 'This is a message',
158
+ :has_teams => [1]
159
+ )
160
+ assert_match %r(<param name='group'><!\[CDATA\[Group A\]\]></param>)im, request.body
161
+ assert_match %r(<param name='broadcast_type'>team</param>)im, request.body
162
+ assert_match %r(<param name='send_at'>2020-01-02 03:04 PM</param>)im, request.body
163
+ assert_match %r(<param name='send_now'>false</param>)im, request.body
164
+ assert_match %r(<param name='message'><!\[CDATA\[This is a message\]\]></param>)im, request.body
165
+ end
166
+
167
+ end
@@ -0,0 +1,182 @@
1
+ require File.join(File.dirname(__FILE__), '/test_helper')
2
+
3
+ class TsigApiTeamTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+
7
+ list_response_xml = <<-EOS
8
+ <?xml version='1.0'?>
9
+ <txtsig_response version="1.0">
10
+ <content type="response">
11
+ <item type="team">
12
+ <element name='success'>
13
+ true
14
+ </element>
15
+ <element name='team_1'>
16
+ Team One
17
+ </element>
18
+ <element name='team_2'>
19
+ Team Two
20
+ </element>
21
+ <element name='team_3'>
22
+ Team Three
23
+ </element>
24
+ </item>
25
+ </content>
26
+ </txtsig_response>
27
+ EOS
28
+
29
+ create_response_xml = <<-EOS
30
+ <?xml version='1.0'?>
31
+ <txtsig_response version="1.0">
32
+ <content type="response">
33
+ <item type="team">
34
+ <element name="success">1</element>
35
+ <element name="team_id">15</element>
36
+ </item>
37
+ </content>
38
+ </txtsig_response>
39
+ EOS
40
+
41
+ query_response_xml = <<-EOS
42
+ <?xml version='1.0'?>
43
+ <txtsig_response version="1.0">
44
+ <content type="response">
45
+ <item type="team">
46
+ <element name="success">1</element>
47
+ <element name="group">a</element>
48
+ <element name="team_name">Excellent Team</element>
49
+ </item>
50
+ </content>
51
+ </txtsig_response>
52
+ EOS
53
+
54
+ update_response_xml = <<-EOS
55
+ <?xml version='1.0'?>
56
+ <txtsig_response version="1.0">
57
+ <content type="response">
58
+ <item type="team">
59
+ <element name="success">1</element>
60
+ <element name="team_id">15</element>
61
+ </item>
62
+ </content>
63
+ </txtsig_response>
64
+ EOS
65
+
66
+ delete_response_xml = <<-EOS
67
+ <?xml version='1.0'?>
68
+ <txtsig_response version="1.0">
69
+ <content type="response">
70
+ <item type="message">
71
+ <element name='success'>1</element>
72
+ </item>
73
+ </content>
74
+ </txtsig_response>
75
+ EOS
76
+
77
+ error_xml = <<-EOS
78
+ <?xml version='1.0'?>
79
+ <txtsig_response version="1.0">
80
+ <content type="error">
81
+ <item type="error_description">
82
+ <element name="error_code">10</element>
83
+ <element name="error_text"><![CDATA[General Fault]]></element>
84
+ </item>
85
+ </content>
86
+ </txtsig_response>
87
+ EOS
88
+
89
+ list_response = stub('list_response')
90
+ list_response.body(list_response_xml)
91
+ create_response = stub('create_response')
92
+ create_response.body(create_response_xml)
93
+ query_response = stub('query_response')
94
+ query_response.body(query_response_xml)
95
+ update_response = stub('update_response')
96
+ update_response.body(update_response_xml)
97
+ delete_response = stub('delete_response')
98
+ delete_response.body(delete_response_xml)
99
+ error_response = stub('error_response')
100
+ error_response.body(error_xml)
101
+
102
+ @valid_list_response = TsigApi::RemoteActions::Response.new(true, list_response)
103
+ stub(@valid_list_response).body{list_response_xml}
104
+ @valid_create_response = TsigApi::RemoteActions::Response.new(true, create_response)
105
+ stub(@valid_create_response).body{create_response_xml}
106
+ @valid_query_response = TsigApi::RemoteActions::Response.new(true, query_response)
107
+ stub(@valid_query_response).body{query_response_xml}
108
+ @valid_update_response = TsigApi::RemoteActions::Response.new(true, update_response)
109
+ stub(@valid_update_response).body{update_response_xml}
110
+ @valid_delete_response = TsigApi::RemoteActions::Response.new(true, delete_response)
111
+ stub(@valid_delete_response).body{delete_response_xml}
112
+ @error_response = TsigApi::RemoteActions::Response.new(true, error_response)
113
+ stub(@error_response).body{error_xml}
114
+
115
+ @tsig_team = TsigApi::Team.new("group a")
116
+
117
+ @valid_team = {:name => "Excellent Team"}
118
+ end
119
+
120
+ test 'should_initialize_team' do
121
+ assert_equal @tsig_team.class, TsigApi::Team
122
+ assert_equal @tsig_team.class.remote_type, :team
123
+ end
124
+
125
+ test 'should_build_create_xml' do
126
+ team_hash = @valid_team.merge({:has_contacts => [1, 2]})
127
+ request = @tsig_team.create(team_hash)
128
+ doc = REXML::Document.new(request.body)
129
+ assert_equal "Excellent Team", REXML::XPath.first(doc, "//param[@name='team_name']").get_text.to_s
130
+ end
131
+
132
+ test 'should_send_list_request_and_parse_response' do
133
+ request = @tsig_team.list
134
+ stub(request).send_request{@valid_list_response}
135
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
136
+
137
+ assert_equal 'response', content_type
138
+ assert_equal 3, response_hash.select{|k,v| k =~ /^team_\d/}.size
139
+ assert_equal 'Team One', response_hash['team_1']
140
+ end
141
+
142
+ test 'should_send_create_request_and_parse_response' do
143
+ team_hash = @valid_team.merge({:has_contacts => [1, 2]})
144
+ request = @tsig_team.create(team_hash)
145
+ stub(request).send_request{@valid_create_response}
146
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
147
+ assert_equal content_type, "response"
148
+ assert_equal response_hash["success"], "1"
149
+ assert_equal response_hash["team_id"], "15"
150
+ # now we fake an error response
151
+ stub(request).send_request{@error_response}
152
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
153
+ assert_equal content_type, "error"
154
+ assert_equal response_hash["error_code"], "10"
155
+ end
156
+
157
+ test 'should_send_query_and_parse_response' do
158
+ request = @tsig_team.query(:team_id => 15)
159
+ stub(request).send_request{@valid_query_response}
160
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
161
+ assert_equal "response", content_type
162
+ assert_equal response_hash["success"], "1"
163
+ assert_equal "Excellent Team", response_hash["team_name"]
164
+ end
165
+
166
+ test 'should_send_delete_and_parse_response' do
167
+ request = @tsig_team.delete(15)
168
+ stub(request).send_request{@valid_delete_response}
169
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
170
+ assert_equal "response", content_type
171
+ assert_equal response_hash["success"], "1"
172
+ end
173
+
174
+ test 'should_send_update_request_and_parse_response' do
175
+ request = @tsig_team.update(15, {:name => "Woo"})
176
+ stub(request).send_request{@valid_query_response}
177
+ content_type, response_hash = @tsig_team.parse_response(request.send_request)
178
+ assert_equal content_type, "response"
179
+ assert_equal response_hash["success"], "1"
180
+ end
181
+
182
+ end
@@ -0,0 +1,37 @@
1
+ require File.join(File.dirname(__FILE__), '/test_helper')
2
+
3
+ class TsigApiTest < ActiveSupport::TestCase
4
+
5
+ def test_text_from_flash
6
+ str = "
7
+ <div id=\\'error-message-container\\'><div class=\\'flash error\\'>
8
+ <a class=\\\"float-right small-text\\\" href=\\\"#\\\" onclick=\\\"hideErrorMessage(); return false;\\\">[Hide this]</a>
9
+ <div class=\\\"message-title\\\"><span class=\\\"error-icon\\\">!</span></div>
10
+ <div class=\\\"message-contents\\\">Please correct the following error(s):
11
+ <ul><li>Please make one or more selections for Teams.</li></ul></div>
12
+ <div class=\\\"clear\\\">&nbsp;</div></div></div>
13
+ "
14
+ assert_equal ['Please make one or more selections for Teams.'], TsigApi::text_from_flash(str)
15
+
16
+ str = "
17
+ <div id=\\'error-message-container\\'><div class=\\'flash error\\'>
18
+ <a class=\\\"float-right small-text\\\" href=\\\"#\\\" onclick=\\\"hideErrorMessage(); return false;\\\">[Hide this]</a>
19
+ <div class=\\\"message-title\\\"><span class=\\\"error-icon\\\">!</span></div>
20
+ <div class=\\\"message-contents\\\">Please correct the following error(s):
21
+ <ul><li>First message</li> <li>Second message</li>
22
+ <li>Third</li></ul></div>
23
+ <div class=\\\"clear\\\">&nbsp;</div></div></div>
24
+ "
25
+ assert_equal ['First message', 'Second message', 'Third'], TsigApi::text_from_flash(str)
26
+
27
+ str = "
28
+ <div id=\\'error-message-container\\'><div class=\\'flash error\\'>
29
+ <a class=\\\"float-right small-text\\\" href=\\\"#\\\" onclick=\\\"hideErrorMessage(); return false;\\\">[Hide this]</a>
30
+ <div class=\\\"message-title\\\"><span class=\\\"error-icon\\\">!</span></div>
31
+ <div class=\\\"message-contents\\\">Please correct the following error(s):</div>
32
+ <div class=\\\"clear\\\">&nbsp;</div></div></div>
33
+ "
34
+ assert_equal [], TsigApi::text_from_flash(str)
35
+ end
36
+
37
+ end