Revision 08b079e2 snf-cyclades-app/synnefo/api/tests.py
b/snf-cyclades-app/synnefo/api/tests.py | ||
---|---|---|
47 | 47 |
from synnefo.logic.utils import get_rsapi_state |
48 | 48 |
|
49 | 49 |
import mock |
50 |
from synnefo.lib import astakos |
|
51 |
|
|
52 |
from contextlib import contextmanager |
|
53 |
|
|
54 |
# This is a hack to override astakos |
|
55 |
# The global variable ASTAKOS_PATCHED_USER keeps the name of |
|
56 |
# a dummy user that we provide through replacement of the |
|
57 |
# corresponding astakos function with a dummy function. |
|
58 |
ASTAKOS_PATCHED_USER = "user" |
|
59 |
|
|
60 |
@contextmanager |
|
61 |
def astakos_user(user): |
|
62 |
""" |
|
63 |
Context manager to mock astakos response. |
|
64 |
|
|
65 |
usage: |
|
66 |
with astakos_user("user@user.com"): |
|
67 |
.... make api calls .... get_user will act as user@user.com requested the api. |
|
68 |
|
|
69 |
""" |
|
70 |
from synnefo.lib import astakos |
|
71 |
orig_method = astakos.get_user |
|
72 |
|
|
73 |
global ASTAKOS_PATCHED_USER |
|
74 |
ASTAKOS_PATCHED_USER = user |
|
75 |
def dummy_get_user(request, *args, **kwargs): |
|
76 |
global ASTAKOS_PATCHED_USER |
|
77 |
request.user = {'username': ASTAKOS_PATCHED_USER, 'groups': []} |
|
78 |
request.user_uniq = ASTAKOS_PATCHED_USER |
|
79 |
astakos.get_user = dummy_get_user |
|
80 |
yield |
|
81 |
astakos.get_user = orig_method |
|
50 | 82 |
|
51 | 83 |
class AaiClient(Client): |
52 | 84 |
def request(self, **request): |
53 | 85 |
request['HTTP_X_AUTH_TOKEN'] = '0000' |
54 | 86 |
return super(AaiClient, self).request(**request) |
55 | 87 |
|
88 |
class NetworksTest(TestCase): |
|
89 |
|
|
90 |
fixtures = ['network_test_data'] |
|
91 |
|
|
92 |
def test_attachments_list(self): |
|
93 |
with astakos_user("admin@adminland.com"): |
|
94 |
r = self.client.get("/api/v1.1/networks") |
|
95 |
data = json.loads(r.content) |
|
96 |
self.assertEqual(data["networks"]["values"][1]["name"], "network4admin") |
|
97 |
#import pdb; pdb.set_trace() |
|
98 |
self.assertEqual(len(data["networks"]["values"]), 2) |
|
99 |
with astakos_user("user1@userland.com"): |
|
100 |
r = self.client.get("/api/v1.1/networks") |
|
101 |
data = json.loads(r.content) |
|
102 |
self.assertEqual(data["networks"]["values"][1]["name"], "network4user1") |
|
103 |
#import pdb; pdb.set_trace() |
|
104 |
self.assertEqual(len(data["networks"]["values"]), 2) |
|
105 |
|
|
106 |
def test_create_network(self): |
|
107 |
with astakos_user("admin@adminland.com"): |
|
108 |
r = self.client.post("/api/v1.1/networks") |
|
109 |
|
|
110 |
class ServersTest(TestCase): |
|
111 |
|
|
112 |
fixtures = ['network_test_data'] |
|
113 |
|
|
114 |
def test_attachments_list(self): |
|
115 |
with astakos_user("admin@adminland.com"): |
|
116 |
r = self.client.get("/api/v1.1/servers") |
|
117 |
data = json.loads(r.content) |
|
118 |
self.assertEqual(data["servers"]["values"][0]["id"], 1001) |
|
119 |
self.assertEqual(len(data["servers"]["values"]), 1) |
|
120 |
r = self.client.get("/api/v1.1/servers/1001") |
|
121 |
|
|
56 | 122 |
|
57 | 123 |
class TestQuota(TestCase): |
58 | 124 |
|
... | ... | |
636 | 702 |
return reply['networks']['values'] |
637 | 703 |
|
638 | 704 |
def create_network(self, name): |
639 |
path = '/api/v1.1/networks' |
|
640 |
data = json.dumps({'network': {'name': name}}) |
|
641 |
response = self.client.post(path, data, content_type='application/json') |
|
642 |
self.assertEqual(response.status_code, 202) |
|
643 |
reply = json.loads(response.content) |
|
644 |
self.assertEqual(reply.keys(), ['network']) |
|
645 |
return reply |
|
705 |
with astakos_user("admin@adminland.com"): |
|
706 |
path = '/api/v1.1/networks' |
|
707 |
data = json.dumps({'network': {'name': name}}) |
|
708 |
response = self.client.post(path, data, content_type='application/json') |
|
709 |
self.assertEqual(response.status_code, 202) |
|
710 |
reply = json.loads(response.content) |
|
711 |
self.assertEqual(reply.keys(), ['network']) |
|
712 |
return reply |
|
646 | 713 |
|
647 | 714 |
def get_network_details(self, network_id): |
648 | 715 |
path = '/api/v1.1/networks/%s' % network_id |
Also available in: Unified diff