aboisvert_aws 3.0.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/History.txt +329 -0
- data/Manifest.txt +61 -0
- data/README.txt +163 -0
- data/Rakefile +130 -0
- data/lib/acf/right_acf_interface.rb +549 -0
- data/lib/acf/right_acf_invalidations.rb +144 -0
- data/lib/acf/right_acf_origin_access_identities.rb +230 -0
- data/lib/acf/right_acf_streaming_interface.rb +229 -0
- data/lib/acw/right_acw_interface.rb +248 -0
- data/lib/as/right_as_interface.rb +698 -0
- data/lib/awsbase/benchmark_fix.rb +39 -0
- data/lib/awsbase/right_awsbase.rb +1343 -0
- data/lib/awsbase/support.rb +35 -0
- data/lib/awsbase/version.rb +9 -0
- data/lib/ec2/right_ec2.rb +541 -0
- data/lib/ec2/right_ec2_ebs.rb +481 -0
- data/lib/ec2/right_ec2_images.rb +444 -0
- data/lib/ec2/right_ec2_instances.rb +788 -0
- data/lib/ec2/right_ec2_monitoring.rb +70 -0
- data/lib/ec2/right_ec2_placement_groups.rb +108 -0
- data/lib/ec2/right_ec2_reserved_instances.rb +184 -0
- data/lib/ec2/right_ec2_security_groups.rb +491 -0
- data/lib/ec2/right_ec2_spot_instances.rb +422 -0
- data/lib/ec2/right_ec2_tags.rb +139 -0
- data/lib/ec2/right_ec2_vpc.rb +590 -0
- data/lib/ec2/right_ec2_vpc2.rb +381 -0
- data/lib/ec2/right_ec2_windows_mobility.rb +84 -0
- data/lib/elb/right_elb_interface.rb +573 -0
- data/lib/emr/right_emr_interface.rb +727 -0
- data/lib/iam/right_iam_access_keys.rb +71 -0
- data/lib/iam/right_iam_groups.rb +195 -0
- data/lib/iam/right_iam_interface.rb +341 -0
- data/lib/iam/right_iam_mfa_devices.rb +67 -0
- data/lib/iam/right_iam_users.rb +251 -0
- data/lib/rds/right_rds_interface.rb +1384 -0
- data/lib/right_aws.rb +86 -0
- data/lib/route_53/right_route_53_interface.rb +640 -0
- data/lib/s3/right_s3.rb +1138 -0
- data/lib/s3/right_s3_interface.rb +1278 -0
- data/lib/sdb/active_sdb.rb +1107 -0
- data/lib/sdb/right_sdb_interface.rb +762 -0
- data/lib/sns/right_sns_interface.rb +286 -0
- data/lib/sqs/right_sqs.rb +387 -0
- data/lib/sqs/right_sqs_gen2.rb +342 -0
- data/lib/sqs/right_sqs_gen2_interface.rb +523 -0
- data/lib/sqs/right_sqs_interface.rb +593 -0
- data/right_aws.gemspec +90 -0
- data/test/README.mdown +39 -0
- data/test/acf/test_helper.rb +2 -0
- data/test/acf/test_right_acf.rb +138 -0
- data/test/awsbase/test_helper.rb +2 -0
- data/test/awsbase/test_right_awsbase.rb +11 -0
- data/test/ec2/test_helper.rb +2 -0
- data/test/ec2/test_right_ec2.rb +107 -0
- data/test/elb/test_helper.rb +2 -0
- data/test/elb/test_right_elb.rb +43 -0
- data/test/http_connection.rb +87 -0
- data/test/rds/test_helper.rb +2 -0
- data/test/rds/test_right_rds.rb +120 -0
- data/test/route_53/fixtures/a_record.xml +18 -0
- data/test/route_53/fixtures/alias_record.xml +18 -0
- data/test/route_53/test_helper.rb +2 -0
- data/test/route_53/test_right_route_53.rb +141 -0
- data/test/s3/test_helper.rb +2 -0
- data/test/s3/test_right_s3.rb +528 -0
- data/test/s3/test_right_s3_stubbed.rb +97 -0
- data/test/sdb/test_active_sdb.rb +357 -0
- data/test/sdb/test_batch_put_attributes.rb +54 -0
- data/test/sdb/test_helper.rb +3 -0
- data/test/sdb/test_right_sdb.rb +253 -0
- data/test/sns/test_helper.rb +2 -0
- data/test/sns/test_right_sns.rb +153 -0
- data/test/sqs/test_helper.rb +2 -0
- data/test/sqs/test_right_sqs.rb +285 -0
- data/test/sqs/test_right_sqs_gen2.rb +264 -0
- data/test/test_credentials.rb +37 -0
- data/test/ts_right_aws.rb +15 -0
- metadata +257 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
|
+
|
4
|
+
class TestSdb < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
STDOUT.sync = true
|
8
|
+
@domain = 'right_sdb_awesome_test_domain'
|
9
|
+
@attributes = {
|
10
|
+
'a' => { 'foo' => '123' },
|
11
|
+
'b' => { 'bar' => '456' }
|
12
|
+
}
|
13
|
+
# Interface instance
|
14
|
+
@sdb = Rightscale::SdbInterface.new
|
15
|
+
@sdb.delete_domain(@domain)
|
16
|
+
wait(SDB_DELAY, "after removing domain")
|
17
|
+
@sdb.create_domain(@domain)
|
18
|
+
wait(SDB_DELAY, "after recreating domain")
|
19
|
+
end
|
20
|
+
|
21
|
+
SDB_DELAY = 2
|
22
|
+
|
23
|
+
def wait(delay, msg='')
|
24
|
+
print "waiting #{delay} seconds #{msg}"
|
25
|
+
while delay>0 do
|
26
|
+
delay -= 1
|
27
|
+
print '.'
|
28
|
+
sleep 1
|
29
|
+
end
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_batch_put_attributes
|
34
|
+
@sdb.batch_put_attributes(@domain, @attributes)
|
35
|
+
wait(SDB_DELAY, "after putting attributes")
|
36
|
+
a = @sdb.get_attributes(@domain, 'a')[:attributes]
|
37
|
+
b = @sdb.get_attributes(@domain, 'b')[:attributes]
|
38
|
+
assert_equal( {'foo' => ['123']}, a)
|
39
|
+
assert_equal( {'bar' => ['456']}, b)
|
40
|
+
|
41
|
+
# Replace = false
|
42
|
+
@sdb.batch_put_attributes(@domain, { 'a' => {'foo' => ['789']}})
|
43
|
+
wait(SDB_DELAY, "after putting attributes")
|
44
|
+
a = @sdb.get_attributes(@domain, 'a')[:attributes]
|
45
|
+
assert_equal ['123', '789'], a['foo'].sort
|
46
|
+
|
47
|
+
# Replace = true
|
48
|
+
@sdb.batch_put_attributes(@domain, {'b' => {'bar' => ['789']}}, true)
|
49
|
+
wait(SDB_DELAY, "after putting attributes")
|
50
|
+
b = @sdb.get_attributes(@domain, 'b')[:attributes]
|
51
|
+
assert_equal ['789'], b['bar'].sort
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,253 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestSdb < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
STDOUT.sync = true
|
7
|
+
@domain = 'right_sdb_awesome_test_domain'
|
8
|
+
@item = 'toys'
|
9
|
+
@attr = { 'Jon' => %w{beer car} }
|
10
|
+
# Interface instance
|
11
|
+
@sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
12
|
+
end
|
13
|
+
|
14
|
+
SDB_DELAY = 7
|
15
|
+
|
16
|
+
def wait(delay, msg='')
|
17
|
+
print "waiting #{delay} seconds #{msg}"
|
18
|
+
while delay>0 do
|
19
|
+
delay -= 1
|
20
|
+
print '.'
|
21
|
+
sleep 1
|
22
|
+
end
|
23
|
+
puts
|
24
|
+
end
|
25
|
+
|
26
|
+
#---------------------------
|
27
|
+
# Rightscale::SdbInterface
|
28
|
+
#---------------------------
|
29
|
+
|
30
|
+
def test_00_delete_domain
|
31
|
+
# delete the domain to reset all the things
|
32
|
+
assert @sdb.delete_domain(@domain), 'delete_domain fail'
|
33
|
+
wait SDB_DELAY, 'after domain deletion'
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_01_create_domain
|
37
|
+
# check that domain does not exist
|
38
|
+
assert !@sdb.list_domains[:domains].include?(@domain)
|
39
|
+
# create domain
|
40
|
+
assert @sdb.create_domain(@domain), 'create_domain fail'
|
41
|
+
wait SDB_DELAY, 'after domain creation'
|
42
|
+
# check that we have received new domain from Amazin
|
43
|
+
assert @sdb.list_domains[:domains].include?(@domain)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_02_put_attributes
|
47
|
+
# put attributes
|
48
|
+
assert @sdb.put_attributes(@domain, @item, @attr)
|
49
|
+
wait SDB_DELAY, 'after putting attributes'
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_03_get_attributes
|
53
|
+
# get attributes
|
54
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
55
|
+
# compare to original list
|
56
|
+
assert_equal values, @attr['Jon'].sort
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_04_add_attributes
|
60
|
+
# add new attribute
|
61
|
+
new_value = 'girls'
|
62
|
+
@sdb.put_attributes @domain, @item, {'Jon' => new_value}
|
63
|
+
wait SDB_DELAY, 'after putting attributes'
|
64
|
+
# get attributes ('girls' must be added to already existent attributes)
|
65
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
66
|
+
assert_equal values, (@attr['Jon'] << new_value).sort
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_05_replace_attributes
|
70
|
+
# replace attributes
|
71
|
+
@sdb.put_attributes @domain, @item, {'Jon' => 'pub'}, :replace
|
72
|
+
wait SDB_DELAY, 'after replacing attributes'
|
73
|
+
# get attributes (all must be removed except of 'pub')
|
74
|
+
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon']
|
75
|
+
assert_equal values, ['pub']
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_06_delete_attribute
|
79
|
+
# add value 'girls' and 'vodka' to 'Jon'
|
80
|
+
@sdb.put_attributes @domain, @item, {'Jon' => ['girls','vodka']}
|
81
|
+
wait SDB_DELAY, 'after adding attributes'
|
82
|
+
# get attributes ('girls' and 'vodka' must be added 'pub')
|
83
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
84
|
+
assert_equal values, ['girls', 'pub', 'vodka']
|
85
|
+
# delete a single value 'girls' from attribute 'Jon'
|
86
|
+
@sdb.delete_attributes @domain, @item, 'Jon' => ['girls']
|
87
|
+
wait SDB_DELAY, 'after the deletion of attribute'
|
88
|
+
# get attributes ('girls' must be removed)
|
89
|
+
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon']
|
90
|
+
assert_equal values, ['pub', 'vodka']
|
91
|
+
# delete all values from attribute 'Jon'
|
92
|
+
@sdb.delete_attributes @domain, @item, ['Jon']
|
93
|
+
wait SDB_DELAY, 'after the deletion of attributes'
|
94
|
+
# get attributes (values must be empty)
|
95
|
+
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon']
|
96
|
+
assert_equal values, nil
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_07_delete_item
|
100
|
+
@sdb.put_attributes @domain, @item, {'Volodya' => ['girls','vodka']}
|
101
|
+
wait SDB_DELAY, 'after adding attributes'
|
102
|
+
# get attributes ('girls' and 'vodka' must be there)
|
103
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Volodya']).sort
|
104
|
+
assert_equal values, ['girls', 'vodka']
|
105
|
+
# delete an item
|
106
|
+
@sdb.delete_attributes @domain, @item
|
107
|
+
wait SDB_DELAY, 'after deleting attributes'
|
108
|
+
# get attributes (values must be empty)
|
109
|
+
values = @sdb.get_attributes(@domain, @item)[:attributes]['Volodya']
|
110
|
+
assert_equal values, nil
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_08_query
|
114
|
+
# add some values for query
|
115
|
+
@sdb.put_attributes @domain, @item, {'Jon' => ['girls','vodka']}
|
116
|
+
wait SDB_DELAY, 'after adding attributes'
|
117
|
+
items = @sdb.query(@domain, ['[?=?]', 'Jon','vodka'])[:items]
|
118
|
+
assert_equal items.size, 1
|
119
|
+
assert_equal items.first, @item
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_09_signature_version_0
|
123
|
+
sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, :signature_version => '0')
|
124
|
+
item = 'toys'
|
125
|
+
# TODO: need to change the below test. I think Juergen's intention was to include some umlauts in the values
|
126
|
+
# put attributes
|
127
|
+
# mhhh... Not sure how to translate this: hölzchehn klötzchen grÃŒnspan buÃe... Lets assume this is:
|
128
|
+
attributes = { 'Jurgen' => %w{kitten puppy chickabiddy piglet} }
|
129
|
+
assert sdb.put_attributes(@domain, item, attributes)
|
130
|
+
wait SDB_DELAY, 'after putting attributes'
|
131
|
+
# get attributes
|
132
|
+
values = Array(sdb.get_attributes(@domain, item)[:attributes]['Jurgen']).sort
|
133
|
+
# compare to original list
|
134
|
+
assert_equal values, attributes['Jurgen'].sort
|
135
|
+
# check that the request has correct signature version
|
136
|
+
assert sdb.last_request.path.include?('SignatureVersion=0')
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_10_signature_version_1
|
140
|
+
sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, :signature_version => '1')
|
141
|
+
domains = nil
|
142
|
+
assert_nothing_thrown "Failed to use signature V1" do
|
143
|
+
domains = sdb.list_domains
|
144
|
+
end
|
145
|
+
assert domains
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_11_signature_version_1
|
149
|
+
sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, :signature_version => '2')
|
150
|
+
domains = nil
|
151
|
+
assert_nothing_thrown "Failed to use signature V2" do
|
152
|
+
domains = sdb.list_domains
|
153
|
+
end
|
154
|
+
assert domains
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_12_array_of_attrs
|
158
|
+
item = 'multiples'
|
159
|
+
assert_nothing_thrown "Failed to put multiple attrs" do
|
160
|
+
@sdb.put_attributes(@domain, item, {:one=>1, :two=>2, :three=>3})
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_13_zero_len_attrs
|
165
|
+
item = 'zeroes'
|
166
|
+
assert_nothing_thrown "Failed to put zero-length attributes" do
|
167
|
+
@sdb.put_attributes(@domain, item, {:one=>"", :two=>"", :three=>""})
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_14_nil_attrs
|
172
|
+
item = 'nils'
|
173
|
+
res = nil
|
174
|
+
assert_nothing_thrown do
|
175
|
+
@sdb.put_attributes(@domain, item, {:one=>nil, :two=>nil, :three=>'chunder'})
|
176
|
+
end
|
177
|
+
wait SDB_DELAY, 'after putting attributes'
|
178
|
+
assert_nothing_thrown do
|
179
|
+
res = @sdb.get_attributes(@domain, item)
|
180
|
+
end
|
181
|
+
assert_nil(res[:attributes]['one'][0])
|
182
|
+
assert_nil(res[:attributes]['two'][0])
|
183
|
+
assert_not_nil(res[:attributes]['three'][0])
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_15_url_escape
|
187
|
+
item = 'urlescapes'
|
188
|
+
content = {:a=>"one & two & three",
|
189
|
+
:b=>"one ? two / three"}
|
190
|
+
@sdb.put_attributes(@domain, item, content)
|
191
|
+
wait SDB_DELAY, 'after putting attributes'
|
192
|
+
|
193
|
+
res = @sdb.get_attributes(@domain, item)
|
194
|
+
assert_equal(content[:a], res[:attributes]['a'][0])
|
195
|
+
assert_equal(content[:b], res[:attributes]['b'][0])
|
196
|
+
end
|
197
|
+
|
198
|
+
def test_16_put_attrs_by_post
|
199
|
+
item = 'reqgirth'
|
200
|
+
i = 0
|
201
|
+
sa = ""
|
202
|
+
while(i < 64) do
|
203
|
+
sa += "aaaaaaaa"
|
204
|
+
i += 1
|
205
|
+
end
|
206
|
+
@sdb.put_attributes(@domain, item, {:a => sa, :b => sa, :c => sa, :d => sa, :e => sa})
|
207
|
+
wait SDB_DELAY, 'after putting attributes'
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_20_query_with_atributes
|
211
|
+
response = @sdb.query_with_attributes(@domain)
|
212
|
+
# convers response to a hash representation
|
213
|
+
items = {};
|
214
|
+
response[:items].each{ |item| items.merge!(item) }
|
215
|
+
# check we have receied all 5 items each full of attributes
|
216
|
+
assert_equal 6, items.keys.size
|
217
|
+
assert items['toys'].size > 0
|
218
|
+
assert items['nils'].size > 0
|
219
|
+
assert items['urlescapes'].size > 0
|
220
|
+
assert items['multiples'].size > 0
|
221
|
+
assert items['reqgirth'].size > 0
|
222
|
+
assert items['zeroes'].size > 0
|
223
|
+
# fetch only Jon's attributes from all items
|
224
|
+
response = @sdb.query_with_attributes(@domain,['Jon'])
|
225
|
+
items = {};
|
226
|
+
response[:items].each{ |item| items.merge!(item) }
|
227
|
+
# check we have receied all 5 items
|
228
|
+
# check we have receied all 5 items, but only 'toys' has attributes
|
229
|
+
puts items.inspect
|
230
|
+
assert_equal 2, items['toys']['Jon'].size
|
231
|
+
assert_equal 0, items['nils'].size
|
232
|
+
assert_equal 0, items['urlescapes'].size
|
233
|
+
assert_equal 0, items['multiples'].size
|
234
|
+
assert_equal 0, items['reqgirth'].size
|
235
|
+
assert_equal 0, items['zeroes'].size
|
236
|
+
# kust Jurgen's attriburs
|
237
|
+
response = @sdb.query_with_attributes(@domain,['Jurgen'], "['Jurgen'='piglet']")
|
238
|
+
items = {};
|
239
|
+
response[:items].each{ |item| items.merge!(item) }
|
240
|
+
# check we have receied an only item
|
241
|
+
assert_equal 1, items.keys.size
|
242
|
+
assert_equal ["chickabiddy", "kitten", "piglet", "puppy"], items['toys']['Jurgen'].sort
|
243
|
+
end
|
244
|
+
|
245
|
+
# Keep this test last, because it deletes the domain...
|
246
|
+
def test_21_delete_domain
|
247
|
+
assert @sdb.delete_domain(@domain), 'delete_domain fail'
|
248
|
+
wait SDB_DELAY, 'after domain deletion'
|
249
|
+
# check that domain does not exist
|
250
|
+
assert !@sdb.list_domains[:domains].include?(@domain)
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestSns < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# You can change these things to whatever you like
|
6
|
+
@@subscriber_email = 'foo@bar.baz'
|
7
|
+
@@topic_name = 'RightTestTopic'
|
8
|
+
@@topic_display_name = 'right_aws test notification topic'
|
9
|
+
@@queue_name = "sns_subscribe_queue_#{Time.now.utc.to_i}"
|
10
|
+
|
11
|
+
# These are placeholders for values that get set, and consumed during the course of testing.
|
12
|
+
@@topic_arn = ''
|
13
|
+
@@subscription_arn = ''
|
14
|
+
@@queue_url = ''
|
15
|
+
@@queue_arn = ''
|
16
|
+
|
17
|
+
@@policy_template = <<-EOF
|
18
|
+
{
|
19
|
+
"Id": "Policy1300753700208",
|
20
|
+
"Statement": [
|
21
|
+
{
|
22
|
+
"Sid": "Stmt1300753696680",
|
23
|
+
"Action": [
|
24
|
+
"SNS:Publish",
|
25
|
+
"SNS:RemovePermission",
|
26
|
+
"SNS:SetTopicAttributes",
|
27
|
+
"SNS:DeleteTopic",
|
28
|
+
"SNS:ListSubscriptionsByTopic",
|
29
|
+
"SNS:GetTopicAttributes",
|
30
|
+
"SNS:Receive",
|
31
|
+
"SNS:AddPermission",
|
32
|
+
"SNS:Subscribe"
|
33
|
+
],
|
34
|
+
"Effect": "Allow",
|
35
|
+
"Resource": "@@topic_arn@@",
|
36
|
+
"Principal": {
|
37
|
+
"AWS": [
|
38
|
+
"*"
|
39
|
+
]
|
40
|
+
}
|
41
|
+
}
|
42
|
+
]
|
43
|
+
}
|
44
|
+
EOF
|
45
|
+
|
46
|
+
def policy_text
|
47
|
+
@@policy_template.gsub('@@topic_arn@@', @@topic_arn)
|
48
|
+
end
|
49
|
+
|
50
|
+
def setup
|
51
|
+
@sns = Rightscale::SnsInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
52
|
+
@sqs = Rightscale::SqsGen2Interface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_01_create_topic
|
56
|
+
response = @sns.create_topic(@@topic_name)
|
57
|
+
assert_not_nil(response)
|
58
|
+
@@topic_arn = response
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_02_set_topic_attributes
|
62
|
+
response = @sns.set_topic_attribute(@@topic_arn, 'Policy', policy_text())
|
63
|
+
assert_not_nil(response)
|
64
|
+
|
65
|
+
response = @sns.set_topic_attribute(@@topic_arn, 'DisplayName', @@topic_display_name)
|
66
|
+
assert_not_nil(response)
|
67
|
+
|
68
|
+
assert_raise ArgumentError do
|
69
|
+
@sns.set_topic_attribute(@@topic_arn, 'Foo', 'val')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_03_get_topic_attributes
|
74
|
+
response = @sns.get_topic_attributes(@@topic_arn)
|
75
|
+
assert_not_nil(response)
|
76
|
+
assert(response['DisplayName'] == @@topic_display_name)
|
77
|
+
assert(response['Policy'] =~ /Policy1300753700208/)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_04_list_topics
|
81
|
+
sleep(1)
|
82
|
+
assert(@sns.list_topics.collect{|topic| topic[:arn] }.include?(@@topic_arn))
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_05_subscribe_email
|
86
|
+
response = @sns.subscribe(@@topic_arn, 'email', @@subscriber_email)
|
87
|
+
assert_not_nil(response)
|
88
|
+
@@subscription_arn = response
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_06_list_subscriptions
|
92
|
+
sleep(1)
|
93
|
+
|
94
|
+
response = @sns.list_subscriptions()
|
95
|
+
assert_not_nil(response)
|
96
|
+
assert(response.count == 1)
|
97
|
+
assert(response[0][:endpoint] == @@subscriber_email)
|
98
|
+
assert(response[0][:protocol] == 'email')
|
99
|
+
assert(response[0][:subscription_arn] == 'PendingConfirmation')
|
100
|
+
assert(response[0][:topic_arn] == @@topic_arn)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_07_list_subscriptions_by_topic
|
104
|
+
response = @sns.list_subscriptions(@@topic_arn)
|
105
|
+
assert_not_nil(response)
|
106
|
+
assert(response.count == 1)
|
107
|
+
assert(response[0][:endpoint] == @@subscriber_email)
|
108
|
+
assert(response[0][:protocol] == 'email')
|
109
|
+
assert(response[0][:subscription_arn] == 'PendingConfirmation')
|
110
|
+
assert(response[0][:topic_arn] == @@topic_arn)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_08_unsubscribe
|
114
|
+
@@queue_url = @sqs.create_queue(@@queue_name)
|
115
|
+
@@queue_arn = "arn:aws:sqs:us-east-1:#{TestCredentials.account_number.gsub('-','')}:#{@@queue_name}"
|
116
|
+
sub_response = @sns.subscribe(@@topic_arn, 'sqs', @@queue_arn)
|
117
|
+
assert_not_nil(sub_response)
|
118
|
+
unsub_response = @sns.unsubscribe(sub_response)
|
119
|
+
@sqs.delete_queue(@@queue_url)
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_09_publish
|
123
|
+
response = @sns.publish(@@topic_arn, 'Message to publish', 'Message Subject')
|
124
|
+
assert_not_nil(response)
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_10_add_and_remove_permission
|
128
|
+
acct_num = TestCredentials.account_number.gsub('-','')
|
129
|
+
|
130
|
+
add_response = @sns.add_permission(@@topic_arn, 'PermissionLbl', [
|
131
|
+
{:aws_account_id => acct_num, :action => "GetTopicAttributes"},
|
132
|
+
{:aws_account_id => acct_num, :action => "Publish"}
|
133
|
+
])
|
134
|
+
assert_not_nil(add_response)
|
135
|
+
|
136
|
+
remove_response = @sns.remove_permission(@@topic_arn, 'PermissionLbl')
|
137
|
+
assert_not_nil(remove_response)
|
138
|
+
end
|
139
|
+
|
140
|
+
# TODO: Cannot easily test confirming subscription because it's only valid for http(s) and email subscriptions.
|
141
|
+
# Since we don't want to setup an email box or HTTP server to recive the token, we can't really simulate this
|
142
|
+
# def test_10_confirm_subscription
|
143
|
+
# response = @sns.confirm_subscription(@@topic_arn, 'SomeToken')
|
144
|
+
# assert_not_null(response)
|
145
|
+
# end
|
146
|
+
|
147
|
+
def test_30_delete_topic
|
148
|
+
response = @sns.delete_topic(@@topic_arn)
|
149
|
+
assert_not_nil(response)
|
150
|
+
sleep(1)
|
151
|
+
assert(!@sns.list_topics.collect{|topic| topic[:arn] }.include?(@@topic_arn))
|
152
|
+
end
|
153
|
+
end
|