Fixed TestObjectController.test_PUT_auto_content_type()

The test was failing silently. To catch these errors the response
from controller.PUT() is now checked.

Fixes to the TestObjectController.test_PUT_auto_content_type():
* Check for the correct 'Content-Type' header in the fake connect() method
* Pass in the correct number of responses to fake_http_connect()
* Pass a 'transfer-encoding' header to PUT() so that
  constraints.check_object_creation() passes
* Pass the correct number of elements in the 'expected' iter to the
  test_content_type() method

Change-Id: I8dced7b2f3c7e1b1d292c6995b1faf46f5e863fe
This commit is contained in:
Adrian Smith 2012-04-15 09:49:35 +01:00
parent 40cbff9fd3
commit 50b437a836
1 changed files with 16 additions and 7 deletions

View File

@ -228,8 +228,8 @@ def fake_http_connect(*code_iter, **kwargs):
def connect(*args, **ckwargs):
if 'give_content_type' in kwargs:
if len(args) >= 7 and 'content_type' in args[6]:
kwargs['give_content_type'](args[6]['content-type'])
if len(args) >= 7 and 'Content-Type' in args[6]:
kwargs['give_content_type'](args[6]['Content-Type'])
else:
kwargs['give_content_type']('')
if 'give_connect' in kwargs:
@ -795,17 +795,26 @@ class TestObjectController(unittest.TestCase):
'container', 'object')
def test_content_type(filename, expected):
proxy_server.http_connect = fake_http_connect(201, 201, 201,
# The three responses here are for account_info() (HEAD to account server),
# container_info() (HEAD to container server) and three calls to
# _connect_put_node() (PUT to three object servers)
proxy_server.http_connect = fake_http_connect(201, 201, 201, 201, 201,
give_content_type=lambda content_type:
self.assertEquals(content_type, expected.next()))
req = Request.blank('/a/c/%s' % filename, {})
# We need into include a transfer-encoding to get past
# constraints.check_object_creation()
req = Request.blank('/a/c/%s' % filename, {}, headers={'transfer-encoding': 'chunked'})
self.app.update_request(req)
self.app.memcache.store = {}
res = controller.PUT(req)
test_content_type('test.jpg', iter(['', '', '', 'image/jpeg',
# If we don't check the response here we could miss problems in PUT()
self.assertEquals(res.status_int, 201)
test_content_type('test.jpg', iter(['', '', 'image/jpeg',
'image/jpeg', 'image/jpeg']))
test_content_type('test.html', iter(['', '', '', 'text/html',
test_content_type('test.html', iter(['', '', 'text/html',
'text/html', 'text/html']))
test_content_type('test.css', iter(['', '', '', 'text/css',
test_content_type('test.css', iter(['', '', 'text/css',
'text/css', 'text/css']))
def test_custom_mime_types_files(self):