6
6
import nova.api.rackspace.auth
7
8
from nova.tests.api.rackspace import test_helper
9
11
class Test(unittest.TestCase):
11
13
self.stubs = stubout.StubOutForTesting()
12
self.stubs.Set(nova.api.rackspace.auth.FakeAuth, '__init__',
13
test_helper.fake_auth_init)
14
ds = test_helper.FakeRedis()
15
ds.hset(test_helper.auth_hash, 'rs_last_id', 0)
14
self.stubs.Set(nova.api.rackspace.auth.BasicApiAuthManager,
15
'__init__', test_helper.fake_auth_init)
16
test_helper.auth_data = {}
17
18
def tearDown(self):
18
19
self.stubs.UnsetAll()
19
20
test_helper.fake_data_store = {}
21
22
def test_authorize_user(self):
22
auth = nova.api.rackspace.auth.FakeAuth()
23
auth.add_user('herp', 'derp')
25
req = webob.Request.blank('/v1.0/')
26
req.headers['X-Auth-User'] = 'herp'
27
req.headers['X-Auth-Key'] = 'derp'
28
result = req.get_response(nova.api.API())
29
self.assertEqual(result.status, '204 No Content')
30
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
31
self.assertEqual(result.headers['X-Server-Management-Url'],
32
"server_management_url")
33
self.assertEqual(result.headers['X-CDN-Management-Url'],
35
self.assertEqual(result.headers['X-Storage-Url'], "storage_url")
37
def test_authorize_token(self):
38
auth = nova.api.rackspace.auth.FakeAuth()
39
auth.add_user('herp', 'derp')
41
req = webob.Request.blank('/v1.0/')
42
req.headers['X-Auth-User'] = 'herp'
43
req.headers['X-Auth-Key'] = 'derp'
44
result = req.get_response(nova.api.API())
45
self.assertEqual(result.status, '204 No Content')
46
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
47
self.assertEqual(result.headers['X-Server-Management-Url'],
48
"server_management_url")
49
self.assertEqual(result.headers['X-CDN-Management-Url'],
51
self.assertEqual(result.headers['X-Storage-Url'], "storage_url")
53
token = result.headers['X-Auth-Token']
54
self.stubs.Set(nova.api.rackspace, 'APIRouter',
55
test_helper.FakeRouter)
56
req = webob.Request.blank('/v1.0/fake')
57
req.headers['X-Auth-Token'] = token
58
result = req.get_response(nova.api.API())
59
self.assertEqual(result.status, '200 OK')
60
self.assertEqual(result.headers['X-Test-Success'], 'True')
23
f = test_helper.FakeAuthManager()
24
f.add_user('derp', { 'id': 1, 'name':'herp' } )
26
req = webob.Request.blank('/v1.0/')
27
req.headers['X-Auth-User'] = 'herp'
28
req.headers['X-Auth-Key'] = 'derp'
29
result = req.get_response(nova.api.API())
30
self.assertEqual(result.status, '204 No Content')
31
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
32
self.assertEqual(result.headers['X-Server-Management-Url'],
34
self.assertEqual(result.headers['X-CDN-Management-Url'],
36
self.assertEqual(result.headers['X-Storage-Url'], "")
38
#def test_authorize_token(self):
39
# auth = nova.api.rackspace.auth.FakeAuth()
40
# auth.add_user('herp', 'derp')
42
# req = webob.Request.blank('/v1.0/')
43
# req.headers['X-Auth-User'] = 'herp'
44
# req.headers['X-Auth-Key'] = 'derp'
45
# result = req.get_response(nova.api.API())
46
# self.assertEqual(result.status, '204 No Content')
47
# self.assertEqual(len(result.headers['X-Auth-Token']), 40)
48
# self.assertEqual(result.headers['X-Server-Management-Url'],
49
# "server_management_url")
50
# self.assertEqual(result.headers['X-CDN-Management-Url'],
51
# "cdn_management_url")
52
# self.assertEqual(result.headers['X-Storage-Url'], "storage_url")
54
# token = result.headers['X-Auth-Token']
55
# self.stubs.Set(nova.api.rackspace, 'APIRouter',
56
# test_helper.FakeRouter)
57
# req = webob.Request.blank('/v1.0/fake')
58
# req.headers['X-Auth-Token'] = token
59
# result = req.get_response(nova.api.API())
60
# self.assertEqual(result.status, '200 OK')
61
# self.assertEqual(result.headers['X-Test-Success'], 'True')
63
def test_token_expiry(self):
64
self.destroy_called = False
67
def destroy_token_mock(meh, context, token):
68
self.destroy_called = True
70
def bad_token(meh, context, token_hash):
71
return { 'token_hash':token_hash,
72
'created_at':datetime.datetime(1990, 1, 1) }
74
self.stubs.Set(test_helper.FakeAuthDatabase, 'auth_destroy_token',
77
self.stubs.Set(test_helper.FakeAuthDatabase, 'auth_get_token',
80
req = webob.Request.blank('/v1.0/')
81
req.headers['X-Auth-Token'] = 'bacon'
82
result = req.get_response(nova.api.API())
83
self.assertEqual(result.status, '401 Unauthorized')
84
self.assertEqual(self.destroy_called, True)
62
86
def test_bad_user(self):
63
87
req = webob.Request.blank('/v1.0/')