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
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")
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))
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')