コード例 #1
0
ファイル: server.py プロジェクト: bigbang009/swift
def get_obj_name_and_placement(req):
    """
    Split and validate path for an object.

    :param req: a swob request

    :returns: a tuple of path parts as strings
    """
    drive, part, account, container, obj = split_and_validate_path(
        req, 4, 5, True)
    validate_internal_obj(account, container, obj)
    return drive, part, account, container, obj
コード例 #2
0
 def test_invalid_reserved_names(self):
     with self.assertRaises(HTTPException) as raised:
         rh.validate_internal_obj('AUTH_foo' + rh.RESERVED, 'bar', 'baz')
     e = raised.exception
     self.assertEqual(e.status_int, 400)
     self.assertEqual(str(e), '400 Bad Request')
     self.assertEqual(e.body, b"Invalid reserved-namespace account")
     with self.assertRaises(HTTPException) as raised:
         rh.validate_internal_obj('AUTH_foo', 'bar' + rh.RESERVED, 'baz')
     e = raised.exception
     self.assertEqual(e.status_int, 400)
     self.assertEqual(str(e), '400 Bad Request')
     self.assertEqual(e.body, b"Invalid reserved-namespace container")
     with self.assertRaises(HTTPException) as raised:
         rh.validate_internal_obj('AUTH_foo', 'bar', 'baz' + rh.RESERVED)
     e = raised.exception
     self.assertEqual(e.status_int, 400)
     self.assertEqual(str(e), '400 Bad Request')
     self.assertEqual(e.body, b"Invalid reserved-namespace object")
コード例 #3
0
 def test_invalid_names_in_system_accounts(self):
     self.assertIsNone(
         rh.validate_internal_obj(
             AUTO_CREATE_ACCOUNT_PREFIX + 'system_account', 'foo',
             'crazy%stown' % rh.RESERVED))
コード例 #4
0
    def test_validate_internal_object(self):
        self.assertIsNone(rh.validate_internal_obj('AUTH_foo', 'bar', 'baz'))
        self.assertIsNone(
            rh.validate_internal_obj(rh.get_reserved_name('AUTH_foo'), 'bar',
                                     'baz'))
        for acct in ('AUTH_foo', rh.get_reserved_name('AUTH_foo')):
            self.assertIsNone(
                rh.validate_internal_obj(acct, rh.get_reserved_name('bar'),
                                         rh.get_reserved_name('baz')))
        for acct in ('AUTH_foo', rh.get_reserved_name('AUTH_foo')):
            with self.assertRaises(HTTPException) as raised:
                rh.validate_internal_obj(acct, 'bar',
                                         rh.get_reserved_name('baz'))
            e = raised.exception
            self.assertEqual(e.status_int, 400)
            self.assertEqual(str(e), '400 Bad Request')
            self.assertEqual(
                e.body, b"Invalid reserved-namespace object "
                b"in user-namespace container")
        for acct in ('AUTH_foo', rh.get_reserved_name('AUTH_foo')):
            with self.assertRaises(HTTPException) as raised:
                rh.validate_internal_obj(acct, rh.get_reserved_name('bar'),
                                         'baz')
            e = raised.exception
            self.assertEqual(e.status_int, 400)
            self.assertEqual(str(e), '400 Bad Request')
            self.assertEqual(
                e.body, b"Invalid user-namespace object "
                b"in reserved-namespace container")

        # These should always be operating on split_path outputs so this
        # shouldn't really be an issue, but just in case...
        for acct in ('', None):
            with self.assertRaises(ValueError) as raised:
                rh.validate_internal_obj(acct, 'bar', 'baz')
            self.assertEqual(raised.exception.args[0], 'Account is required')

        for cont in ('', None):
            with self.assertRaises(ValueError) as raised:
                rh.validate_internal_obj('AUTH_foo', cont, 'baz')
            self.assertEqual(raised.exception.args[0], 'Container is required')