Merge "Fix usage of multiple accounts in functional tests"
This commit is contained in:
commit
89d9420bb2
@ -64,19 +64,21 @@ class TestSloEnv(BaseEnv):
|
||||
|
||||
super(TestSloEnv, cls).setUp()
|
||||
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
config3 = tf.config.copy()
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.conn3.authenticate()
|
||||
if not tf.skip2:
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
if not tf.skip3:
|
||||
config3 = tf.config.copy()
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.conn3.authenticate()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
cls.container2 = cls.account.container(Utils.create_name())
|
||||
@ -651,18 +653,19 @@ class TestSlo(Base):
|
||||
copied_contents = copied.read(parms={'multipart-manifest': 'get'})
|
||||
self.assertEqual(4 * 1024 * 1024 + 1, len(copied_contents))
|
||||
|
||||
# copy to different account
|
||||
acct = self.env.conn2.account_name
|
||||
dest_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(dest_cont.create(hdrs={
|
||||
'X-Container-Write': self.env.conn.user_acl
|
||||
}))
|
||||
file_item = self.env.container.file("manifest-abcde")
|
||||
file_item.copy_account(acct, dest_cont, "copied-abcde")
|
||||
if not tf.skip2:
|
||||
# copy to different account
|
||||
acct = self.env.conn2.account_name
|
||||
dest_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(dest_cont.create(hdrs={
|
||||
'X-Container-Write': self.env.conn.user_acl
|
||||
}))
|
||||
file_item = self.env.container.file("manifest-abcde")
|
||||
file_item.copy_account(acct, dest_cont, "copied-abcde")
|
||||
|
||||
copied = dest_cont.file("copied-abcde")
|
||||
copied_contents = copied.read(parms={'multipart-manifest': 'get'})
|
||||
self.assertEqual(4 * 1024 * 1024 + 1, len(copied_contents))
|
||||
copied = dest_cont.file("copied-abcde")
|
||||
copied_contents = copied.read(parms={'multipart-manifest': 'get'})
|
||||
self.assertEqual(4 * 1024 * 1024 + 1, len(copied_contents))
|
||||
|
||||
def test_slo_copy_the_manifest(self):
|
||||
source = self.env.container.file("manifest-abcde")
|
||||
@ -797,6 +800,8 @@ class TestSlo(Base):
|
||||
self.assertEqual(slo_etag, actual['slo_etag'])
|
||||
|
||||
def test_slo_copy_the_manifest_account(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
acct = self.env.conn.account_name
|
||||
# same account
|
||||
file_item = self.env.container.file("manifest-abcde")
|
||||
@ -1148,6 +1153,8 @@ class TestSlo(Base):
|
||||
self.assert_status(200)
|
||||
|
||||
def test_slo_referer_on_segment_container(self):
|
||||
if tf.skip3:
|
||||
raise SkipTest('Username3 not set')
|
||||
# First the account2 (test3) should fail
|
||||
headers = {'X-Auth-Token': self.env.conn3.storage_token,
|
||||
'Referer': 'http://blah.example.com'}
|
||||
|
@ -122,6 +122,8 @@ class TestSymlinkEnv(BaseEnv):
|
||||
enumerate([cls.containers(), [cls.link_cont]], 1)]
|
||||
# delete objects inside container
|
||||
for use_account, containers in delete_containers:
|
||||
if use_account == 2 and tf.skip2:
|
||||
continue
|
||||
for container in containers:
|
||||
while True:
|
||||
cont = container
|
||||
@ -144,6 +146,8 @@ class TestSymlinkEnv(BaseEnv):
|
||||
|
||||
# delete the containers
|
||||
for use_account, containers in delete_containers:
|
||||
if use_account == 2 and tf.skip2:
|
||||
continue
|
||||
for container in containers:
|
||||
resp = retry(cls._make_request, method='DELETE',
|
||||
container=container,
|
||||
|
@ -410,24 +410,31 @@ class TestContainerTempurlEnv(BaseEnv):
|
||||
cls.tempurl_key = Utils.create_name()
|
||||
cls.tempurl_key2 = Utils.create_name()
|
||||
|
||||
# creating another account and connection
|
||||
# for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
cls.account2 = Account(
|
||||
cls.conn2, config2.get('account', config2['username']))
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
if not tf.skip2:
|
||||
# creating another account and connection
|
||||
# for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
cls.account2 = Account(
|
||||
cls.conn2, config2.get('account', config2['username']))
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
if not cls.container.create({
|
||||
'x-container-meta-temp-url-key': cls.tempurl_key,
|
||||
'x-container-meta-temp-url-key-2': cls.tempurl_key2,
|
||||
'x-container-read': cls.account2.name}):
|
||||
raise ResponseError(cls.conn.response)
|
||||
if not tf.skip2:
|
||||
if not cls.container.create({
|
||||
'x-container-meta-temp-url-key': cls.tempurl_key,
|
||||
'x-container-meta-temp-url-key-2': cls.tempurl_key2,
|
||||
'x-container-read': cls.account2.name}):
|
||||
raise ResponseError(cls.conn.response)
|
||||
else:
|
||||
if not cls.container.create({
|
||||
'x-container-meta-temp-url-key': cls.tempurl_key,
|
||||
'x-container-meta-temp-url-key-2': cls.tempurl_key2}):
|
||||
raise ResponseError(cls.conn.response)
|
||||
|
||||
cls.obj = cls.container.file(Utils.create_name())
|
||||
cls.obj.write("obj contents")
|
||||
@ -583,6 +590,8 @@ class TestContainerTempurl(Base):
|
||||
|
||||
@requires_acls
|
||||
def test_tempurl_keys_hidden_from_acl_readonly(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
metadata = self.env.container.info(cfg={
|
||||
'use_token': self.env.conn2.storage_token})
|
||||
|
||||
|
@ -45,13 +45,14 @@ class TestObjectVersioningEnv(BaseEnv):
|
||||
@classmethod
|
||||
def setUp(cls):
|
||||
super(TestObjectVersioningEnv, cls).setUp()
|
||||
# Second connection for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
if not tf.skip2:
|
||||
# Second connection for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
|
||||
# avoid getting a prefix that stops halfway through an encoded
|
||||
# character
|
||||
@ -74,24 +75,26 @@ class TestObjectVersioningEnv(BaseEnv):
|
||||
# if versioning is off, then cls.location_header_key won't persist
|
||||
cls.versioning_enabled = 'versions' in container_info
|
||||
|
||||
# setup another account to test ACLs
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.storage_url2, cls.storage_token2 = cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
if not tf.skip2:
|
||||
# setup another account to test ACLs
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.storage_url2, cls.storage_token2 = cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
|
||||
# setup another account with no access to anything to test ACLs
|
||||
config3 = deepcopy(tf.config)
|
||||
config3['account'] = tf.config['account']
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.storage_url3, cls.storage_token3 = cls.conn3.authenticate()
|
||||
cls.account3 = cls.conn3.get_account()
|
||||
if not tf.skip3:
|
||||
# setup another account with no access to anything to test ACLs
|
||||
config3 = deepcopy(tf.config)
|
||||
config3['account'] = tf.config['account']
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.storage_url3, cls.storage_token3 = cls.conn3.authenticate()
|
||||
cls.account3 = cls.conn3.get_account()
|
||||
|
||||
@classmethod
|
||||
def tearDown(cls):
|
||||
@ -131,13 +134,14 @@ class TestCrossPolicyObjectVersioningEnv(BaseEnv):
|
||||
policy = cls.policies.select()
|
||||
version_policy = cls.policies.exclude(name=policy['name']).select()
|
||||
|
||||
# Second connection for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
if not tf.skip2:
|
||||
# Second connection for ACL tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
|
||||
# avoid getting a prefix that stops halfway through an encoded
|
||||
# character
|
||||
@ -161,24 +165,26 @@ class TestCrossPolicyObjectVersioningEnv(BaseEnv):
|
||||
# if versioning is off, then X-Versions-Location won't persist
|
||||
cls.versioning_enabled = 'versions' in container_info
|
||||
|
||||
# setup another account to test ACLs
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.storage_url2, cls.storage_token2 = cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
if not tf.skip2:
|
||||
# setup another account to test ACLs
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.storage_url2, cls.storage_token2 = cls.conn2.authenticate()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
|
||||
# setup another account with no access to anything to test ACLs
|
||||
config3 = deepcopy(tf.config)
|
||||
config3['account'] = tf.config['account']
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.storage_url3, cls.storage_token3 = cls.conn3.authenticate()
|
||||
cls.account3 = cls.conn3.get_account()
|
||||
if not tf.skip3:
|
||||
# setup another account with no access to anything to test ACLs
|
||||
config3 = deepcopy(tf.config)
|
||||
config3['account'] = tf.config['account']
|
||||
config3['username'] = tf.config['username3']
|
||||
config3['password'] = tf.config['password3']
|
||||
cls.conn3 = Connection(config3)
|
||||
cls.storage_url3, cls.storage_token3 = cls.conn3.authenticate()
|
||||
cls.account3 = cls.conn3.get_account()
|
||||
|
||||
@classmethod
|
||||
def tearDown(cls):
|
||||
@ -485,6 +491,8 @@ class TestObjectVersioning(Base):
|
||||
self.assertEqual("old content", man_file.read())
|
||||
|
||||
def test_versioning_container_acl(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
# create versions container and DO NOT give write access to account2
|
||||
versions_container = self.env.account.container(Utils.create_name())
|
||||
location_header_val = quote(str(versions_container))
|
||||
@ -623,6 +631,8 @@ class TestObjectVersioning(Base):
|
||||
return versioned_obj
|
||||
|
||||
def test_versioning_check_acl(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
versioned_obj = self._test_versioning_check_acl_setup()
|
||||
versioned_obj.delete()
|
||||
self.assertEqual("aaaaa", versioned_obj.read())
|
||||
@ -896,6 +906,8 @@ class TestObjectVersioningHistoryMode(TestObjectVersioning):
|
||||
self.assertEqual(expected, bodies)
|
||||
|
||||
def test_versioning_check_acl(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
versioned_obj = self._test_versioning_check_acl_setup()
|
||||
versioned_obj.delete()
|
||||
with self.assertRaises(ResponseError) as cm:
|
||||
|
@ -1189,17 +1189,18 @@ class TestFileEnv(BaseEnv):
|
||||
@classmethod
|
||||
def setUp(cls):
|
||||
super(TestFileEnv, cls).setUp()
|
||||
# creating another account and connection
|
||||
# for account to account copy tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
if not tf.skip2:
|
||||
# creating another account and connection
|
||||
# for account to account copy tests
|
||||
config2 = deepcopy(tf.config)
|
||||
config2['account'] = tf.config['account2']
|
||||
config2['username'] = tf.config['username2']
|
||||
config2['password'] = tf.config['password2']
|
||||
cls.conn2 = Connection(config2)
|
||||
cls.conn2.authenticate()
|
||||
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
cls.account2 = cls.conn2.get_account()
|
||||
cls.account2.delete_containers()
|
||||
|
||||
cls.container = cls.account.container(Utils.create_name())
|
||||
if not cls.container.create():
|
||||
@ -1214,7 +1215,8 @@ class TestFileEnv(BaseEnv):
|
||||
# not have been known. So we ensure that the project domain id is
|
||||
# in sysmeta by making a POST to the accounts using an admin role.
|
||||
cls.account.update_metadata()
|
||||
cls.account2.update_metadata()
|
||||
if not tf.skip2:
|
||||
cls.account2.update_metadata()
|
||||
|
||||
|
||||
class TestFileDev(Base):
|
||||
@ -1495,28 +1497,29 @@ class TestFile(Base):
|
||||
self.assertTrue(file_item.initialize())
|
||||
self.assertEqual(metadata, file_item.metadata)
|
||||
|
||||
dest_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(dest_cont.create(hdrs={
|
||||
'X-Container-Write': self.env.conn.user_acl
|
||||
}))
|
||||
if not tf.skip2:
|
||||
dest_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(dest_cont.create(hdrs={
|
||||
'X-Container-Write': self.env.conn.user_acl
|
||||
}))
|
||||
|
||||
acct = self.env.conn2.account_name
|
||||
# copy both with and without initial slash
|
||||
for prefix in ('', '/'):
|
||||
dest_filename = Utils.create_name()
|
||||
acct = self.env.conn2.account_name
|
||||
# copy both with and without initial slash
|
||||
for prefix in ('', '/'):
|
||||
dest_filename = Utils.create_name()
|
||||
|
||||
file_item = self.env.container.file(source_filename)
|
||||
file_item.copy_account(acct,
|
||||
'%s%s' % (prefix, dest_cont),
|
||||
dest_filename)
|
||||
file_item = self.env.container.file(source_filename)
|
||||
file_item.copy_account(acct,
|
||||
'%s%s' % (prefix, dest_cont),
|
||||
dest_filename)
|
||||
|
||||
self.assertIn(dest_filename, dest_cont.files())
|
||||
self.assertIn(dest_filename, dest_cont.files())
|
||||
|
||||
file_item = dest_cont.file(dest_filename)
|
||||
file_item = dest_cont.file(dest_filename)
|
||||
|
||||
self.assertEqual(data, file_item.read())
|
||||
self.assertTrue(file_item.initialize())
|
||||
self.assertEqual(metadata, file_item.metadata)
|
||||
self.assertEqual(data, file_item.read())
|
||||
self.assertTrue(file_item.initialize())
|
||||
self.assertEqual(metadata, file_item.metadata)
|
||||
|
||||
def testCopy404s(self):
|
||||
source_filename = Utils.create_name()
|
||||
@ -1559,6 +1562,8 @@ class TestFile(Base):
|
||||
Utils.create_name())
|
||||
|
||||
def testCopyAccount404s(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
acct = self.env.conn.account_name
|
||||
acct2 = self.env.conn2.account_name
|
||||
source_filename = Utils.create_name()
|
||||
@ -1686,6 +1691,8 @@ class TestFile(Base):
|
||||
self.assertEqual(metadata, file_item.metadata)
|
||||
|
||||
def testCopyFromAccountHeader(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
acct = self.env.conn.account_name
|
||||
src_cont = self.env.account.container(Utils.create_name())
|
||||
self.assertTrue(src_cont.create(hdrs={
|
||||
@ -1761,6 +1768,8 @@ class TestFile(Base):
|
||||
self.assert_status(404)
|
||||
|
||||
def testCopyFromAccountHeader404s(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
acct = self.env.conn2.account_name
|
||||
src_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(src_cont.create(hdrs={
|
||||
@ -1805,6 +1814,8 @@ class TestFile(Base):
|
||||
self.assert_status(404)
|
||||
|
||||
def testCopyFromAccountHeader403s(self):
|
||||
if tf.skip2:
|
||||
raise SkipTest('Account2 not set')
|
||||
acct = self.env.conn2.account_name
|
||||
src_cont = self.env.account2.container(Utils.create_name())
|
||||
self.assertTrue(src_cont.create()) # Primary user has no access
|
||||
|
Loading…
x
Reference in New Issue
Block a user