SQS 0.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/test/all_tests.rb ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/local/bin/ruby
2
+ dir = File.expand_path( File.dirname( __FILE__ ) )
3
+
4
+ Dir[File.join( File.join( File.dirname( __FILE__ ), 'unit' ), "*_test.rb" )].each { |f| require f }
5
+
6
+
@@ -0,0 +1,67 @@
1
+ #!/usr/local/bin/ruby
2
+ dir = File.expand_path( File.dirname( __FILE__ ) )
3
+
4
+ require 'test/unit'
5
+ require "#{File.expand_path( File.dirname( __FILE__ ) )}/test_setup"
6
+
7
+ class SQS_GrantTest < Test::Unit::TestCase
8
+ def setup
9
+ @queue_prefix = 'testGRANTEE'
10
+ @q = SQS.create_queue( @queue_prefix ) unless SQStest.skip_live_tests?
11
+ end
12
+ def teardown
13
+ SQS.list_queues( @queue_prefix ).each { |q| q.force_delete } unless SQStest.skip_live_tests?
14
+ print SQS.counter if SQStest.print_counter?
15
+ end
16
+
17
+ unless SQStest.skip_live_tests?
18
+
19
+
20
+ end
21
+
22
+
23
+ def test_initialize
24
+ g = SQS::Grant.new( :email => 'a@b.c', :id => '123456', :display_name => 'abc', :permission => 'zyx' )
25
+ assert_equal 'abc', g.display_name
26
+ assert_equal '123456', g.id
27
+ assert_equal 'a@b.c', g.email
28
+ assert_equal 'zyx', g.permission
29
+
30
+ g = SQS::Grant.new( 'iloveemail' )
31
+ assert_equal 'iloveemail', g.email
32
+ assert g.id.nil?
33
+ assert g.display_name.nil?
34
+ assert g.permission.nil?
35
+ end
36
+
37
+ def test_permission
38
+ g = SQS::Grant.new
39
+ assert_equal nil, g.permission
40
+
41
+ g.permission = :full
42
+ assert_equal 'FULLCONTROL', g.permission
43
+ g.permission = :receive
44
+ assert_equal 'RECEIVEMESSAGE', g.permission
45
+ g.permission = :send
46
+ assert_equal 'SENDMESSAGE', g.permission
47
+
48
+ g.permission = 'fullcontrol'
49
+ assert_equal 'FULLCONTROL', g.permission
50
+ g.permission = 'receivemessage'
51
+ assert_equal 'RECEIVEMESSAGE', g.permission
52
+ g.permission = 'sendmessage'
53
+ assert_equal 'SENDMESSAGE', g.permission
54
+
55
+ g.permission = 'full'
56
+ assert_equal 'FULLCONTROL', g.permission
57
+ g.permission = 'receive'
58
+ assert_equal 'RECEIVEMESSAGE', g.permission
59
+ g.permission = 'send'
60
+ assert_equal 'SENDMESSAGE', g.permission
61
+
62
+ g.permission = 'somethingelse'
63
+ assert_equal 'SOMETHINGELSE', g.permission
64
+ end
65
+ end
66
+
67
+
@@ -0,0 +1,81 @@
1
+ #!/usr/local/bin/ruby
2
+ dir = File.expand_path( File::dirname( __FILE__ ) )
3
+
4
+ require 'test/unit'
5
+ require "#{File.expand_path( File.dirname( __FILE__ ) )}/test_setup"
6
+
7
+
8
+ class SQS_MessageTest < Test::Unit::TestCase
9
+ def setup
10
+ @queue_prefix = 'testMSG'
11
+ @q = SQS.create_queue( @queue_prefix ) unless SQStest.skip_live_tests?
12
+ end
13
+ def teardown
14
+ SQS.list_queues( @queue_prefix ).each { |q| q.force_delete } unless SQStest.skip_live_tests?
15
+ print SQS.counter if SQStest.print_counter?
16
+ end
17
+
18
+ unless SQStest.skip_live_tests?
19
+ def test_delete
20
+ m = @q.send_message( 'This is something special' )
21
+ assert m.is_a?( SQS::Message )
22
+ assert_equal @q, m.queue
23
+ assert m.delete
24
+ sleep 2
25
+ assert_raises RuntimeError do
26
+ m.peek
27
+ end
28
+ end
29
+
30
+ def test_peek
31
+ m = @q.send_message( 'This is something else special' )
32
+ assert m.peek
33
+ assert_equal 'This is something else special', m.body
34
+ end
35
+
36
+ def test_body
37
+ m = SQS::Message.new()
38
+ m.body = 'bob'
39
+ assert_equal 'bob', m.body
40
+
41
+ m = @q.send_message( 'This is something else really special' )
42
+ assert_equal 'This is something else really special', m.body
43
+ end
44
+ end
45
+
46
+ def test_new
47
+ assert_nothing_raised RuntimeError do
48
+ SQS::Message.new
49
+ end
50
+ assert_nothing_raised RuntimeError do
51
+ SQS::Message.new :a => 'b'
52
+ end
53
+ assert_nothing_raised RuntimeError do
54
+ SQS::Message.new :a => 'b', :body => ''
55
+ end
56
+
57
+ assert_nothing_raised do
58
+ SQS::Message.new :a => 'b', :body => 'This is a test'
59
+ end
60
+
61
+ assert_nothing_raised do
62
+ SQS::Message.new 'This is a test'
63
+ end
64
+
65
+ m1 = SQS::Message.new :a => 'b', :body => 'This is a test'
66
+ assert m1.is_a?( SQS::Message )
67
+
68
+ m2 = SQS::Message.new 'This is a test'
69
+ assert m2.is_a?( SQS::Message )
70
+ end
71
+
72
+ def test_id
73
+ m1 = SQS::Message.new 'Message 1'
74
+ m2 = SQS::Message.new :id => 'Message 2'
75
+ m3 = SQS::Message.new :id => 'Message 3', :something => 'else'
76
+
77
+ assert_equal 'Message 1', m1.id
78
+ assert_equal 'Message 2', m2.id
79
+ assert_equal 'Message 3', m3.id
80
+ end
81
+ end
@@ -0,0 +1,312 @@
1
+ #!/usr/local/bin/ruby
2
+ dir = File.expand_path( File.dirname( __FILE__ ) )
3
+
4
+ require 'test/unit'
5
+ require "#{File.expand_path( File.dirname( __FILE__ ) )}/test_setup"
6
+
7
+
8
+
9
+
10
+ class SQS_QueueTest < Test::Unit::TestCase
11
+ def self.other_aws_account
12
+ SQStest.other_aws_account
13
+ end
14
+
15
+ def setup
16
+ @queue_prefix = 'testQUEUE'
17
+ @q = SQStest.skip_live_tests? ? SQS::Queue.new( 'http://nowhere.com/nothing' ) : SQS.create_queue( @queue_prefix )
18
+ end
19
+ def teardown
20
+ SQS.list_queues( @queue_prefix ).each { |q| q.force_delete } unless SQStest.skip_live_tests?
21
+ print SQS.counter if SQStest.print_counter?
22
+ end
23
+
24
+ unless SQStest.skip_live_tests?
25
+ def test_delete
26
+ assert @q.is_a?( SQS::Queue )
27
+ q2 = SQS.get_queue( @queue_prefix )
28
+ assert q2.is_a?( SQS::Queue )
29
+ assert_equal @q, q2
30
+
31
+ assert @q.delete
32
+
33
+ assert_raises RuntimeError do
34
+ q3 = SQS.get_queue( @queue_prefix )
35
+ end
36
+
37
+ assert_raises RuntimeError do
38
+ q2.delete
39
+ end
40
+ end
41
+
42
+ def test_exist
43
+ assert @q.exist?
44
+ assert @q.exists?
45
+ q2 = SQS.get_queue( @queue_prefix )
46
+ assert q2.exists?
47
+ assert q2.exist?
48
+
49
+ assert @q.delete
50
+ sleep 2
51
+
52
+ assert !@q.exists?
53
+ assert !@q.exist?
54
+ assert !q2.exists?
55
+ assert !q2.exist?
56
+
57
+ q3 = SQS::Queue.new( 'http://borker.borked/borkee' )
58
+ assert !q3.exists?
59
+ assert !q3.exist?
60
+ end
61
+
62
+ def test_send_message
63
+ m = @q.send_message( 'This is so mething special' )
64
+ assert m.is_a?( SQS::Message )
65
+ assert_equal @q, m.queue
66
+ end
67
+
68
+ def test_receive_message
69
+ @q.send_message( 'I am receiving a message from beyond' )
70
+ sleep 2
71
+ m = @q.receive_message
72
+
73
+ assert m.is_a?( SQS::Message )
74
+ assert_equal @q, m.queue
75
+ assert_equal 'I am receiving a message from beyond', m.body
76
+ end
77
+ def test_receive_message_on_empty_queue
78
+ m = @q.receive_message
79
+
80
+ assert m.nil?
81
+ end
82
+
83
+ def test_receive_messages
84
+ (1..10).to_a.each do |i|
85
+ @q.send_message( "I am receiving message #{i}" )
86
+ end
87
+
88
+ sleep 10
89
+
90
+ messages = @q.receive_messages :count => 2
91
+ assert messages.size == 1 || messages.size == 2, "Weird array size: #{messages.size}"
92
+
93
+ assert messages.is_a?( Array )
94
+ messages.each do |m|
95
+ assert m.is_a?( SQS::Message )
96
+ assert_equal @q, m.queue
97
+ assert_match /^I am receiving message \d+$/, m.body
98
+ end
99
+
100
+ messages = @q.receive_messages :count => 12
101
+ assert messages.is_a?( Array )
102
+ assert messages.size > 0 && messages.size < 12, "Weird array size: #{messages.size}"
103
+ end
104
+
105
+ def test_force_delete
106
+ (1..10).to_a.each do |i|
107
+ @q.send_message( "I am receiving message ##{i}" )
108
+ end
109
+
110
+ sleep 5
111
+
112
+ assert_raises RuntimeError do
113
+ @q.delete
114
+ end
115
+
116
+ assert_nothing_raised do
117
+ @q.force_delete
118
+ end
119
+
120
+ sleep 5
121
+
122
+ assert_raises RuntimeError do
123
+ q = SQS.get_queue( @queue_prefix )
124
+ end
125
+ end
126
+
127
+ class DUMMY
128
+ def self.email
129
+ SQS_QueueTest::other_aws_account[:email]
130
+ end
131
+ end
132
+
133
+ def test_add_grant
134
+ assert_respond_to @q, :add_grant
135
+ assert_equal 1, @q.list_grants.size
136
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => :full )
137
+ assert_equal 2, @q.list_grants.size
138
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => :send )
139
+ assert_equal 3, @q.list_grants.size
140
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => :receive )
141
+ assert_equal 4, @q.list_grants.size
142
+
143
+ assert_nothing_raised do
144
+ #DUMMY responds to :email (is not an address itself)
145
+ @q.add_grant( :email => DUMMY, :permission => :receive )
146
+ end
147
+ assert_equal 4, @q.list_grants.size
148
+
149
+
150
+ assert_raises RuntimeError do
151
+ assert @q.add_grant( :email => 'invalid@email.address', :permission => :receive )
152
+ end
153
+ end
154
+
155
+ def test_remove_grant
156
+ assert_respond_to @q, :remove_grant
157
+
158
+
159
+ [:full, :send, :receive].each do |perm|
160
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => perm )
161
+ end
162
+ @q.list_grants.each do |g|
163
+ unless g.display_name == SQStest.my_aws_account[:display_name]
164
+ assert @q.remove_grant( :email => SQStest.other_aws_account[:email], :permission => g.permission )
165
+ end
166
+ end
167
+
168
+ [:full, :send, :receive].each do |perm|
169
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => perm )
170
+ end
171
+ @q.list_grants.each do |g|
172
+ unless g.display_name == SQStest.my_aws_account[:display_name]
173
+ #DUMMY responds to :email (is not an address itself)
174
+ assert @q.remove_grant( :email => DUMMY, :permission => g.permission )
175
+ end
176
+ end
177
+
178
+ [:full, :send, :receive].each do |perm|
179
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => perm )
180
+ end
181
+ @q.list_grants.each do |g|
182
+ unless g.display_name == SQStest.my_aws_account[:display_name]
183
+ assert @q.remove_grant( :id => g.id, :permission => g.permission )
184
+ end
185
+ end
186
+
187
+ [:full, :send, :receive].each do |perm|
188
+ assert @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => perm )
189
+ end
190
+ @q.list_grants.each do |g|
191
+ unless g.display_name == SQStest.my_aws_account[:display_name]
192
+ # the grant responds to :id (is not an id itself)
193
+ assert @q.remove_grant( :id => g, :permission => g.permission )
194
+ end
195
+ end
196
+ end
197
+
198
+ def test_list_grants
199
+ assert_respond_to @q, :list_grants
200
+ grant = @q.list_grants
201
+ assert_equal 1, grant.size
202
+ grant = grant.first
203
+ assert_equal SQS.permissions[:full], grant.permission
204
+ assert_equal nil, grant.email
205
+ assert_equal SQStest.my_aws_account[:display_name], grant.display_name
206
+
207
+ @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => :receive)
208
+ grants = @q.list_grants
209
+ assert_equal 2, grants.size
210
+ grants.each do |grant|
211
+ case grant.display_name
212
+ when SQStest.my_aws_account[:display_name]
213
+ assert_equal SQS.permissions[:full], grant.permission
214
+ when SQStest.other_aws_account[:display_name]
215
+ assert_equal SQS.permissions[:receive], grant.permission
216
+ else
217
+ assert false, "'#{grant.display_name}' is an unknown email address"
218
+ end
219
+ end
220
+ end
221
+
222
+ def test_each_grant
223
+ assert_respond_to @q, :each_grant
224
+ @q.add_grant( :email => SQStest.other_aws_account[:email], :permission => :receive)
225
+ @q.each_grant do |g|
226
+ assert_kind_of SQS::Grant, g
227
+ end
228
+ end
229
+
230
+ def test_get_visiblity_timeout
231
+ assert_respond_to @q, :visibility_timeout
232
+ assert_equal SQS::Queue.default_visibility_timeout, @q.visibility_timeout
233
+ assert_kind_of Integer, @q.visibility_timeout
234
+
235
+ q = SQS.create_queue :name => "#{@queue_prefix}getvisi", :DefaultVisibilityTimeout => 12345
236
+ assert_equal 12345, q.visibility_timeout
237
+ assert_kind_of Integer, q.visibility_timeout
238
+ end
239
+
240
+ def test_set_visiblity_timeout
241
+ assert_respond_to @q, :visibility_timeout=
242
+ assert( @q.visibility_timeout = 456 )
243
+ assert_equal 456, @q.visibility_timeout
244
+
245
+ assert_nothing_raised RuntimeError do
246
+ @q.visibility_timeout = nil
247
+ @q.visibility_timeout = 0
248
+ end
249
+
250
+ assert_raises RuntimeError do
251
+ @q.visibility_timeout = -1
252
+ end
253
+ assert_raises RuntimeError do
254
+ @q.visibility_timeout = 86401
255
+ end
256
+
257
+ assert_raises NoMethodError do
258
+ @q.visibility_timeout = Object
259
+ end
260
+ end
261
+ end
262
+
263
+ def test_default_visibility_timeout
264
+ assert_respond_to SQS::Queue, :default_visibility_timeout
265
+ assert_equal 30, SQS::Queue.default_visibility_timeout
266
+ end
267
+
268
+
269
+
270
+ def test_new
271
+ assert_nothing_raised do
272
+ q1 = SQS::Queue.new :url => 'http://www.slappy.com/', :a => 'a', 'b' => :b
273
+ end
274
+ q1 = SQS::Queue.new :url => 'http://www.slappy.com/', :a => 'a', 'b' => :b
275
+ assert_equal 'http://www.slappy.com/', q1.url
276
+
277
+ q2 = SQS::Queue.new 'http://www.slappy.com/'
278
+ assert_equal 'http://www.slappy.com/', q2.url
279
+
280
+ assert_raises NameError do
281
+ q.a
282
+ end
283
+ assert_raises NameError do
284
+ q.b
285
+ end
286
+
287
+ assert_raises RuntimeError do
288
+ q = SQS::Queue.new :url => 'http://www.slappy.com'
289
+ q = SQS::Queue.new :url => 'LKJSDFLKJ@#$)()'
290
+ end
291
+ end
292
+
293
+ def test_url
294
+ q = SQS::Queue.new :url => 'http://queue.amazonaws.com/A3ZVJ8HH1F466/test96570'
295
+ assert_equal 'http://queue.amazonaws.com/A3ZVJ8HH1F466/test96570', q.url
296
+ end
297
+
298
+ def test_name
299
+ q = SQS::Queue.new :url => 'http://queue.amazonaws.com/A3ZVJ8HH1F466/test96570'
300
+ assert_equal 'test96570', q.name
301
+ end
302
+
303
+ def test_equality_check
304
+ q1 = SQS::Queue.new :url => 'http://queue.amazonaws.com/A3ZVJ8HH1F466/test96570'
305
+ q2 = SQS::Queue.new :url => 'http://queue.amazonaws.com/A3ZVJ8HH1F466/test96570'
306
+ q3 = SQS::Queue.new :url => 'http://queue.amazonaws.com/A3ZVJ8HH1F466/est96570'
307
+
308
+ assert q1 == q2
309
+ assert q1 != q3
310
+ assert q2 != q3
311
+ end
312
+ end