tsig_api 1.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,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