~soren/nova/rs_auth_fixes

« back to all changes in this revision

Viewing changes to nova/tests/api/rackspace/auth.py

  • Committer: Cerberus
  • Date: 2010-09-16 19:41:51 UTC
  • Revision ID: matt.dietz@rackspace.com-20100916194151-w5x0yu86j0ziyzu7
Replaced the existing Rackspace Auth Mechanism with one that mirrors the implementation in the design document.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import webob
 
2
import webob.dec
 
3
import unittest
 
4
import stubout
 
5
import nova.api
 
6
import nova.api.rackspace.auth
 
7
from nova.tests.api.rackspace import test_helper
 
8
 
 
9
class Test(unittest.TestCase):
 
10
    def setUp(self):
 
11
        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)
 
16
 
 
17
    def tearDown(self):
 
18
        self.stubs.UnsetAll()
 
19
        test_helper.fake_data_store = {}
 
20
 
 
21
    def test_authorize_user(self):
 
22
        auth = nova.api.rackspace.auth.FakeAuth()
 
23
        auth.add_user('herp', 'derp')
 
24
 
 
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'],
 
34
            "cdn_management_url")
 
35
        self.assertEqual(result.headers['X-Storage-Url'], "storage_url")
 
36
 
 
37
    def test_authorize_token(self):
 
38
        auth = nova.api.rackspace.auth.FakeAuth()
 
39
        auth.add_user('herp', 'derp')
 
40
 
 
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'],
 
50
            "cdn_management_url")
 
51
        self.assertEqual(result.headers['X-Storage-Url'], "storage_url")
 
52
 
 
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')
 
61
 
 
62
    def test_bad_user(self):
 
63
        req = webob.Request.blank('/v1.0/')
 
64
        req.headers['X-Auth-User'] = 'herp'
 
65
        req.headers['X-Auth-Key'] = 'derp'
 
66
        result = req.get_response(nova.api.API())
 
67
        self.assertEqual(result.status, '401 Unauthorized')
 
68
 
 
69
    def test_no_user(self):
 
70
        req = webob.Request.blank('/v1.0/')
 
71
        result = req.get_response(nova.api.API())
 
72
        self.assertEqual(result.status, '401 Unauthorized')
 
73
 
 
74
    def test_bad_token(self):
 
75
        req = webob.Request.blank('/v1.0/')
 
76
        req.headers['X-Auth-Token'] = 'baconbaconbacon'
 
77
        result = req.get_response(nova.api.API())
 
78
        self.assertEqual(result.status, '401 Unauthorized')
 
79
 
 
80
if __name__ == '__main__':
 
81
    unittest.main()