diff options
author | Stuart McLaren <stuart.mclaren@hp.com> | 2014-10-28 18:38:05 +0000 |
---|---|---|
committer | Stuart McLaren <stuart.mclaren@hp.com> | 2014-10-29 17:35:19 +0000 |
commit | ee5604ce8ba4f732c546c0959d4ea84fc90cefb0 (patch) | |
tree | a45235f5d7332b56bf4d7a46c9faed36cc1bd1d6 | |
parent | e284f8c080c87acdc2757e0fe16063214c2988be (diff) | |
download | glance_store-ee5604ce8ba4f732c546c0959d4ea84fc90cefb0.tar.gz |
Test swift multi-tenant store add context
Add a test to verify that the context is being propagated properly by
checking that the token is being passed to swift.
This checks the full image add (upload) path.
Change-Id: I5a9c6ce5f84639afac88186cc608d8dbb4d8ecb7
-rw-r--r-- | test-requirements.txt | 1 | ||||
-rw-r--r-- | tests/unit/test_swift_store.py | 58 |
2 files changed, 59 insertions, 0 deletions
diff --git a/test-requirements.txt b/test-requirements.txt index a0c3a00..779d3a3 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6,6 +6,7 @@ mock>=1.0 # Unit testing coverage>=3.6 +httpretty>=0.8.0,!=0.8.1,!=0.8.2,!=0.8.3 fixtures>=0.3.14 python-subunit>=0.0.18 testrepository>=0.0.18 diff --git a/tests/unit/test_swift_store.py b/tests/unit/test_swift_store.py index e7b956b..483de11 100644 --- a/tests/unit/test_swift_store.py +++ b/tests/unit/test_swift_store.py @@ -23,10 +23,12 @@ import mock import tempfile import uuid +import httpretty from oslo.config import cfg from oslo.utils import units from oslotest import moxstubout import six +import StringIO import swiftclient from glance_store._drivers.swift import store as swift @@ -1042,6 +1044,62 @@ class TestMultiTenantStoreConnections(base.StoreBaseTest): self.assertTrue(connection.snet) +class TestMultiTenantStoreContext(base.StoreBaseTest): + + _CONF = cfg.CONF + + def setUp(self): + """Establish a clean test environment.""" + super(TestMultiTenantStoreContext, self).setUp() + conf = SWIFT_CONF.copy() + + self.store = Store(self.conf) + self.config(**conf) + self.store.configure() + self.register_store_schemes(self.store) + self.service_catalog = [{ + "name": "Object Storage", + "type": "object-store", + "endpoints": [{ + "publicURL": "http://127.0.0.1:0", + "region": "region1", + "versionId": "1.0", + }] + }] + self.addCleanup(self.conf.reset) + + @httpretty.activate + def test_upload_context(self): + """Verify context (ie token) is passed to swift on upload.""" + def put_callback(request, uri, headers): + self.assertEqual('Some data', request.body) + self.assertEqual('0123', request.headers['X-Auth-Token']) + return (201, headers, "") + + def head_callback(request, uri, headers): + self.assertEqual('0123', request.headers['X-Auth-Token']) + return (200, headers, "") + + httpretty.register_uri(httpretty.HEAD, + "http://127.0.0.1:0/glance_123", + head_callback) + httpretty.register_uri(httpretty.PUT, + "http://127.0.0.1:0/glance_123/123", + put_callback) + + self.config(swift_store_multi_tenant=True) + store = Store(self.conf) + store.configure() + pseudo_file = StringIO.StringIO('Some data') + ctx = context.RequestContext( + service_catalog=self.service_catalog, user='tenant:user1', + tenant='tenant', auth_token='0123') + store.add('123', pseudo_file, pseudo_file.len, + context=ctx) + self.assertEqual( + '0123', httpretty.last_request().headers['X-Auth-Token']) + + class FakeGetEndpoint(object): def __init__(self, response): self.response = response |