Revision 7812e1f9 pithos/api/tests.py

b/pithos/api/tests.py
32 32
# or implied, of GRNET S.A.
33 33

  
34 34
from pithos.lib.client import Pithos_Client, Fault
35
import unittest
36 35
from django.utils import simplejson as json
37 36
from xml.dom import minidom
38 37
from StringIO import StringIO
38
import unittest
39 39
import time as _time
40 40
import types
41 41
import hashlib
......
267 267
        self.containers = ['apples', 'bananas', 'kiwis', 'oranges', 'pears']
268 268
        for item in self.containers:
269 269
            self.client.create_container(item)
270
        
271
                #keep track of initial account groups
272
        self.initial_groups = self.client.retrieve_account_groups()
273
        
274
        #keep track of initial account meta
275
        self.initial_meta = self.client.retrieve_account_metadata(restricted=True)
276
        
277
        meta = {'foo':'bar'}
278
        self.client.update_account_metadata(**meta)
279
        self.updated_meta = self.initial_meta.update(meta)
270 280
    
271 281
    def tearDown(self):
272
        self.client.delete_account_metadata(['foo'])
282
        #delete additionally created meta
283
        l = []
284
        for m in self.client.retrieve_account_metadata(restricted=True):
285
            if m not in self.initial_meta:
286
                l.append(m)
287
        self.client.delete_account_metadata(l)
288
        
289
        #delete additionally created groups
290
        l = []
291
        for g in self.client.retrieve_account_groups():
292
            if g not in self.initial_groups:
293
                l.append(g)
294
        self.client.unset_account_groups(l)
295
        
296
        #print '#', self.client.retrieve_account_groups()
297
        #print '#', self.client.retrieve_account_metadata(restricted=True)
273 298
        BaseTestCase.tearDown(self)
274 299
    
275 300
    def test_get_account_meta(self):
......
293 318
        past = t - datetime.timedelta(minutes=-15)
294 319
        past = int(_time.mktime(past.timetuple()))
295 320
        
296
        meta = {'foo':'bar'}
321
        meta = {'premium':True}
297 322
        self.client.update_account_metadata(**meta)
298 323
        meta = self.client.retrieve_account_metadata(restricted=True,
299 324
                                                     until=past)
300
        self.assertTrue('foo' not in meta)
325
        self.assertTrue('premium' not in meta)
301 326
        
302 327
        meta = self.client.retrieve_account_metadata(restricted=True)
303
        self.assertTrue('foo' in meta)
328
        self.assertTrue('premium' in meta)
304 329
    
305 330
    def test_get_account_meta_until_invalid_date(self):
306
        meta = {'foo':'bar'}
331
        meta = {'premium':True}
307 332
        self.client.update_account_metadata(**meta)
308 333
        meta = self.client.retrieve_account_metadata(restricted=True,
309 334
                                                     until='kshfksfh')
310
        self.assertTrue('foo' in meta)
335
        self.assertTrue('premium' in meta)
311 336

  
312 337
class AccountGet(BaseTestCase):
313 338
    def setUp(self):
......
478 503
            
479 504
            self.assertEqual(meta, self.client.retrieve_account_metadata(restricted=True))
480 505
    
481
    #def test_delete_meta(self):
482
    #    with AssertMappingInvariant(self.client.reset_account_groups):
483
    #        meta = {'test':'test', 'tost':'tost'}
484
    #        self.client.update_account_metadata(**meta)
485
    #        
486
    #        self.client.delete_account_metadata(**meta)
506
    def test_delete_meta(self):
507
        with AssertMappingInvariant(self.client.retrieve_account_groups):
508
            meta = {'test':'test', 'tost':'tost'}
509
            self.client.update_account_metadata(**meta)
510
            
511
            self.client.delete_account_metadata(meta.keys())
512
            
513
            account_meta = self.client.retrieve_account_metadata(restricted=True)
514
            for m in meta:
515
                self.assertTrue(m not in account_meta.keys())
487 516
    
488 517
    def test_set_account_groups(self):
489 518
        with AssertMappingInvariant(self.client.retrieve_account_metadata):
......
1131 1160
        #assert content-type
1132 1161
        self.assertEqual(h['content-type'], o['meta']['content_type'])
1133 1162
    
1163
    def test_upload_with_name_containing_slash(self):
1164
        name = '/%s' % o_names[0]
1165
        meta = {'test':'test1'}
1166
        o = self.upload_random_data(self.container, name, **meta)
1167
        
1168
        self.assertEqual(o['data'],
1169
                         self.client.retrieve_object(self.container, name))
1170
        
1171
        self.assertTrue(name in self.client.list_objects(self.container))
1172
    
1173
    def test_create_directory_marker(self):
1174
        self.client.create_directory_marker(self.container, 'foo')
1175
        meta = self.client.retrieve_object_metadata(self.container, 'foo')
1176
        self.assertEqual(meta['content-length'], '0')
1177
        self.assertEqual(meta['content-type'], 'application/directory')
1178

  
1134 1179
    def test_upload_unprocessable_entity(self):
1135 1180
        meta={'etag':'123', 'test':'test1'}
1136 1181
        
......
1165 1210
                                              self.obj['name'],
1166 1211
                                              self.containers[0],
1167 1212
                                              'testcopy',
1168
                                              **meta)[0]
1213
                                              meta)[0]
1169 1214
            
1170 1215
            #assert copy success
1171 1216
            self.assertEqual(status, 201)
......
1190 1235
                                             self.obj['name'],
1191 1236
                                             self.containers[1],
1192 1237
                                             'testcopy',
1193
                                             **meta)[0]
1238
                                             meta)[0]
1194 1239
            self.assertEqual(status, 201)
1195 1240
            
1196 1241
            # assert updated metadata
......
1207 1252
        #copy from invalid object
1208 1253
        meta = {'test':'testcopy'}
1209 1254
        self.assert_raises_fault(404, self.client.copy_object, self.containers[0],
1210
                                 'test.py', self.containers[1], 'testcopy',
1211
                                 **meta)
1255
                                 'test.py', self.containers[1], 'testcopy', meta)
1212 1256
        
1213 1257
        #copy from invalid container
1214 1258
        meta = {'test':'testcopy'}
1215 1259
        self.assert_raises_fault(404, self.client.copy_object, self.containers[1],
1216 1260
                                 self.obj['name'], self.containers[1],
1217
                                 'testcopy', **meta)
1261
                                 'testcopy', meta)
1218 1262
        
1219 1263

  
1220
class ObjectMove(ObjectCopy):
1264
class ObjectMove(BaseTestCase):
1265
    def setUp(self):
1266
        BaseTestCase.setUp(self)
1267
        self.account = 'test'
1268
        self.containers = ['c1', 'c2']
1269
        for c in self.containers:
1270
            self.client.create_container(c)
1271
        self.obj = self.upload_random_data(self.containers[0], o_names[0])
1272
    
1221 1273
    def test_move(self):
1222 1274
        #perform move
1223 1275
        meta = {'test':'testcopy'}
1224 1276
        src_path = os.path.join('/', self.containers[0], self.obj['name'])
1225 1277
        status = self.client.move_object(self.containers[0], self.obj['name'],
1226 1278
                                         self.containers[0], 'testcopy',
1227
                                         **meta)[0]
1279
                                         meta)[0]
1228 1280
        
1229 1281
        #assert successful move
1230 1282
        self.assertEqual(status, 201)

Also available in: Unified diff