Revision cd6ada1d pithos/api/tests.py

b/pithos/api/tests.py
169 169
            self._assert_json(data, type, size)
170 170
    
171 171
    def _assert_json(self, data, type, size):
172
        print '#', data
173 172
        convert = lambda s: s.lower()
174 173
        info = [convert(elem) for elem in self.extended[type]]
175 174
        self.assertTrue(len(data) <= size)
......
191 190
        self.assertTrue(len(entities) <= size)
192 191
        for e in entities:
193 192
            for item in info:
194
                print '#', item
195 193
                self.assertTrue(e.hasAttribute(item))
196 194
    
197 195
    def assert_raises_fault(self, status, callableObj, *args, **kwargs):
......
424 422
        self.containers = ['apples', 'bananas', 'kiwis', 'oranges', 'pears']
425 423
        for item in self.containers:
426 424
            self.client.create_container(item)
427
    
428
    def test_update_meta(self):
429
        meta = {'test':'test', 'tost':'tost'}
425
        
426
        #keep track of initial account groups
427
        self.initial_groups = self.client.retrieve_account_groups()
428
        
429
        #keep track of initial account meta
430
        self.initial_meta = self.client.retrieve_account_metadata(restricted=True)
431
        
432
        meta = {'foo':'bar'}
430 433
        self.client.update_account_metadata(**meta)
431
        self.assertEqual(meta, self.client.retrieve_account_metadata(restricted=True))
434
        self.updated_meta = self.initial_meta.update(meta)
432 435
    
436
    def tearDown(self):
437
        #delete additionally created meta
438
        l = []
439
        for m in self.client.retrieve_account_metadata(restricted=True):
440
            if m not in self.initial_meta:
441
                l.append(m)
442
        self.client.delete_account_metadata(l)
443
        
444
        #delete additionally created groups
445
        l = []
446
        for g in self.client.retrieve_account_groups():
447
            if g not in self.initial_groups:
448
                l.append(g)
449
        self.client.unset_account_groups(l)
450
        
451
        #print '#', self.client.retrieve_account_groups()
452
        #print '#', self.client.retrieve_account_metadata(restricted=True)
453
        BaseTestCase.tearDown(self)
454
    
455
    def test_update_meta(self):
456
        with AssertMappingInvariant(self.client.retrieve_account_groups):
457
            meta = {'test':'test', 'tost':'tost'}
458
            self.client.update_account_metadata(**meta)
459
            
460
            meta.update(self.initial_meta)
461
            self.assertEqual(meta,
462
                             self.client.retrieve_account_metadata(
463
                                restricted=True))
464
        
433 465
    def test_invalid_account_update_meta(self):
434
        meta = {'HTTP_X_ACCOUNT_META_TEST':'test',
435
               'HTTP_X_ACCOUNT_META_TOST':'tost'}
466
        meta = {'test':'test', 'tost':'tost'}
436 467
        self.assert_raises_fault(401,
437 468
                                 self.invalid_client.update_account_metadata,
438 469
                                 **meta)
439

  
470
    
471
    def test_reset_meta(self):
472
        with AssertMappingInvariant(self.client.retrieve_account_groups):
473
            meta = {'test':'test', 'tost':'tost'}
474
            self.client.update_account_metadata(**meta)
475
            
476
            meta = {'test':'test33'}
477
            self.client.reset_account_metadata(**meta)
478
            
479
            self.assertEqual(meta, self.client.retrieve_account_metadata(restricted=True))
480
    
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)
487
    
488
    def test_set_account_groups(self):
489
        with AssertMappingInvariant(self.client.retrieve_account_metadata):
490
            groups = {'pithosdev':'verigak,gtsouk,chazapis'}
491
            self.client.set_account_groups(**groups)
492
            
493
            self.assertEqual(groups, self.client.retrieve_account_groups())
494
            
495
            more_groups = {'clientsdev':'pkanavos,mvasilak'}
496
            self.client.set_account_groups(**more_groups)
497
            
498
            groups.update(more_groups)
499
            self.assertEqual(groups, self.client.retrieve_account_groups())
500
    
501
    def test_reset_account_groups(self):
502
        with AssertMappingInvariant(self.client.retrieve_account_metadata):
503
            groups = {'pithosdev':'verigak,gtsouk,chazapis',
504
                      'clientsdev':'pkanavos,mvasilak'}
505
            self.client.set_account_groups(**groups)
506
            
507
            self.assertEqual(groups, self.client.retrieve_account_groups())
508
            
509
            groups = {'pithosdev':'verigak,gtsouk,chazapis, papagian'}
510
            self.client.reset_account_groups(**groups)
511
            
512
            self.assertTrue(groups, self.client.retrieve_account_groups())
513
    
514
    def test_delete_account_groups(self):
515
        with AssertMappingInvariant(self.client.retrieve_account_metadata):
516
            groups = {'pithosdev':'verigak,gtsouk,chazapis',
517
                      'clientsdev':'pkanavos,mvasilak'}
518
            self.client.set_account_groups(**groups)
519
            
520
            self.client.unset_account_groups(groups.keys())
521
            
522
            self.assertEqual({}, self.client.retrieve_account_groups())
523
    
440 524
class ContainerHead(BaseTestCase):
441 525
    def setUp(self):
442 526
        BaseTestCase.setUp(self)
......
1198 1282
                'content_range':'%s' %range}
1199 1283
        if content_length:
1200 1284
            args['content_length'] = content_length
1285
        
1201 1286
        status = self.client.update_object(self.containers[0], self.obj['name'],
1202 1287
                                  StringIO(data), **args)[0]
1203 1288
        
......
1223 1308
    def test_update_object_invalid_range(self):
1224 1309
        with AssertContentInvariant(self.client.retrieve_object,
1225 1310
                                    self.containers[0], self.obj['name']):
1226
            self.test_update_object(499, 0, True)
1311
            self.assert_raises_fault(416, self.test_update_object, 499, 0, True)
1227 1312
    
1228 1313
    def test_update_object_invalid_range_and_length(self):
1229 1314
        with AssertContentInvariant(self.client.retrieve_object,
1230 1315
                                    self.containers[0], self.obj['name']):
1231
            self.test_update_object(499, 0, True, -1)
1316
            self.assert_raises_fault(416, self.test_update_object, 499, 0, True,
1317
                                     -1)
1232 1318
    
1233 1319
    def test_update_object_invalid_range_with_no_content_length(self):
1234 1320
        with AssertContentInvariant(self.client.retrieve_object,
1235 1321
                                    self.containers[0], self.obj['name']):
1236
            self.test_update_object(499, 0, True, content_length = None)
1322
            self.assert_raises_fault(416, self.test_update_object, 499, 0, True,
1323
                                     content_length = None)
1237 1324
    
1238 1325
    def test_update_object_out_of_limits(self):    
1239 1326
        with AssertContentInvariant(self.client.retrieve_object,
......
1300 1387
    def __exit__(self, type, value, tb):
1301 1388
        map = self.callable(*self.args, **self.kwargs)
1302 1389
        for k in self.map.keys():
1303
            if is_date(map[k]):
1390
            if is_date(self.map[k]):
1304 1391
                continue
1305 1392
            assert map[k] == self.map[k]
1306 1393

  

Also available in: Unified diff