summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart McLaren <stuart.mclaren@hp.com>2014-10-28 18:38:05 +0000
committerStuart McLaren <stuart.mclaren@hp.com>2014-10-29 17:35:19 +0000
commitee5604ce8ba4f732c546c0959d4ea84fc90cefb0 (patch)
treea45235f5d7332b56bf4d7a46c9faed36cc1bd1d6
parente284f8c080c87acdc2757e0fe16063214c2988be (diff)
downloadglance_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.txt1
-rw-r--r--tests/unit/test_swift_store.py58
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