summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaulo Ewerton <pauloewerton@lsd.ufcg.edu.br>2016-03-29 19:10:42 +0000
committerTim Burke <tim.burke@gmail.com>2016-05-19 17:27:31 -0700
commit73e4296a389893c750f7c70a477ec828e4360197 (patch)
treebce36a7e3ec4fac46d0661c3321e153f23073be8 /tests
parentf9d0657e70e9511a2d7b4c63bbf06b138dd0be5e (diff)
downloadpython-swiftclient-73e4296a389893c750f7c70a477ec828e4360197.tar.gz
Adding keystoneauth sessions support
This patch allows authentication in swiftclient with a keystonauth session. Co-Authored-By: Tim Burke <tim@swiftstack.com> Change-Id: Ia3fd947ff619c11ff0ce474897533dcf7b49d9b3 Closes-Bug: 1518938
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_swiftclient.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/unit/test_swiftclient.py b/tests/unit/test_swiftclient.py
index cbb95db..07ae502 100644
--- a/tests/unit/test_swiftclient.py
+++ b/tests/unit/test_swiftclient.py
@@ -561,6 +561,15 @@ class TestGetAuth(MockHttpTest):
self.assertTrue(url.startswith("http"))
self.assertTrue(token)
+ def test_auth_with_session(self):
+ mock_session = mock.MagicMock()
+ mock_session.get_endpoint.return_value = 'http://storagehost/v1/acct'
+ mock_session.get_token.return_value = 'token'
+ url, token = c.get_auth('http://www.test.com', 'asdf', 'asdf',
+ session=mock_session)
+ self.assertEqual(url, 'http://storagehost/v1/acct')
+ self.assertTrue(token)
+
class TestGetAccount(MockHttpTest):
@@ -1868,6 +1877,39 @@ class TestConnection(MockHttpTest):
('HEAD', '/v1/AUTH_test', '', {'x-auth-token': 'token'}),
])
+ def test_session_no_invalidate(self):
+ mock_session = mock.MagicMock()
+ mock_session.get_endpoint.return_value = 'http://storagehost/v1/acct'
+ mock_session.get_token.return_value = 'expired'
+ mock_session.invalidate.return_value = False
+ conn = c.Connection(session=mock_session)
+ fake_conn = self.fake_http_connection(401)
+ with mock.patch.multiple('swiftclient.client',
+ http_connection=fake_conn,
+ sleep=mock.DEFAULT):
+ self.assertRaises(c.ClientException, conn.head_account)
+ self.assertEqual(mock_session.get_token.mock_calls, [mock.call()])
+ self.assertEqual(mock_session.invalidate.mock_calls, [mock.call()])
+
+ def test_session_can_invalidate(self):
+ mock_session = mock.MagicMock()
+ mock_session.get_endpoint.return_value = 'http://storagehost/v1/acct'
+ mock_session.get_token.side_effect = ['expired', 'token']
+ mock_session.invalidate.return_value = True
+ conn = c.Connection(session=mock_session)
+ fake_conn = self.fake_http_connection(401, 200)
+ with mock.patch.multiple('swiftclient.client',
+ http_connection=fake_conn,
+ sleep=mock.DEFAULT):
+ conn.head_account()
+ self.assertRequests([
+ ('HEAD', '/v1/acct', '', {'x-auth-token': 'expired'}),
+ ('HEAD', '/v1/acct', '', {'x-auth-token': 'token'}),
+ ])
+ self.assertEqual(mock_session.get_token.mock_calls, [
+ mock.call(), mock.call()])
+ self.assertEqual(mock_session.invalidate.mock_calls, [mock.call()])
+
def test_preauth_token_with_no_storage_url_requires_auth(self):
conn = c.Connection(
'http://auth.example.com', 'user', 'password',