~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-20 23:04:57 UTC
  • Revision ID: matt.dietz@rackspace.com-20100920230457-hmw30ii5qghk5sfm
Refactored the auth branch based on review feedback

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
import stubout
5
5
import nova.api
6
6
import nova.api.rackspace.auth
 
7
from nova import auth
7
8
from nova.tests.api.rackspace import test_helper
 
9
import datetime
8
10
 
9
11
class Test(unittest.TestCase):
10
12
    def setUp(self):
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 = {}
16
17
 
17
18
    def tearDown(self):
18
19
        self.stubs.UnsetAll()
19
20
        test_helper.fake_data_store = {}
20
21
 
21
22
    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')
 
23
        f = test_helper.FakeAuthManager()
 
24
        f.add_user('derp', { 'id': 1, 'name':'herp' } )
 
25
 
 
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'],
 
33
            "https://foo/v1.0/")
 
34
        self.assertEqual(result.headers['X-CDN-Management-Url'],
 
35
            "")
 
36
        self.assertEqual(result.headers['X-Storage-Url'], "")
 
37
 
 
38
    #def test_authorize_token(self):
 
39
    #    auth = nova.api.rackspace.auth.FakeAuth()
 
40
    #    auth.add_user('herp', 'derp')
 
41
 
 
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")
 
53
 
 
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')
 
62
    
 
63
    def test_token_expiry(self):
 
64
        self.destroy_called = False
 
65
        token_hash = 'bacon'
 
66
 
 
67
        def destroy_token_mock(meh, context, token):
 
68
            self.destroy_called = True
 
69
        
 
70
        def bad_token(meh, context, token_hash):
 
71
            return { 'token_hash':token_hash,  
 
72
                     'created_at':datetime.datetime(1990, 1, 1) }
 
73
 
 
74
        self.stubs.Set(test_helper.FakeAuthDatabase, 'auth_destroy_token',
 
75
            destroy_token_mock)
 
76
 
 
77
        self.stubs.Set(test_helper.FakeAuthDatabase, 'auth_get_token',
 
78
            bad_token)
 
79
 
 
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)
61
85
 
62
86
    def test_bad_user(self):
63
87
        req = webob.Request.blank('/v1.0/')