ruby-atmos 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +8 -0
- data/README +129 -0
- data/Rakefile +94 -0
- data/lib/atmos/attributes.rb +545 -0
- data/lib/atmos/exceptions.rb +28 -0
- data/lib/atmos/object.rb +263 -0
- data/lib/atmos/parser.rb +110 -0
- data/lib/atmos/request.rb +188 -0
- data/lib/atmos/rest.rb +254 -0
- data/lib/atmos/store.rb +209 -0
- data/lib/atmos/util.rb +40 -0
- data/lib/atmos/version.rb +12 -0
- data/test/credentials.rb +141 -0
- data/test/esutest.rb +499 -0
- data/test/files/SmallImageForTest.iso +0 -0
- data/test/files/dragaf-tiny-from-vsphere.ova +0 -0
- data/test/files/something.txt +1 -0
- data/test/request_test.rb +50 -0
- data/test/suite.rb +9 -0
- data/test/suite_noproxy.rb +12 -0
- data/test/suite_proxy.rb +14 -0
- data/test/test_acl.rb +283 -0
- data/test/test_metadata.rb +162 -0
- data/test/test_object_create.rb +152 -0
- data/test/test_object_misc.rb +80 -0
- data/test/test_object_read.rb +114 -0
- data/test/test_object_update.rb +58 -0
- data/test/test_store.rb +125 -0
- data/test/test_util.rb +58 -0
- metadata +164 -0
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
binary isn't happy, is it?
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require File.dirname(__FILE__) + '/../lib/atmos'
|
4
|
+
|
5
|
+
|
6
|
+
class AtmosUtilTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def dont_test_signature_calculation
|
9
|
+
headers = {}
|
10
|
+
|
11
|
+
verb = 'post'
|
12
|
+
uid = '6039ac182f194e15b9261d73ce044939/user1'
|
13
|
+
url = "https://mgmt.atmosonline.com/rest/objects"
|
14
|
+
secret = 'LJLuryj6zs8ste6Y3jTGQp71xq0='
|
15
|
+
|
16
|
+
headers['Date'] = 'Thu, 05 Jun 2008 16:38:19 GMT'
|
17
|
+
headers['Content-Type'] = 'application/octet-stream'
|
18
|
+
headers['x-emc-date'] = 'Thu, 05 Jun 2008 16:38:19 GMT'
|
19
|
+
headers['x-emc-groupacl'] = 'other=NONE'
|
20
|
+
headers['x-emc-listable-meta'] = 'part4/part7/part8=quick'
|
21
|
+
headers['x-emc-meta'] = 'part1=buy'
|
22
|
+
headers['x-emc-uid'] = uid
|
23
|
+
headers['x-emc-useracl'] = 'john=FULL_CONTROL,mary=WRITE'
|
24
|
+
|
25
|
+
assert_equal('WHJo1MFevMnK4jCthJ974L3YHoo=', Atmos::Request::calculate_signature(verb, secret, url, headers))
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
def test_something_or_other
|
30
|
+
|
31
|
+
|
32
|
+
store = Atmos::Store.new(:url => 'https://10.5.113.71',
|
33
|
+
:uid =>'69eb3dc3bf9746f895d1ce12ae1d9589/dragaf-test',
|
34
|
+
:secret => 'p97mki4AkiAyVi+/7QpdxFAU/jY=',
|
35
|
+
:unsupported => true
|
36
|
+
)
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def test_http_bad_signature
|
42
|
+
store = Atmos::Store.new(:url => 'http://10.5.113.71',
|
43
|
+
:uid => '69eb3dc3bf9746f895d1ce12ae1d9589/dragaf-test',
|
44
|
+
:secret => 'p97mki4AkiAyVi+/7QpdxFAU/jY=',
|
45
|
+
:unsupported => true
|
46
|
+
)
|
47
|
+
print "#{store.server_version}\n"
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/test/suite.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/test_util'
|
4
|
+
require File.dirname(__FILE__) + '/test_acl'
|
5
|
+
require File.dirname(__FILE__) + '/test_metadata'
|
6
|
+
require File.dirname(__FILE__) + '/test_object_create'
|
7
|
+
require File.dirname(__FILE__) + '/test_object_update'
|
8
|
+
require File.dirname(__FILE__) + '/test_object_misc'
|
9
|
+
require File.dirname(__FILE__) + '/test_store'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/credentials'
|
3
|
+
|
4
|
+
Atmos::Test::Util.use_proxy = false
|
5
|
+
puts "testing against: #{Atmos::Test::Util.server}"
|
6
|
+
|
7
|
+
require File.dirname(__FILE__) + '/test_util'
|
8
|
+
require File.dirname(__FILE__) + '/test_acl'
|
9
|
+
require File.dirname(__FILE__) + '/test_metadata'
|
10
|
+
require File.dirname(__FILE__) + '/test_object_create'
|
11
|
+
require File.dirname(__FILE__) + '/test_object_misc'
|
12
|
+
require File.dirname(__FILE__) + '/test_store'
|
data/test/suite_proxy.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/credentials'
|
3
|
+
|
4
|
+
Atmos::Test::Util.use_proxy = true
|
5
|
+
puts "testing against: #{Atmos::Test::Util.server}"
|
6
|
+
|
7
|
+
require File.dirname(__FILE__) + '/test_util'
|
8
|
+
require File.dirname(__FILE__) + '/test_acl'
|
9
|
+
require File.dirname(__FILE__) + '/test_metadata'
|
10
|
+
require File.dirname(__FILE__) + '/test_object_create'
|
11
|
+
require File.dirname(__FILE__) + '/test_object_misc'
|
12
|
+
require File.dirname(__FILE__) + '/test_store'
|
13
|
+
|
14
|
+
|
data/test/test_acl.rb
ADDED
@@ -0,0 +1,283 @@
|
|
1
|
+
require 'credentials'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'atmos'
|
4
|
+
|
5
|
+
|
6
|
+
class AtmosACLCreateTest < Test::Unit::TestCase
|
7
|
+
@cleanup = []
|
8
|
+
|
9
|
+
|
10
|
+
def initialize(id)
|
11
|
+
super(id)
|
12
|
+
@cleanup = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@s = Atmos::Test::Util.static_store
|
17
|
+
@obj = @s.create()
|
18
|
+
@cleanup.push(@obj)
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
@cleanup.each do |obj|
|
23
|
+
obj.delete
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_create_acl_nil_obj
|
28
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
29
|
+
Atmos::ACL.new(nil, Atmos::ACL::USER)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_create_acl_nil_type
|
34
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
35
|
+
Atmos::ACL.new(@obj, nil)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_create_acl_bad_type
|
40
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
41
|
+
Atmos::ACL.new(@obj, 42)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_create_acl_invalid_options
|
46
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
47
|
+
Atmos::ACL.new(@obj, 'group')
|
48
|
+
end
|
49
|
+
|
50
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
51
|
+
Atmos::ACL.new(@obj, 'user')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_create_acl_valid_options
|
56
|
+
acl = Atmos::ACL.new(@obj, Atmos::ACL::GROUP)
|
57
|
+
assert_equal('x-emc-groupacl', acl.header_name)
|
58
|
+
assert(!acl.user?)
|
59
|
+
assert(acl.group?)
|
60
|
+
|
61
|
+
acl = Atmos::ACL.new(@obj, Atmos::ACL::USER)
|
62
|
+
assert_equal('x-emc-useracl', acl.header_name)
|
63
|
+
assert(acl.user?)
|
64
|
+
assert(!acl.group?)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
class AtmosACLUpdateTest < Test::Unit::TestCase
|
71
|
+
@cleanup = []
|
72
|
+
|
73
|
+
def initialize(id)
|
74
|
+
super(id)
|
75
|
+
@cleanup = []
|
76
|
+
end
|
77
|
+
|
78
|
+
def setup
|
79
|
+
@s = Atmos::Store.new(:url => Atmos::Test::Util.url,
|
80
|
+
:uid => "#{Atmos::Test::Util.tenant}/#{Atmos::Test::Util.user}",
|
81
|
+
:secret => Atmos::Test::Util.secret)
|
82
|
+
@obj = @s.create()
|
83
|
+
@cleanup.push(@obj)
|
84
|
+
end
|
85
|
+
|
86
|
+
def teardown
|
87
|
+
@cleanup.each do |obj|
|
88
|
+
obj.delete
|
89
|
+
end
|
90
|
+
$stdout.flush
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_add_user_acl_with_bad_value_symbol
|
94
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
95
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :whatever
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_add_user_acl_with_bad_value_string
|
100
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
101
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = 'read'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_add_group_acl_with_bad_value_symbol
|
106
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
107
|
+
@obj.user_acl[Atmos::Test::Util.other_group] = :whatever
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_add_group_acl_with_bad_value_string
|
112
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
113
|
+
@obj.user_acl[Atmos::Test::Util.other_group] = 'write'
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_add_user_acl_with_bad_user
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_add_group_acl_with_bad_group
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_add_user_acl_good_values
|
124
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :read
|
125
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
126
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
127
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
128
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
129
|
+
assert_equal(:read, @obj.user_acl[Atmos::Test::Util.other_user])
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_add_group_acl_good_values
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_change_default_user_permissions
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_change_default_group_permissions
|
139
|
+
assert_equal({Atmos::Test::Util.group => :none}, @obj.group_acl)
|
140
|
+
@obj.group_acl[Atmos::Test::Util.group] = :read
|
141
|
+
assert_equal({Atmos::Test::Util.group => :read}, @obj.group_acl)
|
142
|
+
assert(@obj.group_acl.has_key?(Atmos::Test::Util.group))
|
143
|
+
assert_equal(:read, @obj.group_acl[Atmos::Test::Util.group])
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_change_secondary_user_permissions
|
147
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :read
|
148
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
149
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
150
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
151
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
152
|
+
assert_equal(:read, @obj.user_acl[Atmos::Test::Util.other_user])
|
153
|
+
|
154
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :none
|
155
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
156
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
157
|
+
assert(!@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
158
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
159
|
+
|
160
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :full
|
161
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :full}, @obj.user_acl)
|
162
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
163
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
164
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
165
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.other_user])
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_change_secondary_group_permissions
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_delete_user_via_no_permissions
|
172
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :read
|
173
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
174
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
175
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
176
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
177
|
+
assert_equal(:read, @obj.user_acl[Atmos::Test::Util.other_user])
|
178
|
+
|
179
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :none
|
180
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
181
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
182
|
+
assert(!@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
183
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_delete_group_via_no_permissions
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_delete_user_via_delete
|
190
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :read
|
191
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
192
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
193
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
194
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
195
|
+
assert_equal(:read, @obj.user_acl[Atmos::Test::Util.other_user])
|
196
|
+
|
197
|
+
@obj.user_acl.delete(Atmos::Test::Util.other_user)
|
198
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
199
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
200
|
+
assert(!@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
201
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_delete_group_via_delete
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_clear_users
|
208
|
+
@obj.user_acl[Atmos::Test::Util.other_user] = :read
|
209
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
210
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
211
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
212
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
213
|
+
assert_equal(:read, @obj.user_acl[Atmos::Test::Util.other_user])
|
214
|
+
|
215
|
+
@obj.user_acl.clear
|
216
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
217
|
+
assert(@obj.user_acl.has_key?(Atmos::Test::Util.user))
|
218
|
+
assert(!@obj.user_acl.has_key?(Atmos::Test::Util.other_user))
|
219
|
+
assert_equal(:full, @obj.user_acl[Atmos::Test::Util.user])
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_clear_groups
|
223
|
+
end
|
224
|
+
|
225
|
+
def test_bad_merge_users
|
226
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
227
|
+
@obj.user_acl.merge({Atmos::Test::Util.other_user => 'foo'})
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def test_merge_users
|
232
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
233
|
+
|
234
|
+
rv = @obj.user_acl.merge({Atmos::Test::Util.other_user => :read})
|
235
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, rv)
|
236
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_merge_groups
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_bad_merge_bang_users
|
243
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
244
|
+
@obj.user_acl.merge!({Atmos::Test::Util.other_user => 'foo'})
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_merge_bang_users
|
249
|
+
@obj.user_acl.merge!({Atmos::Test::Util.other_user => :read})
|
250
|
+
assert_equal({Atmos::Test::Util.user => :full, Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_bad_merge_bang_groups
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_merge_bang_groups
|
257
|
+
end
|
258
|
+
|
259
|
+
def test_bad_replace_users
|
260
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
261
|
+
@obj.user_acl.replace({Atmos::Test::Util.other_user => 'foo'})
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
def test_replace_users
|
266
|
+
assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
|
267
|
+
|
268
|
+
@obj.user_acl.replace({Atmos::Test::Util.other_user => :read})
|
269
|
+
assert_equal({Atmos::Test::Util.other_user => :read}, @obj.user_acl)
|
270
|
+
end
|
271
|
+
|
272
|
+
def test_replace_groups
|
273
|
+
end
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
# def test_give_away_access
|
278
|
+
# @obj.user_acl[Atmos::Test::Util.user] = :read
|
279
|
+
# assert_equal({Atmos::Test::Util.user => :read}, @obj.user_acl)
|
280
|
+
# end
|
281
|
+
|
282
|
+
|
283
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
require 'credentials'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'atmos'
|
4
|
+
|
5
|
+
|
6
|
+
class AtmosMetadataTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def initialize(id)
|
9
|
+
super(id)
|
10
|
+
@cleanup = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@s = Atmos::Test::Util.static_store
|
15
|
+
@obj = @s.create()
|
16
|
+
@cleanup.push(@obj)
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def teardown
|
21
|
+
@cleanup.each do |obj|
|
22
|
+
obj.delete
|
23
|
+
end
|
24
|
+
$stdout.flush
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def test_default_metadata
|
29
|
+
assert_equal({}, @obj.metadata)
|
30
|
+
assert_equal({}, @obj.listable_metadata)
|
31
|
+
assert_not_equal({}, @obj.system_metadata)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_add_metadata
|
35
|
+
assert_equal({}, @obj.metadata)
|
36
|
+
@obj.metadata['newmd'] = 'value'
|
37
|
+
assert_equal({'newmd' => 'value'}, @obj.metadata)
|
38
|
+
assert(@obj.metadata.has_key?('newmd'))
|
39
|
+
assert_equal('value', @obj.metadata['newmd'])
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_add_metadata_value_nil
|
43
|
+
assert_equal({}, @obj.metadata)
|
44
|
+
@obj.metadata['newmd'] = nil
|
45
|
+
assert_equal({'newmd' => ""}, @obj.metadata)
|
46
|
+
assert(@obj.metadata.has_key?('newmd'))
|
47
|
+
assert_equal("", @obj.metadata['newmd'])
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_add_metadata_value_boolean
|
51
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
52
|
+
@obj.metadata['newmd'] = true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_add_metadata_value_symbol
|
57
|
+
assert_raise Atmos::Exceptions::ArgumentException do
|
58
|
+
@obj.metadata['newmd'] = :value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_add_listable_metadata
|
63
|
+
assert_equal({}, @obj.listable_metadata)
|
64
|
+
@obj.listable_metadata['newmd'] = 'value'
|
65
|
+
assert_equal({'newmd' => 'value'}, @obj.listable_metadata)
|
66
|
+
assert(@obj.listable_metadata.has_key?('newmd'))
|
67
|
+
assert_equal('value', @obj.listable_metadata['newmd'])
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_modify_metadata
|
71
|
+
assert_equal({}, @obj.metadata)
|
72
|
+
@obj.metadata['newmd'] = 'value'
|
73
|
+
assert_equal({'newmd' => 'value'}, @obj.metadata)
|
74
|
+
|
75
|
+
@obj.metadata['newmd'] = 'newvalue'
|
76
|
+
assert_equal({'newmd' => 'newvalue'}, @obj.metadata)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_modify_listable_metadata
|
80
|
+
assert_equal({}, @obj.listable_metadata)
|
81
|
+
@obj.listable_metadata['newmd'] = 'value'
|
82
|
+
assert_equal({'newmd' => 'value'}, @obj.listable_metadata)
|
83
|
+
|
84
|
+
@obj.listable_metadata['newmd'] = 'newvalue'
|
85
|
+
assert_equal({'newmd' => 'newvalue'}, @obj.listable_metadata)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_delete_metadata
|
89
|
+
assert_equal({}, @obj.metadata)
|
90
|
+
@obj.metadata['fleur'] = 'dragan'
|
91
|
+
@obj.metadata['john'] = 'kilroy'
|
92
|
+
assert_equal({'fleur' => 'dragan', 'john' => 'kilroy'}, @obj.metadata)
|
93
|
+
|
94
|
+
@obj.metadata.delete('john')
|
95
|
+
assert_equal({'fleur' => 'dragan'}, @obj.metadata)
|
96
|
+
|
97
|
+
@obj.metadata.delete('fleur')
|
98
|
+
assert_equal({}, @obj.metadata)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_clear_metadata
|
102
|
+
assert_equal({}, @obj.metadata)
|
103
|
+
@obj.metadata['fleur'] = 'dragan'
|
104
|
+
@obj.metadata['john'] = 'kilroy'
|
105
|
+
assert_equal({'fleur' => 'dragan', 'john' => 'kilroy'}, @obj.metadata)
|
106
|
+
|
107
|
+
@obj.metadata.clear
|
108
|
+
assert_equal({}, @obj.metadata)
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_delete_listable_metadata
|
112
|
+
assert_equal({}, @obj.listable_metadata)
|
113
|
+
@obj.listable_metadata['fleur'] = 'dragan'
|
114
|
+
@obj.listable_metadata['john'] = 'kilroy'
|
115
|
+
assert_equal({'fleur' => 'dragan', 'john' => 'kilroy'}, @obj.listable_metadata)
|
116
|
+
|
117
|
+
@obj.listable_metadata.delete('john')
|
118
|
+
assert_equal({'fleur' => 'dragan'}, @obj.listable_metadata)
|
119
|
+
|
120
|
+
@obj.listable_metadata.delete('fleur')
|
121
|
+
assert_equal({}, @obj.listable_metadata)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_clear_listable_metadata
|
125
|
+
assert_equal({}, @obj.listable_metadata)
|
126
|
+
@obj.listable_metadata['fleur'] = 'dragan'
|
127
|
+
@obj.listable_metadata['john'] = 'kilroy'
|
128
|
+
assert_equal({'fleur' => 'dragan', 'john' => 'kilroy'}, @obj.listable_metadata)
|
129
|
+
|
130
|
+
@obj.listable_metadata.clear
|
131
|
+
assert_equal({}, @obj.listable_metadata)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_get_system_metadata
|
135
|
+
sys = @obj.system_metadata
|
136
|
+
assert_not_nil(sys)
|
137
|
+
assert(!sys.empty?)
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_add_system_metadata
|
141
|
+
assert_raise Atmos::Exceptions::NotImplementedException do
|
142
|
+
@obj.system_metadata['api'] = 'ruby'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_modify_system_metadata
|
147
|
+
assert_raise Atmos::Exceptions::NotImplementedException do
|
148
|
+
@obj.system_metadata['uid'] = 'foo'
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_delete_system_metadata
|
153
|
+
assert_raise Atmos::Exceptions::NotImplementedException do
|
154
|
+
@obj.system_metadata.delete('uid')
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|