Revision 274bcf7a kamaki/clients/test/astakos.py

b/kamaki/clients/test/astakos.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
from mock import Mock, patch
34
from mock import patch
35 35

  
36 36
from unittest import TestCase
37 37
from kamaki.clients.astakos import AstakosClient
38
from json import dumps
38

  
39

  
40
example = dict(
41
        name='Simple Name',
42
        username='User Full Name',
43
        auth_token_expires='1362583796000',
44
        auth_token_created='1359991796000',
45
        email=['user@example.gr'],
46
        id=42,
47
        uuid='aus3r-uu1d-f0r-73s71ng-as7ak0s')
48

  
49
example0 = dict(
50
        name='Simple Name 0',
51
        username='User Full Name 0',
52
        auth_token_expires='1362583796001',
53
        auth_token_created='1359991796001',
54
        email=['user0@example.gr'],
55
        id=32,
56
        uuid='an07h2r-us3r-uu1d-f0r-as7ak0s')
39 57

  
40 58

  
41 59
class Astakos(TestCase):
42 60

  
43 61
    class fakeResponse(object):
44
        json = dumps(dict(
45
            name='Simple Name',
46
            username='User Full Name',
47
            auth_token_expires='1362583796000',
48
            auth_token_created='1359991796000',
49
            email=['user@example.gr'],
50
            id=42,
51
            uuid='aus3r-uu1d-f0r-73s71ng-as7ak0s'))
62
        json = example
52 63
        headers = {}
53 64
        content = json
54 65
        status = None
......
57 68
        def release(self):
58 69
            pass
59 70

  
71
    cached = False
72

  
60 73
    def setUp(self):
61 74
        self.url = 'https://astakos.example.com'
62 75
        self.token = 'ast@k0sT0k3n=='
......
65 78
        self.C = KamakiHTTPConnection
66 79
        self.FR = self.fakeResponse
67 80

  
68
    def test_authenticate(self):
81
    def _authenticate(self):
69 82
        with patch.object(self.C, 'perform_request', return_value=self.FR()):
70 83
            r = self.client.authenticate()
71
            for term in (
72
                    'name',
73
                    'username',
74
                    'auth_token_expires',
75
                    'auth_token_created',
76
                    'uuid',
77
                    'id',
78
                    'email'):
79
                self.assertTrue(term in r)
80

  
81
    """
82
    def test_info(self):
83
        self._test_0020_info()
84
        self.cached = True
85
        return r
84 86

  
85
    def _test_0020_info(self):
86
        self.assertTrue(set([
87
            'name',
88
            'username',
89
            'uuid']).issubset(self.client.info().keys()))
87
    def test_authenticate(self):
88
        r = self._authenticate()
89
        self.assertEqual(self.client.http_client.url, self.url)
90
        self.assertEqual(self.client.http_client.path, '/im/authenticate')
91
        for term, val in example.items():
92
            self.assertTrue(term in r)
93
            self.assertEqual(val, r[term])
90 94

  
91
    def test_get(self):
92
        self._test_0020_get()
95
    def test_info(self):
96
        if not self.cached:
97
            self._authenticate()
98
            return self.test_info()
99
        self.assertTrue(set(
100
            example.keys()).issubset(self.client.info().keys()))
93 101

  
94
    def _test_0020_get(self):
95
        for term in ('uuid', 'name', 'username'):
96
            self.assertEqual(
97
                self.client.term(term, self['astakos', 'token']),
98
                self['astakos', term])
99
        self.assertTrue(self['astakos', 'email'] in self.client.term('email'))
102
    def test_get(self):
103
        if not self.cached:
104
            self._authenticate()
105
            return self.test_get()
106
        for term, val in example.items():
107
            self.assertEqual(self.client.term(term, self.token), val)
108
        self.assertTrue(example['email'][0] in self.client.term('email'))
100 109

  
101 110
    def test_list(self):
102
        self.client.authenticate()
103
        self._test_0020_list()
104

  
105
    def _test_0020_list(self):
106
        terms = set(['name', 'username', 'uuid', 'email', 'auth_token'])
107
        uuid = 0
108
        for r in self.client.list():
109
            self.assertTrue(terms.issubset(r.keys()))
110
            self.assertTrue(uuid != r['uuid'] if uuid else True)
111
            uuid = r['uuid']
112
    """
111
        if not self.cached:
112
            self._authenticate
113
        with patch.object(self.FR, 'json', return_value=example0):
114
            self._authenticate()
115
        r = self.client.list()
116
        self.assertTrue(len(r) == 1)
117
        self.assertEqual(r[0]['auth_token'], self.token)

Also available in: Unified diff