summaryrefslogtreecommitdiff
path: root/tests/unit/test_shell.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_shell.py')
-rw-r--r--tests/unit/test_shell.py197
1 files changed, 170 insertions, 27 deletions
diff --git a/tests/unit/test_shell.py b/tests/unit/test_shell.py
index 718615d..9408e73 100644
--- a/tests/unit/test_shell.py
+++ b/tests/unit/test_shell.py
@@ -143,6 +143,28 @@ class TestShell(unittest.TestCase):
' Bytes: 3\n')
@mock.patch('swiftclient.service.Connection')
+ def test_stat_account_with_headers(self, connection):
+ argv = ["", "stat", "-H", "Skip-Middleware: Test"]
+ return_headers = {
+ 'x-account-container-count': '1',
+ 'x-account-object-count': '2',
+ 'x-account-bytes-used': '3',
+ 'content-length': 0,
+ 'date': ''}
+ connection.return_value.head_account.return_value = return_headers
+ connection.return_value.url = 'http://127.0.0.1/v1/AUTH_account'
+ with CaptureOutput() as output:
+ swiftclient.shell.main(argv)
+
+ self.assertEqual(output.out,
+ ' Account: AUTH_account\n'
+ 'Containers: 1\n'
+ ' Objects: 2\n'
+ ' Bytes: 3\n')
+ self.assertEqual(connection.return_value.head_account.mock_calls, [
+ mock.call(headers={'Skip-Middleware': 'Test'})])
+
+ @mock.patch('swiftclient.service.Connection')
def test_stat_container(self, connection):
return_headers = {
'x-container-object-count': '1',
@@ -169,6 +191,34 @@ class TestShell(unittest.TestCase):
' Sync Key: secret\n')
@mock.patch('swiftclient.service.Connection')
+ def test_stat_container_with_headers(self, connection):
+ return_headers = {
+ 'x-container-object-count': '1',
+ 'x-container-bytes-used': '2',
+ 'x-container-read': 'test2:tester2',
+ 'x-container-write': 'test3:tester3',
+ 'x-container-sync-to': 'other',
+ 'x-container-sync-key': 'secret',
+ }
+ argv = ["", "stat", "container", "-H", "Skip-Middleware: Test"]
+ connection.return_value.head_container.return_value = return_headers
+ connection.return_value.url = 'http://127.0.0.1/v1/AUTH_account'
+ with CaptureOutput() as output:
+ swiftclient.shell.main(argv)
+
+ self.assertEqual(output.out,
+ ' Account: AUTH_account\n'
+ 'Container: container\n'
+ ' Objects: 1\n'
+ ' Bytes: 2\n'
+ ' Read ACL: test2:tester2\n'
+ 'Write ACL: test3:tester3\n'
+ ' Sync To: other\n'
+ ' Sync Key: secret\n')
+ self.assertEqual(connection.return_value.head_container.mock_calls, [
+ mock.call('container', headers={'Skip-Middleware': 'Test'})])
+
+ @mock.patch('swiftclient.service.Connection')
def test_stat_object(self, connection):
return_headers = {
'x-object-manifest': 'manifest',
@@ -195,6 +245,36 @@ class TestShell(unittest.TestCase):
' Manifest: manifest\n')
@mock.patch('swiftclient.service.Connection')
+ def test_stat_object_with_headers(self, connection):
+ return_headers = {
+ 'x-object-manifest': 'manifest',
+ 'etag': 'md5',
+ 'last-modified': 'yesterday',
+ 'content-type': 'text/plain',
+ 'content-length': 42,
+ }
+ argv = ["", "stat", "container", "object",
+ "-H", "Skip-Middleware: Test"]
+ connection.return_value.head_object.return_value = return_headers
+ connection.return_value.url = 'http://127.0.0.1/v1/AUTH_account'
+
+ with CaptureOutput() as output:
+ swiftclient.shell.main(argv)
+
+ self.assertEqual(output.out,
+ ' Account: AUTH_account\n'
+ ' Container: container\n'
+ ' Object: object\n'
+ ' Content Type: text/plain\n'
+ 'Content Length: 42\n'
+ ' Last Modified: yesterday\n'
+ ' ETag: md5\n'
+ ' Manifest: manifest\n')
+ self.assertEqual(connection.return_value.head_object.mock_calls, [
+ mock.call('container', 'object',
+ headers={'Skip-Middleware': 'Test'})])
+
+ @mock.patch('swiftclient.service.Connection')
def test_list_account(self, connection):
# Test account listing
connection.return_value.get_account.side_effect = [
@@ -206,8 +286,28 @@ class TestShell(unittest.TestCase):
with CaptureOutput() as output:
swiftclient.shell.main(argv)
- calls = [mock.call(marker='', prefix=None),
- mock.call(marker='container', prefix=None)]
+ calls = [mock.call(marker='', prefix=None, headers={}),
+ mock.call(marker='container', prefix=None, headers={})]
+ connection.return_value.get_account.assert_has_calls(calls)
+
+ self.assertEqual(output.out, 'container\n')
+
+ @mock.patch('swiftclient.service.Connection')
+ def test_list_account_with_headers(self, connection):
+ # Test account listing
+ connection.return_value.get_account.side_effect = [
+ [None, [{'name': 'container'}]],
+ [None, []],
+ ]
+
+ argv = ["", "list", '-H', 'Skip-Custom-Middleware: True']
+
+ with CaptureOutput() as output:
+ swiftclient.shell.main(argv)
+ calls = [mock.call(marker='', prefix=None,
+ headers={'Skip-Custom-Middleware': 'True'}),
+ mock.call(marker='container', prefix=None,
+ headers={'Skip-Custom-Middleware': 'True'})]
connection.return_value.get_account.assert_has_calls(calls)
self.assertEqual(output.out, 'container\n')
@@ -223,8 +323,8 @@ class TestShell(unittest.TestCase):
argv = ["", "list", "--lh"]
with CaptureOutput() as output:
swiftclient.shell.main(argv)
- calls = [mock.call(marker='', prefix=None),
- mock.call(marker='container', prefix=None)]
+ calls = [mock.call(marker='', prefix=None, headers={}),
+ mock.call(marker='container', prefix=None, headers={})]
connection.return_value.get_account.assert_has_calls(calls)
self.assertEqual(output.out,
@@ -243,8 +343,8 @@ class TestShell(unittest.TestCase):
argv = ["", "list", "--lh"]
with CaptureOutput() as output:
swiftclient.shell.main(argv)
- calls = [mock.call(marker='', prefix=None),
- mock.call(marker='container', prefix=None)]
+ calls = [mock.call(marker='', prefix=None, headers={}),
+ mock.call(marker='container', prefix=None, headers={})]
connection.return_value.get_account.assert_has_calls(calls)
self.assertEqual(output.out,
@@ -273,7 +373,7 @@ class TestShell(unittest.TestCase):
argv = ["", "list", "--lh", "--totals"]
with CaptureOutput() as output:
swiftclient.shell.main(argv)
- calls = [mock.call(marker='', prefix=None)]
+ calls = [mock.call(marker='', prefix=None, headers={})]
connection.return_value.get_account.assert_has_calls(calls)
self.assertEqual(output.out, ' 6 3\n')
@@ -287,9 +387,10 @@ class TestShell(unittest.TestCase):
with CaptureOutput() as output:
swiftclient.shell.main(argv)
calls = [
- mock.call('container', marker='', delimiter=None, prefix=None),
+ mock.call('container', marker='',
+ delimiter=None, prefix=None, headers={}),
mock.call('container', marker='object_a',
- delimiter=None, prefix=None)]
+ delimiter=None, prefix=None, headers={})]
connection.return_value.get_container.assert_has_calls(calls)
self.assertEqual(output.out, 'object_a\n')
@@ -305,9 +406,10 @@ class TestShell(unittest.TestCase):
with CaptureOutput() as output:
swiftclient.shell.main(argv)
calls = [
- mock.call('container', marker='', delimiter=None, prefix=None),
+ mock.call('container', marker='',
+ delimiter=None, prefix=None, headers={}),
mock.call('container', marker='object_a',
- delimiter=None, prefix=None)]
+ delimiter=None, prefix=None, headers={})]
connection.return_value.get_container.assert_has_calls(calls)
self.assertEqual(output.out,
@@ -315,6 +417,26 @@ class TestShell(unittest.TestCase):
' type/content object_a\n'
' 0\n')
+ @mock.patch('swiftclient.service.Connection')
+ def test_list_container_with_headers(self, connection):
+ connection.return_value.get_container.side_effect = [
+ [None, [{'name': 'object_a'}]],
+ [None, []],
+ ]
+ argv = ["", "list", "container", "-H", "Skip-Middleware: Test"]
+ with CaptureOutput() as output:
+ swiftclient.shell.main(argv)
+ calls = [
+ mock.call('container', marker='',
+ delimiter=None, prefix=None,
+ headers={'Skip-Middleware': 'Test'}),
+ mock.call('container', marker='object_a',
+ delimiter=None, prefix=None,
+ headers={'Skip-Middleware': 'Test'})]
+ connection.return_value.get_container.assert_has_calls(calls)
+
+ self.assertEqual(output.out, 'object_a\n')
+
@mock.patch('swiftclient.service.makedirs')
@mock.patch('swiftclient.service.Connection')
def test_download(self, connection, makedirs):
@@ -835,19 +957,19 @@ class TestShell(unittest.TestCase):
swiftclient.shell.main(argv)
connection.return_value.delete_object.assert_has_calls([
mock.call('container', 'object', query_string=None,
- response_dict={}),
+ response_dict={}, headers={}),
mock.call('container', 'obj\xe9ct2', query_string=None,
- response_dict={}),
+ response_dict={}, headers={}),
mock.call('container2', 'object', query_string=None,
- response_dict={})], any_order=True)
+ response_dict={}, headers={})], any_order=True)
self.assertEqual(3, connection.return_value.delete_object.call_count,
'Expected 3 calls but found\n%r'
% connection.return_value.delete_object.mock_calls)
self.assertEqual(
connection.return_value.delete_container.mock_calls, [
- mock.call('container', response_dict={}),
- mock.call('container2', response_dict={}),
- mock.call('empty_container', response_dict={})])
+ mock.call('container', response_dict={}, headers={}),
+ mock.call('container2', response_dict={}, headers={}),
+ mock.call('empty_container', response_dict={}, headers={})])
@mock.patch.object(swiftclient.service.SwiftService, '_should_bulk_delete',
lambda *a: True)
@@ -900,9 +1022,9 @@ class TestShell(unittest.TestCase):
connection.return_value.post_account.mock_calls[2])
self.assertEqual(
connection.return_value.delete_container.mock_calls, [
- mock.call('container', response_dict={}),
- mock.call('container2', response_dict={}),
- mock.call('empty_container', response_dict={})])
+ mock.call('container', response_dict={}, headers={}),
+ mock.call('container2', response_dict={}, headers={}),
+ mock.call('empty_container', response_dict={}, headers={})])
@mock.patch('swiftclient.service.Connection')
def test_delete_bulk_account_with_capabilities(self, connection):
@@ -957,9 +1079,9 @@ class TestShell(unittest.TestCase):
response_dict={})])
self.assertEqual(
connection.return_value.delete_container.mock_calls, [
- mock.call('container', response_dict={}),
- mock.call('container2', response_dict={}),
- mock.call('empty_container', response_dict={})])
+ mock.call('container', response_dict={}, headers={}),
+ mock.call('container2', response_dict={}, headers={}),
+ mock.call('empty_container', response_dict={}, headers={})])
self.assertEqual(connection.return_value.get_capabilities.mock_calls,
[mock.call(None)]) # only one /info request
@@ -976,9 +1098,29 @@ class TestShell(unittest.TestCase):
connection.return_value.head_object.return_value = {}
swiftclient.shell.main(argv)
connection.return_value.delete_container.assert_called_with(
- 'container', response_dict={})
+ 'container', response_dict={}, headers={})
+ connection.return_value.delete_object.assert_called_with(
+ 'container', 'object', query_string=None, response_dict={},
+ headers={})
+
+ @mock.patch.object(swiftclient.service.SwiftService, '_should_bulk_delete',
+ lambda *a: False)
+ @mock.patch('swiftclient.service.Connection')
+ def test_delete_container_headers(self, connection):
+ connection.return_value.get_container.side_effect = [
+ [None, [{'name': 'object'}]],
+ [None, []],
+ ]
+ connection.return_value.attempts = 0
+ argv = ["", "delete", "container", "-H", "Skip-Middleware: Test"]
+ connection.return_value.head_object.return_value = {}
+ swiftclient.shell.main(argv)
+ connection.return_value.delete_container.assert_called_with(
+ 'container', response_dict={},
+ headers={'Skip-Middleware': 'Test'})
connection.return_value.delete_object.assert_called_with(
- 'container', 'object', query_string=None, response_dict={})
+ 'container', 'object', query_string=None, response_dict={},
+ headers={'Skip-Middleware': 'Test'})
@mock.patch.object(swiftclient.service.SwiftService, '_should_bulk_delete',
lambda *a: True)
@@ -1000,7 +1142,7 @@ class TestShell(unittest.TestCase):
'Accept': 'application/json'},
response_dict={})
connection.return_value.delete_container.assert_called_with(
- 'container', response_dict={})
+ 'container', response_dict={}, headers={})
def test_delete_verbose_output_utf8(self):
container = 't\u00e9st_c'
@@ -1043,7 +1185,8 @@ class TestShell(unittest.TestCase):
connection.return_value.attempts = 0
swiftclient.shell.main(argv)
connection.return_value.delete_object.assert_called_with(
- 'container', 'object', query_string=None, response_dict={})
+ 'container', 'object', query_string=None, response_dict={},
+ headers={})
@mock.patch.object(swiftclient.service.SwiftService, '_should_bulk_delete',
lambda *a: True)