Remove test-requirement on fixtures
Change-Id: Ic8159ec505a5b5ca241729e157195a60c73b8cd8
This commit is contained in:
parent
c5fe114c96
commit
f0e909749e
@ -16,7 +16,6 @@ boto>=2.32.1
|
|||||||
boto3>=1.9
|
boto3>=1.9
|
||||||
botocore>=1.12
|
botocore>=1.12
|
||||||
requests-mock>=1.2.0 # Apache-2.0
|
requests-mock>=1.2.0 # Apache-2.0
|
||||||
fixtures>=3.0.0 # Apache-2.0/BSD
|
|
||||||
keystonemiddleware>=4.17.0 # Apache-2.0
|
keystonemiddleware>=4.17.0 # Apache-2.0
|
||||||
|
|
||||||
# Security checks
|
# Security checks
|
||||||
|
@ -15,12 +15,10 @@
|
|||||||
import copy
|
import copy
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
import logging
|
|
||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import fixtures
|
|
||||||
import mock
|
import mock
|
||||||
import requests
|
import requests
|
||||||
from requests_mock.contrib import fixture as rm_fixture
|
from requests_mock.contrib import fixture as rm_fixture
|
||||||
@ -30,6 +28,8 @@ from swift.common.middleware.s3api import s3token
|
|||||||
from swift.common.swob import Request, Response
|
from swift.common.swob import Request, Response
|
||||||
from swift.common.wsgi import ConfigFileError
|
from swift.common.wsgi import ConfigFileError
|
||||||
|
|
||||||
|
from test.debug_logger import debug_logger
|
||||||
|
|
||||||
GOOD_RESPONSE_V2 = {'access': {
|
GOOD_RESPONSE_V2 = {'access': {
|
||||||
'user': {
|
'user': {
|
||||||
'username': 'S3_USER',
|
'username': 'S3_USER',
|
||||||
@ -130,8 +130,7 @@ class S3TokenMiddlewareTestBase(unittest.TestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(S3TokenMiddlewareTestBase, self).setUp()
|
super(S3TokenMiddlewareTestBase, self).setUp()
|
||||||
self.logger = fixtures.FakeLogger(level=logging.DEBUG)
|
self.logger = debug_logger()
|
||||||
self.logger.setUp()
|
|
||||||
self.time_patcher = mock.patch.object(time, 'time', lambda: 1234)
|
self.time_patcher = mock.patch.object(time, 'time', lambda: 1234)
|
||||||
self.time_patcher.start()
|
self.time_patcher.start()
|
||||||
|
|
||||||
@ -139,15 +138,19 @@ class S3TokenMiddlewareTestBase(unittest.TestCase):
|
|||||||
self.conf = {
|
self.conf = {
|
||||||
'auth_uri': self.TEST_AUTH_URI,
|
'auth_uri': self.TEST_AUTH_URI,
|
||||||
}
|
}
|
||||||
self.middleware = s3token.S3Token(self.app, self.conf)
|
self.middleware = self.make_middleware(self.conf)
|
||||||
|
|
||||||
self.requests_mock = rm_fixture.Fixture()
|
self.requests_mock = rm_fixture.Fixture()
|
||||||
self.requests_mock.setUp()
|
self.requests_mock.setUp()
|
||||||
|
|
||||||
|
def make_middleware(self, conf):
|
||||||
|
with mock.patch('swift.common.middleware.s3api.s3token.get_logger',
|
||||||
|
return_value=self.logger):
|
||||||
|
return s3token.S3Token(self.app, conf)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.requests_mock.cleanUp()
|
self.requests_mock.cleanUp()
|
||||||
self.time_patcher.stop()
|
self.time_patcher.stop()
|
||||||
self.logger.cleanUp()
|
|
||||||
super(S3TokenMiddlewareTestBase, self).tearDown()
|
super(S3TokenMiddlewareTestBase, self).tearDown()
|
||||||
|
|
||||||
def start_fake_response(self, status, headers):
|
def start_fake_response(self, status, headers):
|
||||||
@ -267,8 +270,8 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
'%s/s3tokens' % auth_uri,
|
'%s/s3tokens' % auth_uri,
|
||||||
status_code=201, json=GOOD_RESPONSE_V2)
|
status_code=201, json=GOOD_RESPONSE_V2)
|
||||||
|
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': auth_uri})(self.app)
|
'auth_uri': auth_uri})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
@ -286,8 +289,8 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
'%s/s3tokens' % auth_uri,
|
'%s/s3tokens' % auth_uri,
|
||||||
status_code=201, json=GOOD_RESPONSE_V2)
|
status_code=201, json=GOOD_RESPONSE_V2)
|
||||||
|
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': auth_uri})(self.app)
|
'auth_uri': auth_uri})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
@ -298,8 +301,8 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
self._assert_authorized(req)
|
self._assert_authorized(req)
|
||||||
|
|
||||||
def test_authorized_trailing_slash(self):
|
def test_authorized_trailing_slash(self):
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': self.TEST_AUTH_URI + '/'})(self.app)
|
'auth_uri': self.TEST_AUTH_URI + '/'})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
@ -321,8 +324,8 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
|
|
||||||
@mock.patch.object(requests, 'post')
|
@mock.patch.object(requests, 'post')
|
||||||
def test_insecure(self, MOCK_REQUEST):
|
def test_insecure(self, MOCK_REQUEST):
|
||||||
self.middleware = s3token.filter_factory(
|
self.middleware = self.make_middleware({
|
||||||
{'insecure': 'True', 'auth_uri': 'http://example.com'})(self.app)
|
'insecure': 'True', 'auth_uri': 'http://example.com'})
|
||||||
|
|
||||||
text_return_value = json.dumps(GOOD_RESPONSE_V2)
|
text_return_value = json.dumps(GOOD_RESPONSE_V2)
|
||||||
MOCK_REQUEST.return_value = TestResponse({
|
MOCK_REQUEST.return_value = TestResponse({
|
||||||
@ -405,10 +408,10 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
|
|
||||||
@mock.patch.object(requests, 'post')
|
@mock.patch.object(requests, 'post')
|
||||||
def test_http_timeout(self, MOCK_REQUEST):
|
def test_http_timeout(self, MOCK_REQUEST):
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'http_timeout': '2',
|
'http_timeout': '2',
|
||||||
'auth_uri': 'http://example.com',
|
'auth_uri': 'http://example.com',
|
||||||
})(FakeApp())
|
})
|
||||||
|
|
||||||
MOCK_REQUEST.return_value = TestResponse({
|
MOCK_REQUEST.return_value = TestResponse({
|
||||||
'status_code': 201,
|
'status_code': 201,
|
||||||
@ -432,7 +435,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
middleware = s3token.filter_factory({
|
middleware = s3token.filter_factory({
|
||||||
'http_timeout': val,
|
'http_timeout': val,
|
||||||
'auth_uri': 'http://example.com',
|
'auth_uri': 'http://example.com',
|
||||||
})(FakeApp())
|
})(self.app)
|
||||||
self.assertEqual(float(val), middleware._timeout)
|
self.assertEqual(float(val), middleware._timeout)
|
||||||
|
|
||||||
bad_values = ['1, 4', '-3', '100', 'foo', '0']
|
bad_values = ['1, 4', '-3', '100', 'foo', '0']
|
||||||
@ -441,7 +444,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
s3token.filter_factory({
|
s3token.filter_factory({
|
||||||
'http_timeout': val,
|
'http_timeout': val,
|
||||||
'auth_uri': 'http://example.com',
|
'auth_uri': 'http://example.com',
|
||||||
})(FakeApp())
|
})(self.app)
|
||||||
self.assertTrue(ctx.exception.args[0].startswith((
|
self.assertTrue(ctx.exception.args[0].startswith((
|
||||||
'invalid literal for float():',
|
'invalid literal for float():',
|
||||||
'could not convert string to float:',
|
'could not convert string to float:',
|
||||||
@ -450,7 +453,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
|
|
||||||
# default is 10 seconds
|
# default is 10 seconds
|
||||||
middleware = s3token.filter_factory({
|
middleware = s3token.filter_factory({
|
||||||
'auth_uri': 'http://example.com'})(FakeApp())
|
'auth_uri': 'http://example.com'})(self.app)
|
||||||
self.assertEqual(10, middleware._timeout)
|
self.assertEqual(10, middleware._timeout)
|
||||||
|
|
||||||
def test_bad_auth_uris(self):
|
def test_bad_auth_uris(self):
|
||||||
@ -514,7 +517,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
@mock.patch.object(requests, 'post')
|
@mock.patch.object(requests, 'post')
|
||||||
def test_secret_is_cached(self, MOCK_REQUEST, MOCK_KEYSTONE,
|
def test_secret_is_cached(self, MOCK_REQUEST, MOCK_KEYSTONE,
|
||||||
MOCK_CACHE_FROM_ENV):
|
MOCK_CACHE_FROM_ENV):
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': 'http://example.com',
|
'auth_uri': 'http://example.com',
|
||||||
'secret_cache_duration': '20',
|
'secret_cache_duration': '20',
|
||||||
'auth_type': 'v3password',
|
'auth_type': 'v3password',
|
||||||
@ -524,7 +527,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
'project_name': 'service',
|
'project_name': 'service',
|
||||||
'user_domain_name': 'default',
|
'user_domain_name': 'default',
|
||||||
'project_domain_name': 'default',
|
'project_domain_name': 'default',
|
||||||
})(FakeApp())
|
})
|
||||||
self.assertEqual(20, self.middleware._secret_cache_duration)
|
self.assertEqual(20, self.middleware._secret_cache_duration)
|
||||||
self.assertIsNone(MOCK_KEYSTONE.mock_calls[0][2]['region_name'])
|
self.assertIsNone(MOCK_KEYSTONE.mock_calls[0][2]['region_name'])
|
||||||
|
|
||||||
@ -553,7 +556,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
@mock.patch.object(requests, 'post')
|
@mock.patch.object(requests, 'post')
|
||||||
def test_secret_sets_cache(self, MOCK_REQUEST, MOCK_KEYSTONE,
|
def test_secret_sets_cache(self, MOCK_REQUEST, MOCK_KEYSTONE,
|
||||||
MOCK_CACHE_FROM_ENV):
|
MOCK_CACHE_FROM_ENV):
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': 'http://example.com',
|
'auth_uri': 'http://example.com',
|
||||||
'secret_cache_duration': '20',
|
'secret_cache_duration': '20',
|
||||||
'auth_type': 'v3password',
|
'auth_type': 'v3password',
|
||||||
@ -564,7 +567,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):
|
|||||||
'user_domain_name': 'default',
|
'user_domain_name': 'default',
|
||||||
'project_domain_name': 'default',
|
'project_domain_name': 'default',
|
||||||
'region_name': 'some-other-region',
|
'region_name': 'some-other-region',
|
||||||
})(FakeApp())
|
})
|
||||||
self.assertEqual(20, self.middleware._secret_cache_duration)
|
self.assertEqual(20, self.middleware._secret_cache_duration)
|
||||||
self.assertEqual(MOCK_KEYSTONE.mock_calls[0][2]['region_name'],
|
self.assertEqual(MOCK_KEYSTONE.mock_calls[0][2]['region_name'],
|
||||||
'some-other-region')
|
'some-other-region')
|
||||||
@ -726,7 +729,7 @@ class S3TokenMiddlewareTestDeferredAuth(S3TokenMiddlewareTestBase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(S3TokenMiddlewareTestDeferredAuth, self).setUp()
|
super(S3TokenMiddlewareTestDeferredAuth, self).setUp()
|
||||||
self.conf['delay_auth_decision'] = 'yes'
|
self.conf['delay_auth_decision'] = 'yes'
|
||||||
self.middleware = s3token.S3Token(FakeApp(), self.conf)
|
self.middleware = self.make_middleware(self.conf)
|
||||||
|
|
||||||
def test_unauthorized_token(self):
|
def test_unauthorized_token(self):
|
||||||
ret = {"error":
|
ret = {"error":
|
||||||
@ -852,8 +855,8 @@ class S3TokenMiddlewareTestV3(S3TokenMiddlewareTestBase):
|
|||||||
auth_uri + 's3tokens',
|
auth_uri + 's3tokens',
|
||||||
status_code=201, json=GOOD_RESPONSE_V3)
|
status_code=201, json=GOOD_RESPONSE_V3)
|
||||||
|
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': auth_uri})(self.app)
|
'auth_uri': auth_uri})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
@ -869,8 +872,8 @@ class S3TokenMiddlewareTestV3(S3TokenMiddlewareTestBase):
|
|||||||
auth_uri + 's3tokens',
|
auth_uri + 's3tokens',
|
||||||
status_code=201, json=GOOD_RESPONSE_V3)
|
status_code=201, json=GOOD_RESPONSE_V3)
|
||||||
|
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': auth_uri})(self.app)
|
'auth_uri': auth_uri})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
@ -881,8 +884,8 @@ class S3TokenMiddlewareTestV3(S3TokenMiddlewareTestBase):
|
|||||||
self._assert_authorized(req)
|
self._assert_authorized(req)
|
||||||
|
|
||||||
def test_authorized_trailing_slash(self):
|
def test_authorized_trailing_slash(self):
|
||||||
self.middleware = s3token.filter_factory({
|
self.middleware = self.make_middleware({
|
||||||
'auth_uri': self.TEST_AUTH_URI + '/'})(self.app)
|
'auth_uri': self.TEST_AUTH_URI + '/'})
|
||||||
req = Request.blank('/v1/AUTH_cfa/c/o')
|
req = Request.blank('/v1/AUTH_cfa/c/o')
|
||||||
req.environ['s3api.auth_details'] = {
|
req.environ['s3api.auth_details'] = {
|
||||||
'access_key': u'access',
|
'access_key': u'access',
|
||||||
|
Loading…
Reference in New Issue
Block a user