Pep8 account and proxy server unit tests (10 of 12)
Change-Id: Ib83d164997b0d98be921c8b4857caa2429344aa4 Signed-off-by: Peter Portante <peter.portante@redhat.com>
This commit is contained in:
		@@ -32,7 +32,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
    """Test swift.account.server.AccountController"""
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        """Set up for testing swift.account.server.AccountController"""
 | 
			
		||||
        self.testdir = os.path.join(os.path.dirname(__file__), 'account_server')
 | 
			
		||||
        self.testdir = os.path.join(os.path.dirname(__file__),
 | 
			
		||||
                                    'account_server')
 | 
			
		||||
        self.controller = AccountController(
 | 
			
		||||
            {'devices': self.testdir, 'mount_check': 'false'})
 | 
			
		||||
 | 
			
		||||
@@ -46,24 +47,24 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_DELETE_not_found(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 404)
 | 
			
		||||
        self.assertTrue('X-Account-Status' not in resp.headers)
 | 
			
		||||
 | 
			
		||||
    def test_DELETE_empty(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers['X-Account-Status'], 'Deleted')
 | 
			
		||||
 | 
			
		||||
    def test_DELETE_not_empty(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -72,7 +73,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                                     'X-Bytes-Used': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        # We now allow deleting non-empty accounts
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
@@ -80,7 +81,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_DELETE_now_empty(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -89,7 +90,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                                     'X-Bytes-Used': '0',
 | 
			
		||||
                                     'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1',
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a/c1',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                     'X-Delete-Timestamp': '2',
 | 
			
		||||
@@ -99,7 +101,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers['X-Account-Status'], 'Deleted')
 | 
			
		||||
@@ -121,8 +123,9 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_DELETE_insufficient_storage(self):
 | 
			
		||||
        self.controller = AccountController({'devices': self.testdir})
 | 
			
		||||
        req = Request.blank('/sda-null/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda-null/p/a', environ={'REQUEST_METHOD': 'DELETE',
 | 
			
		||||
                                      'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 507)
 | 
			
		||||
 | 
			
		||||
@@ -153,7 +156,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_HEAD_empty_account(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'HEAD'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -201,7 +204,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                                     'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'HEAD',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '5'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '5'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers['x-account-container-count'], '2')
 | 
			
		||||
@@ -235,7 +238,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 400)
 | 
			
		||||
 | 
			
		||||
    def test_PUT_not_found(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a/c', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-PUT-Timestamp': normalize_timestamp(1),
 | 
			
		||||
                     'X-DELETE-Timestamp': normalize_timestamp(0),
 | 
			
		||||
                     'X-Object-Count': '1',
 | 
			
		||||
@@ -247,11 +251,11 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_PUT(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 201)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '1'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 202)
 | 
			
		||||
 | 
			
		||||
@@ -273,7 +277,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_PUT_GET_metadata(self):
 | 
			
		||||
        # Set metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(1),
 | 
			
		||||
                     'X-Account-Meta-Test': 'Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -283,7 +288,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
 | 
			
		||||
        # Set another metadata header, ensuring old one doesn't disappear
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(1),
 | 
			
		||||
                     'X-Account-Meta-Test2': 'Value2'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -294,7 +300,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test2'), 'Value2')
 | 
			
		||||
        # Update metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(3),
 | 
			
		||||
                     'X-Account-Meta-Test': 'New Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -304,7 +311,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
 | 
			
		||||
        # Send old update to metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(2),
 | 
			
		||||
                     'X-Account-Meta-Test': 'Old Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -314,7 +322,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
 | 
			
		||||
        # Remove metadata header (by setting it to empty)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(4),
 | 
			
		||||
                     'X-Account-Meta-Test': ''})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -338,12 +347,14 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 507)
 | 
			
		||||
 | 
			
		||||
    def test_POST_HEAD_metadata(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(1)})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 201)
 | 
			
		||||
        # Set metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(1),
 | 
			
		||||
                     'X-Account-Meta-Test': 'Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -353,7 +364,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'Value')
 | 
			
		||||
        # Update metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(3),
 | 
			
		||||
                     'X-Account-Meta-Test': 'New Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -363,7 +375,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
 | 
			
		||||
        # Send old update to metadata header
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(2),
 | 
			
		||||
                     'X-Account-Meta-Test': 'Old Value'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -373,7 +386,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        self.assertEquals(resp.status_int, 204)
 | 
			
		||||
        self.assertEquals(resp.headers.get('x-account-meta-test'), 'New Value')
 | 
			
		||||
        # Remove metadata header (by setting it to empty)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a', environ={'REQUEST_METHOD': 'POST'},
 | 
			
		||||
            headers={'X-Timestamp': normalize_timestamp(4),
 | 
			
		||||
                     'X-Account-Meta-Test': ''})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -455,7 +469,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_empty_account_plain(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
@@ -465,7 +479,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_empty_account_json(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a?format=json',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'PUT', 'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
                                     'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?format=json',
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
@@ -476,7 +491,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_empty_account_xml(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a?format=xml',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'PUT', 'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
                                     'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?format=xml',
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
@@ -486,14 +502,15 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                          'application/xml; charset=utf-8')
 | 
			
		||||
 | 
			
		||||
    def test_GET_over_limit(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a?limit=%d' %
 | 
			
		||||
            (ACCOUNT_LISTING_LIMIT + 1), environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a?limit=%d' % (ACCOUNT_LISTING_LIMIT + 1),
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 412)
 | 
			
		||||
 | 
			
		||||
    def test_GET_with_containers_plain(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -545,7 +562,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_with_containers_json(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -594,7 +611,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_with_containers_xml(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -675,7 +692,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'bytes'][0]
 | 
			
		||||
        self.assertEquals(node.firstChild.nodeValue, '2')
 | 
			
		||||
        self.assertEquals(listing[-1].nodeName, 'container')
 | 
			
		||||
        container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        container = [
 | 
			
		||||
            n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        self.assertEquals(sorted([n.nodeName for n in container]),
 | 
			
		||||
                          ['bytes', 'count', 'name'])
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'name'][0]
 | 
			
		||||
@@ -748,16 +766,17 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_limit_marker_plain(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        for c in xrange(5):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/c%d' % c,
 | 
			
		||||
                                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                                         'X-Object-Count': '2',
 | 
			
		||||
                                         'X-Bytes-Used': '3',
 | 
			
		||||
                                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/c%d' % c,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                         'X-Object-Count': '2',
 | 
			
		||||
                         'X-Bytes-Used': '3',
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?limit=3',
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
@@ -772,16 +791,17 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_limit_marker_json(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        for c in xrange(5):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/c%d' % c,
 | 
			
		||||
                                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                                         'X-Object-Count': '2',
 | 
			
		||||
                                         'X-Bytes-Used': '3',
 | 
			
		||||
                                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/c%d' % c,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                         'X-Object-Count': '2',
 | 
			
		||||
                         'X-Bytes-Used': '3',
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?limit=3&format=json',
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
@@ -801,16 +821,17 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_limit_marker_xml(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        for c in xrange(5):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/c%d' % c,
 | 
			
		||||
                                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                                         'X-Object-Count': '2',
 | 
			
		||||
                                         'X-Bytes-Used': '3',
 | 
			
		||||
                                         'X-Timestamp': normalize_timestamp(c)})
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/c%d' % c,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': str(c + 1),
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
                         'X-Object-Count': '2',
 | 
			
		||||
                         'X-Bytes-Used': '3',
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(c)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?limit=3&format=xml',
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
@@ -832,7 +853,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'bytes'][0]
 | 
			
		||||
        self.assertEquals(node.firstChild.nodeValue, '3')
 | 
			
		||||
        self.assertEquals(listing[-1].nodeName, 'container')
 | 
			
		||||
        container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        container = [
 | 
			
		||||
            n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        self.assertEquals(sorted([n.nodeName for n in container]),
 | 
			
		||||
                          ['bytes', 'count', 'name'])
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'name'][0]
 | 
			
		||||
@@ -861,7 +883,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'bytes'][0]
 | 
			
		||||
        self.assertEquals(node.firstChild.nodeValue, '3')
 | 
			
		||||
        self.assertEquals(listing[-1].nodeName, 'container')
 | 
			
		||||
        container = [n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        container = [
 | 
			
		||||
            n for n in listing[-1].childNodes if n.nodeName != '#text']
 | 
			
		||||
        self.assertEquals(sorted([n.nodeName for n in container]),
 | 
			
		||||
                          ['bytes', 'count', 'name'])
 | 
			
		||||
        node = [n for n in container if n.nodeName == 'name'][0]
 | 
			
		||||
@@ -873,7 +896,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_wildcard(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -890,7 +913,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_application_wildcard(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -907,7 +930,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_json(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -924,7 +947,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_xml(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -945,7 +968,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_conflicting(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -963,7 +986,7 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_accept_not_valid(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a/c1', environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                            headers={'X-Put-Timestamp': '1',
 | 
			
		||||
@@ -986,10 +1009,11 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_GET_prefix_delimiter_plain(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        for first in range(3):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/sub.%s' % first,
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/sub.%s' % first,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -998,7 +1022,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
            for second in range(3):
 | 
			
		||||
                req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                req = Request.blank(
 | 
			
		||||
                    '/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                    environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                    headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                             'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -1007,29 +1032,31 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                             'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
                req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?delimiter=.',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals(resp.body.strip().split('\n'), ['sub.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals(resp.body.strip().split('\n'),
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            resp.body.strip().split('\n'),
 | 
			
		||||
            ['sub.0', 'sub.0.', 'sub.1', 'sub.1.', 'sub.2', 'sub.2.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals(resp.body.strip().split('\n'),
 | 
			
		||||
            ['sub.1.0', 'sub.1.1', 'sub.1.2'])
 | 
			
		||||
                          ['sub.1.0', 'sub.1.1', 'sub.1.2'])
 | 
			
		||||
 | 
			
		||||
    def test_GET_prefix_delimiter_json(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
                'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        for first in range(3):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/sub.%s' % first,
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/sub.%s' % first,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -1038,7 +1065,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
            for second in range(3):
 | 
			
		||||
                req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                req = Request.blank(
 | 
			
		||||
                    '/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                    environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                    headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                             'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -1047,32 +1075,35 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                             'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
                req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?delimiter=.&format=json',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
 | 
			
		||||
                           for n in simplejson.loads(resp.body)], ['s:sub.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.&format=json',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
 | 
			
		||||
                           for n in simplejson.loads(resp.body)],
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            [n.get('name', 's:' + n.get('subdir', 'error'))
 | 
			
		||||
             for n in simplejson.loads(resp.body)],
 | 
			
		||||
            ['sub.0', 's:sub.0.', 'sub.1', 's:sub.1.', 'sub.2', 's:sub.2.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.&format=json',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
                            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
        self.assertEquals([n.get('name', 's:' + n.get('subdir', 'error'))
 | 
			
		||||
                           for n in simplejson.loads(resp.body)],
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            [n.get('name', 's:' + n.get('subdir', 'error'))
 | 
			
		||||
             for n in simplejson.loads(resp.body)],
 | 
			
		||||
            ['sub.1.0', 'sub.1.1', 'sub.1.2'])
 | 
			
		||||
 | 
			
		||||
    def test_GET_prefix_delimiter_xml(self):
 | 
			
		||||
        req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
 | 
			
		||||
            'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
                                                  'HTTP_X_TIMESTAMP': '0'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        for first in range(3):
 | 
			
		||||
            req = Request.blank('/sda1/p/a/sub.%s' % first,
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/sda1/p/a/sub.%s' % first,
 | 
			
		||||
                environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                         'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -1081,7 +1112,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                         'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
            req.get_response(self.controller)
 | 
			
		||||
            for second in range(3):
 | 
			
		||||
                req = Request.blank('/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                req = Request.blank(
 | 
			
		||||
                    '/sda1/p/a/sub.%s.%s' % (first, second),
 | 
			
		||||
                    environ={'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                    headers={'X-Put-Timestamp': '1',
 | 
			
		||||
                             'X-Delete-Timestamp': '0',
 | 
			
		||||
@@ -1089,7 +1121,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                             'X-Bytes-Used': '0',
 | 
			
		||||
                             'X-Timestamp': normalize_timestamp(0)})
 | 
			
		||||
                req.get_response(self.controller)
 | 
			
		||||
        req = Request.blank('/sda1/p/a?delimiter=.&format=xml',
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a?delimiter=.&format=xml',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
@@ -1103,7 +1136,8 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                    if node2.nodeName == 'name':
 | 
			
		||||
                        listing.append(node2.firstChild.nodeValue)
 | 
			
		||||
        self.assertEquals(listing, ['s:sub.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.&delimiter=.&format=xml',
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a?prefix=sub.&delimiter=.&format=xml',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
@@ -1116,9 +1150,11 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
                for node2 in node1.childNodes:
 | 
			
		||||
                    if node2.nodeName == 'name':
 | 
			
		||||
                        listing.append(node2.firstChild.nodeValue)
 | 
			
		||||
        self.assertEquals(listing,
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            listing,
 | 
			
		||||
            ['sub.0', 's:sub.0.', 'sub.1', 's:sub.1.', 'sub.2', 's:sub.2.'])
 | 
			
		||||
        req = Request.blank('/sda1/p/a?prefix=sub.1.&delimiter=.&format=xml',
 | 
			
		||||
        req = Request.blank(
 | 
			
		||||
            '/sda1/p/a?prefix=sub.1.&delimiter=.&format=xml',
 | 
			
		||||
            environ={'REQUEST_METHOD': 'GET'})
 | 
			
		||||
        resp = req.get_response(self.controller)
 | 
			
		||||
        self.assertEquals(resp.status_int, 200)
 | 
			
		||||
@@ -1369,8 +1405,9 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
        errbuf = StringIO()
 | 
			
		||||
        outbuf = StringIO()
 | 
			
		||||
        self.controller = AccountController(
 | 
			
		||||
                {'devices': self.testdir, 'mount_check': 'false',
 | 
			
		||||
                 'replication_server': 'false'})
 | 
			
		||||
            {'devices': self.testdir,
 | 
			
		||||
             'mount_check': 'false',
 | 
			
		||||
             'replication_server': 'false'})
 | 
			
		||||
 | 
			
		||||
        def start_response(*args):
 | 
			
		||||
            """Sends args to outbuf"""
 | 
			
		||||
 
 | 
			
		||||
@@ -107,24 +107,24 @@ def setup():
 | 
			
		||||
    obj2lis = listen(('localhost', 0))
 | 
			
		||||
    _test_sockets = \
 | 
			
		||||
        (prolis, acc1lis, acc2lis, con1lis, con2lis, obj1lis, obj2lis)
 | 
			
		||||
    with closing(GzipFile(os.path.join(_testdir, 'account.ring.gz'), 'wb')) \
 | 
			
		||||
            as f:
 | 
			
		||||
    account_ring_path = os.path.join(_testdir, 'account.ring.gz')
 | 
			
		||||
    with closing(GzipFile(account_ring_path, 'wb')) as f:
 | 
			
		||||
        pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
 | 
			
		||||
                    [{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
 | 
			
		||||
                      'port': acc1lis.getsockname()[1]},
 | 
			
		||||
                     {'id': 1, 'zone': 1, 'device': 'sdb1', 'ip': '127.0.0.1',
 | 
			
		||||
                      'port': acc2lis.getsockname()[1]}], 30),
 | 
			
		||||
                    f)
 | 
			
		||||
    with closing(GzipFile(os.path.join(_testdir, 'container.ring.gz'), 'wb')) \
 | 
			
		||||
             as f:
 | 
			
		||||
    container_ring_path = os.path.join(_testdir, 'container.ring.gz')
 | 
			
		||||
    with closing(GzipFile(container_ring_path, 'wb')) as f:
 | 
			
		||||
        pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
 | 
			
		||||
                    [{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
 | 
			
		||||
                      'port': con1lis.getsockname()[1]},
 | 
			
		||||
                     {'id': 1, 'zone': 1, 'device': 'sdb1', 'ip': '127.0.0.1',
 | 
			
		||||
                      'port': con2lis.getsockname()[1]}], 30),
 | 
			
		||||
                    f)
 | 
			
		||||
    with closing(GzipFile(os.path.join(_testdir, 'object.ring.gz'), 'wb')) \
 | 
			
		||||
            as f:
 | 
			
		||||
    object_ring_path = os.path.join(_testdir, 'object.ring.gz')
 | 
			
		||||
    with closing(GzipFile(object_ring_path, 'wb')) as f:
 | 
			
		||||
        pickle.dump(ring.RingData([[0, 1, 0, 1], [1, 0, 1, 0]],
 | 
			
		||||
                    [{'id': 0, 'zone': 0, 'device': 'sda1', 'ip': '127.0.0.1',
 | 
			
		||||
                      'port': obj1lis.getsockname()[1]},
 | 
			
		||||
@@ -171,7 +171,8 @@ def setup():
 | 
			
		||||
    fd.flush()
 | 
			
		||||
    headers = readuntil2crlfs(fd)
 | 
			
		||||
    exp = 'HTTP/1.1 201'
 | 
			
		||||
    assert headers[:len(exp)] == exp, "Expected '%s', encountered '%s'" % (exp, headers[:len(exp)])
 | 
			
		||||
    assert headers[:len(exp)] == exp, "Expected '%s', encountered '%s'" % (
 | 
			
		||||
        exp, headers[:len(exp)])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def teardown():
 | 
			
		||||
@@ -349,7 +350,7 @@ class TestController(unittest.TestCase):
 | 
			
		||||
            # 'container_count' changed from 0 to None
 | 
			
		||||
            cache_key = get_account_memcache_key(self.account)
 | 
			
		||||
            account_info = {'status': 404,
 | 
			
		||||
                            'container_count': None, # internally keep None
 | 
			
		||||
                            'container_count': None,  # internally keep None
 | 
			
		||||
                            'total_object_count': None,
 | 
			
		||||
                            'bytes': None,
 | 
			
		||||
                            'meta': {}}
 | 
			
		||||
@@ -417,8 +418,8 @@ class TestController(unittest.TestCase):
 | 
			
		||||
        with save_globals():
 | 
			
		||||
            headers = {'x-container-read': self.read_acl,
 | 
			
		||||
                       'x-container-write': self.write_acl}
 | 
			
		||||
            set_http_connect(200, # account_info is found
 | 
			
		||||
                             200, headers=headers) # container_info is found
 | 
			
		||||
            set_http_connect(200,  # account_info is found
 | 
			
		||||
                             200, headers=headers)  # container_info is found
 | 
			
		||||
            ret = self.controller.container_info(
 | 
			
		||||
                self.account, self.container, self.request)
 | 
			
		||||
            self.check_container_info_return(ret)
 | 
			
		||||
@@ -440,8 +441,8 @@ class TestController(unittest.TestCase):
 | 
			
		||||
            return True, True, 0
 | 
			
		||||
 | 
			
		||||
        with save_globals():
 | 
			
		||||
            set_http_connect(503, 204, # account_info found
 | 
			
		||||
                             504, 404, 404) # container_info 'NotFound'
 | 
			
		||||
            set_http_connect(503, 204,  # account_info found
 | 
			
		||||
                             504, 404, 404)  # container_info 'NotFound'
 | 
			
		||||
            ret = self.controller.container_info(
 | 
			
		||||
                self.account, self.container, self.request)
 | 
			
		||||
            self.check_container_info_return(ret, True)
 | 
			
		||||
@@ -457,7 +458,7 @@ class TestController(unittest.TestCase):
 | 
			
		||||
                self.account, self.container, self.request)
 | 
			
		||||
            self.check_container_info_return(ret, True)
 | 
			
		||||
 | 
			
		||||
            set_http_connect(503, 404, 404)# account_info 'NotFound'
 | 
			
		||||
            set_http_connect(503, 404, 404)  # account_info 'NotFound'
 | 
			
		||||
            ret = self.controller.container_info(
 | 
			
		||||
                self.account, self.container, self.request)
 | 
			
		||||
            self.check_container_info_return(ret, True)
 | 
			
		||||
@@ -818,8 +819,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
                proxy_server.ObjectController(self.app, 'a', 'c', 'o.jpg')
 | 
			
		||||
            controller.error_limit(
 | 
			
		||||
                self.app.object_ring.get_part_nodes(1)[0], 'test')
 | 
			
		||||
            set_http_connect(200, 200,       # account, container
 | 
			
		||||
                             201, 201, 201,  # 3 working backends
 | 
			
		||||
            set_http_connect(200, 200,        # account, container
 | 
			
		||||
                             201, 201, 201,   # 3 working backends
 | 
			
		||||
                             give_connect=test_connect)
 | 
			
		||||
            req = Request.blank('/a/c/o.jpg', {})
 | 
			
		||||
            req.content_length = 1
 | 
			
		||||
@@ -832,7 +833,7 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
        # this is kind of a hokey test, but in FakeRing, the port is even when
 | 
			
		||||
        # the region is 0, and odd when the region is 1, so this test asserts
 | 
			
		||||
        # that we wrote to 2 nodes in region 0, then went to 1 non-r0 node.
 | 
			
		||||
        self.assertEqual(0, written_to[0][1] % 2)  # it's (ip, port, device)
 | 
			
		||||
        self.assertEqual(0, written_to[0][1] % 2)   # it's (ip, port, device)
 | 
			
		||||
        self.assertEqual(0, written_to[1][1] % 2)
 | 
			
		||||
        self.assertNotEqual(0, written_to[2][1] % 2)
 | 
			
		||||
 | 
			
		||||
@@ -1237,8 +1238,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
                    "content_type": "application/octet-stream"}]
 | 
			
		||||
        json_listing = simplejson.dumps(listing)
 | 
			
		||||
        response_bodies = (
 | 
			
		||||
            '',                           # HEAD /a
 | 
			
		||||
            '',                           # HEAD /a/c
 | 
			
		||||
            '',              # HEAD /a
 | 
			
		||||
            '',              # HEAD /a/c
 | 
			
		||||
            json_listing)    # GET manifest
 | 
			
		||||
        with save_globals():
 | 
			
		||||
            controller = proxy_server.ObjectController(
 | 
			
		||||
@@ -1897,8 +1898,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
        with save_globals():
 | 
			
		||||
            limit = MAX_META_VALUE_LENGTH
 | 
			
		||||
            self.app.object_post_as_copy = False
 | 
			
		||||
            controller = proxy_server.ObjectController(self.app, 'account',
 | 
			
		||||
                                                       'container', 'object')
 | 
			
		||||
            proxy_server.ObjectController(self.app, 'account',
 | 
			
		||||
                                          'container', 'object')
 | 
			
		||||
            set_http_connect(200, 200, 202, 202, 202)
 | 
			
		||||
            #                acct cont obj  obj  obj
 | 
			
		||||
            req = Request.blank('/v1/a/c/o', {'REQUEST_METHOD': 'POST'},
 | 
			
		||||
@@ -2024,7 +2025,7 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
            req = Request.blank('/v1/a/c/o.html', {'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                                headers=headers)
 | 
			
		||||
            self.app.update_request(req)
 | 
			
		||||
            res = req.get_response(self.app)
 | 
			
		||||
            req.get_response(self.app)
 | 
			
		||||
            self.assertNotEquals(it_worked, [])
 | 
			
		||||
            self.assertTrue(all(it_worked))
 | 
			
		||||
 | 
			
		||||
@@ -2046,7 +2047,7 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
            req = Request.blank('/v1/a/c/o.html', {'REQUEST_METHOD': 'PUT'},
 | 
			
		||||
                                headers=headers)
 | 
			
		||||
            self.app.update_request(req)
 | 
			
		||||
            res = req.get_response(self.app)
 | 
			
		||||
            req.get_response(self.app)
 | 
			
		||||
            self.assertNotEquals(it_worked, [])
 | 
			
		||||
            self.assertTrue(all(it_worked))
 | 
			
		||||
 | 
			
		||||
@@ -2789,7 +2790,7 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
            copy_from_obj_body = LargeResponseBody()
 | 
			
		||||
            set_http_connect(200, 200, 200, 200, 200, 201, 201, 201,
 | 
			
		||||
                body=copy_from_obj_body)
 | 
			
		||||
                             body=copy_from_obj_body)
 | 
			
		||||
            self.app.memcache.store = {}
 | 
			
		||||
            resp = controller.PUT(req)
 | 
			
		||||
            self.assertEquals(resp.status_int, 413)
 | 
			
		||||
@@ -2919,7 +2920,7 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
            copy_from_obj_body = LargeResponseBody()
 | 
			
		||||
            set_http_connect(200, 200, 200, 200, 200, 201, 201, 201,
 | 
			
		||||
                body=copy_from_obj_body)
 | 
			
		||||
                             body=copy_from_obj_body)
 | 
			
		||||
            self.app.memcache.store = {}
 | 
			
		||||
            resp = controller.COPY(req)
 | 
			
		||||
            self.assertEquals(resp.status_int, 413)
 | 
			
		||||
@@ -4615,7 +4616,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
        seen_headers = self._gather_x_container_headers(
 | 
			
		||||
            controller.PUT, req,
 | 
			
		||||
            200, 200, 201, 201, 201)   # HEAD HEAD PUT PUT PUT
 | 
			
		||||
        self.assertEqual(seen_headers, [
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            seen_headers, [
 | 
			
		||||
                {'X-Container-Host': '10.0.0.0:1000',
 | 
			
		||||
                 'X-Container-Partition': '1',
 | 
			
		||||
                 'X-Container-Device': 'sda'},
 | 
			
		||||
@@ -4636,7 +4638,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
            controller.PUT, req,
 | 
			
		||||
            200, 200, 201, 201, 201)   # HEAD HEAD PUT PUT PUT
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(seen_headers, [
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            seen_headers, [
 | 
			
		||||
                {'X-Container-Host': '10.0.0.0:1000',
 | 
			
		||||
                 'X-Container-Partition': '1',
 | 
			
		||||
                 'X-Container-Device': 'sda'},
 | 
			
		||||
@@ -4657,7 +4660,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
            controller.PUT, req,
 | 
			
		||||
            200, 200, 201, 201, 201)   # HEAD HEAD PUT PUT PUT
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(seen_headers, [
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            seen_headers, [
 | 
			
		||||
                {'X-Container-Host': '10.0.0.0:1000,10.0.0.3:1003',
 | 
			
		||||
                 'X-Container-Partition': '1',
 | 
			
		||||
                 'X-Container-Device': 'sda,sdd'},
 | 
			
		||||
@@ -4679,7 +4683,8 @@ class TestObjectController(unittest.TestCase):
 | 
			
		||||
            controller.POST, req,
 | 
			
		||||
            200, 200, 200, 200, 200)   # HEAD HEAD POST POST POST
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(seen_headers, [
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            seen_headers, [
 | 
			
		||||
                {'X-Container-Host': '10.0.0.0:1000,10.0.0.3:1003',
 | 
			
		||||
                 'X-Container-Partition': '1',
 | 
			
		||||
                 'X-Container-Device': 'sda,sdd'},
 | 
			
		||||
@@ -4844,8 +4849,9 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
                    self.assertEquals(res.headers['x-works'], 'yes')
 | 
			
		||||
                if c_expected:
 | 
			
		||||
                    self.assertTrue('swift.container/a/c' in res.environ)
 | 
			
		||||
                    self.assertEquals(res.environ['swift.container/a/c']['status'],
 | 
			
		||||
                                      c_expected)
 | 
			
		||||
                    self.assertEquals(
 | 
			
		||||
                        res.environ['swift.container/a/c']['status'],
 | 
			
		||||
                        c_expected)
 | 
			
		||||
                else:
 | 
			
		||||
                    self.assertTrue('swift.container/a/c' not in res.environ)
 | 
			
		||||
                if a_expected:
 | 
			
		||||
@@ -4867,8 +4873,9 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
                    self.assertEquals(res.headers['x-works'], 'yes')
 | 
			
		||||
                if c_expected:
 | 
			
		||||
                    self.assertTrue('swift.container/a/c' in res.environ)
 | 
			
		||||
                    self.assertEquals(res.environ['swift.container/a/c']['status'],
 | 
			
		||||
                                      c_expected)
 | 
			
		||||
                    self.assertEquals(
 | 
			
		||||
                        res.environ['swift.container/a/c']['status'],
 | 
			
		||||
                        c_expected)
 | 
			
		||||
                else:
 | 
			
		||||
                    self.assertTrue('swift.container/a/c' not in res.environ)
 | 
			
		||||
                if a_expected:
 | 
			
		||||
@@ -4894,7 +4901,8 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
            # In all the following tests cache 404 for account
 | 
			
		||||
            # return 404 (as account is not found) and dont cache container
 | 
			
		||||
            test_status_map((404, 404, 404), 404, None, 404)
 | 
			
		||||
            self.app.account_autocreate = True # This should make no difference
 | 
			
		||||
            # This should make no difference
 | 
			
		||||
            self.app.account_autocreate = True
 | 
			
		||||
            test_status_map((404, 404, 404), 404, None, 404)
 | 
			
		||||
 | 
			
		||||
    def test_PUT(self):
 | 
			
		||||
@@ -4919,41 +4927,41 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
            self.assertFalse(self.app.account_autocreate)
 | 
			
		||||
            test_status_map((404, 404, 404), 404, missing_container=True)
 | 
			
		||||
            self.app.account_autocreate = True
 | 
			
		||||
            #fail to retrieve account info
 | 
			
		||||
            # fail to retrieve account info
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (503, 503, 503), # account_info fails on 503
 | 
			
		||||
                 404, missing_container=True)
 | 
			
		||||
                (503, 503, 503),  # account_info fails on 503
 | 
			
		||||
                404, missing_container=True)
 | 
			
		||||
            # account fail after creation
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (404, 404, 404, # account_info fails on 404
 | 
			
		||||
                 201, 201, 201, # PUT account
 | 
			
		||||
                 404, 404, 404), # account_info fail
 | 
			
		||||
                 404, missing_container=True)
 | 
			
		||||
                (404, 404, 404,   # account_info fails on 404
 | 
			
		||||
                 201, 201, 201,   # PUT account
 | 
			
		||||
                 404, 404, 404),  # account_info fail
 | 
			
		||||
                404, missing_container=True)
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (503, 503, 404, # account_info fails on 404
 | 
			
		||||
                 503, 503, 503, # PUT account
 | 
			
		||||
                 503, 503, 404), # account_info fail
 | 
			
		||||
                 404, missing_container=True)
 | 
			
		||||
            #put fails
 | 
			
		||||
                (503, 503, 404,   # account_info fails on 404
 | 
			
		||||
                 503, 503, 503,   # PUT account
 | 
			
		||||
                 503, 503, 404),  # account_info fail
 | 
			
		||||
                404, missing_container=True)
 | 
			
		||||
            # put fails
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (404, 404, 404, # account_info fails on 404
 | 
			
		||||
                 201, 201, 201, # PUT account
 | 
			
		||||
                 200, # account_info success
 | 
			
		||||
                 503, 503, 201), # put container fail
 | 
			
		||||
                 503, missing_container=True)
 | 
			
		||||
                (404, 404, 404,   # account_info fails on 404
 | 
			
		||||
                 201, 201, 201,   # PUT account
 | 
			
		||||
                 200,             # account_info success
 | 
			
		||||
                 503, 503, 201),  # put container fail
 | 
			
		||||
                503, missing_container=True)
 | 
			
		||||
            # all goes according to plan
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (404, 404, 404, # account_info fails on 404
 | 
			
		||||
                 201, 201, 201, # PUT account
 | 
			
		||||
                 200, # account_info success
 | 
			
		||||
                 201, 201, 201), # put container success
 | 
			
		||||
                 201, missing_container=True)
 | 
			
		||||
                (404, 404, 404,   # account_info fails on 404
 | 
			
		||||
                 201, 201, 201,   # PUT account
 | 
			
		||||
                 200,             # account_info success
 | 
			
		||||
                 201, 201, 201),  # put container success
 | 
			
		||||
                201, missing_container=True)
 | 
			
		||||
            test_status_map(
 | 
			
		||||
                (503, 404, 404, # account_info fails on 404
 | 
			
		||||
                 503, 201, 201, # PUT account
 | 
			
		||||
                 503, 200, # account_info success
 | 
			
		||||
                 503, 201, 201), # put container success
 | 
			
		||||
                 201, missing_container=True)
 | 
			
		||||
                (503, 404, 404,   # account_info fails on 404
 | 
			
		||||
                 503, 201, 201,   # PUT account
 | 
			
		||||
                 503, 200,        # account_info success
 | 
			
		||||
                 503, 201, 201),  # put container success
 | 
			
		||||
                201, missing_container=True)
 | 
			
		||||
 | 
			
		||||
    def test_POST(self):
 | 
			
		||||
        with save_globals():
 | 
			
		||||
@@ -5367,7 +5375,8 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
            req = Request.blank('/a/c')
 | 
			
		||||
            self.app.update_request(req)
 | 
			
		||||
            res = controller.GET(req)
 | 
			
		||||
            self.assertEquals(res.environ['swift.container/a/c']['status'], 204)
 | 
			
		||||
            self.assertEquals(
 | 
			
		||||
                res.environ['swift.container/a/c']['status'], 204)
 | 
			
		||||
            self.assertEquals(res.content_length, 0)
 | 
			
		||||
            self.assertTrue('transfer-encoding' not in res.headers)
 | 
			
		||||
 | 
			
		||||
@@ -5571,7 +5580,7 @@ class TestContainerController(unittest.TestCase):
 | 
			
		||||
            self.assertEquals(expected_exposed, exposed)
 | 
			
		||||
 | 
			
		||||
    def _gather_x_account_headers(self, controller_call, req, *connect_args,
 | 
			
		||||
                                    **kwargs):
 | 
			
		||||
                                  **kwargs):
 | 
			
		||||
        seen_headers = []
 | 
			
		||||
        to_capture = ('X-Account-Partition', 'X-Account-Host',
 | 
			
		||||
                      'X-Account-Device')
 | 
			
		||||
@@ -5721,9 +5730,10 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
            # Access-Control-Request-Method headers)
 | 
			
		||||
            self.app.allow_account_management = False
 | 
			
		||||
            controller = proxy_server.AccountController(self.app, 'account')
 | 
			
		||||
            req = Request.blank('/account', {'REQUEST_METHOD': 'OPTIONS'},
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/account', {'REQUEST_METHOD': 'OPTIONS'},
 | 
			
		||||
                headers={'Origin': 'http://foo.com',
 | 
			
		||||
                                     'Access-Control-Request-Method': 'GET'})
 | 
			
		||||
                         'Access-Control-Request-Method': 'GET'})
 | 
			
		||||
            req.content_length = 0
 | 
			
		||||
            resp = controller.OPTIONS(req)
 | 
			
		||||
            self.assertEquals(200, resp.status_int)
 | 
			
		||||
@@ -5831,16 +5841,19 @@ class TestAccountController(unittest.TestCase):
 | 
			
		||||
            # first test with autocreate being False
 | 
			
		||||
            self.assertFalse(self.app.account_autocreate)
 | 
			
		||||
            self.assert_status_map(controller.POST,
 | 
			
		||||
                (404, 404, 404), 404)
 | 
			
		||||
                                   (404, 404, 404), 404)
 | 
			
		||||
            # next turn it on and test account being created than updated
 | 
			
		||||
            controller.app.account_autocreate = True
 | 
			
		||||
            self.assert_status_map(controller.POST,
 | 
			
		||||
            self.assert_status_map(
 | 
			
		||||
                controller.POST,
 | 
			
		||||
                (404, 404, 404, 202, 202, 202, 201, 201, 201), 201)
 | 
			
		||||
                # account_info  PUT account  POST account
 | 
			
		||||
            self.assert_status_map(controller.POST,
 | 
			
		||||
                (404, 404, 503, 201, 201, 503,  204, 204, 504), 204)
 | 
			
		||||
            self.assert_status_map(
 | 
			
		||||
                controller.POST,
 | 
			
		||||
                (404, 404, 503, 201, 201, 503, 204, 204, 504), 204)
 | 
			
		||||
            # what if create fails
 | 
			
		||||
            self.assert_status_map(controller.POST,
 | 
			
		||||
            self.assert_status_map(
 | 
			
		||||
                controller.POST,
 | 
			
		||||
                (404, 404, 404, 403, 403, 403, 400, 400, 400), 400)
 | 
			
		||||
 | 
			
		||||
    def test_connection_refused(self):
 | 
			
		||||
@@ -6115,9 +6128,10 @@ class TestAccountControllerFakeGetResponse(unittest.TestCase):
 | 
			
		||||
    def test_GET_autocreate_accept_json(self):
 | 
			
		||||
        with save_globals():
 | 
			
		||||
            set_http_connect(*([404] * 100))  # nonexistent: all backends 404
 | 
			
		||||
            req = Request.blank('/v1/a', headers={'Accept': 'application/json'},
 | 
			
		||||
                                environ={'REQUEST_METHOD': 'GET',
 | 
			
		||||
                                         'PATH_INFO': '/v1/a'})
 | 
			
		||||
            req = Request.blank(
 | 
			
		||||
                '/v1/a', headers={'Accept': 'application/json'},
 | 
			
		||||
                environ={'REQUEST_METHOD': 'GET',
 | 
			
		||||
                         'PATH_INFO': '/v1/a'})
 | 
			
		||||
            resp = req.get_response(self.app)
 | 
			
		||||
            self.assertEqual(200, resp.status_int)
 | 
			
		||||
            self.assertEqual('application/json; charset=utf-8',
 | 
			
		||||
@@ -6360,7 +6374,8 @@ class TestSegmentedIterable(unittest.TestCase):
 | 
			
		||||
        segit.ratelimit_index = 0
 | 
			
		||||
        segit.listing.next()
 | 
			
		||||
        segit._load_next_segment()
 | 
			
		||||
        self.assertEquals(self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
 | 
			
		||||
        data = ''.join(segit.segment_iter)
 | 
			
		||||
        self.assertEquals(data, '22')
 | 
			
		||||
 | 
			
		||||
@@ -6372,9 +6387,11 @@ class TestSegmentedIterable(unittest.TestCase):
 | 
			
		||||
        segit.listing.next()
 | 
			
		||||
        segit.seek = 1
 | 
			
		||||
        segit._load_next_segment()
 | 
			
		||||
        self.assertEquals(self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
 | 
			
		||||
        self.assertEquals(str(self.controller.GETorHEAD_base_args[-1][0].range),
 | 
			
		||||
                          'bytes=1-')
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            self.controller.GETorHEAD_base_args[-1][4], '/a/lc/o2')
 | 
			
		||||
        self.assertEquals(
 | 
			
		||||
            str(self.controller.GETorHEAD_base_args[-1][0].range),
 | 
			
		||||
            'bytes=1-')
 | 
			
		||||
        data = ''.join(segit.segment_iter)
 | 
			
		||||
        self.assertEquals(data, '2')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user