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