Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / tests / networks.py @ 0baa1e3d

History | View | Annotate | Download (4 kB)

1
from snf_django.utils.testing import BaseAPITest
2
from django.utils import simplejson as json
3
from synnefo.cyclades_settings import cyclades_services
4
from synnefo.lib.services import get_service_path
5
from synnefo.lib import join_urls
6
import json
7
import synnefo.db.models_factory as dbmf
8

    
9

    
10
COMPUTE_URL = get_service_path(cyclades_services, 'compute',
11
                                             version='v2.0')
12
NETWORKS_URL = join_urls(COMPUTE_URL, "networks/")
13

    
14

    
15
class NetworkTest(BaseAPITest):
16

    
17
    def test_list_networks(self):
18
        response = self.get(NETWORKS_URL)
19
        self.assertSuccess(response)
20
        networks = json.loads(response.content)
21
        self.assertEqual(networks, {"networks": []})
22

    
23
    def test_create_network(self):
24
        request = {
25
            "network": {
26
                "name": "sample_network",
27
                "type": "MAC_FILTERED"
28
                }
29
        }
30
        response = self.post(NETWORKS_URL, params=json.dumps(request))
31
        code = response.status_code
32
        self.assertEqual(code, 201)
33

    
34
    def test_get_unfound_network(self):
35
        url = join_urls(NETWORKS_URL, "123")
36
        response = self.get(url)
37
        self.assertItemNotFound(response)
38

    
39
    def test_get_network(self):
40
        test_net = dbmf.NetworkFactory.create()
41
        url = join_urls(NETWORKS_URL, str(test_net.id))
42
        response = self.get(url, user=test_net.userid)
43
        print response.content
44
        # validate response
45
        res = json.loads(response.content)
46
        net = res['network']
47
        keys = net.keys()
48
        must_send = set(["status", "subnets", "name", "admin_state_up",
49
                        "tenant_id", "id"])
50
        self.assertEqual(set(keys).issuperset(must_send), True)
51
        self.assertEqual(response.status_code, 200)
52

    
53
    def test_get_deleted_network(self):
54
        test_net = dbmf.NetworkFactory.create()
55
        url = join_urls(NETWORKS_URL, str(test_net.id))
56
        self.delete(url, user=test_net.userid)
57
        response = self.get(url, user=test_net.userid)
58
        self.assertEqual(response.status_code, 400)
59

    
60
    def test_delete_unfound_network(self):
61
        url = join_urls(NETWORKS_URL, "123")
62
        response = self.delete(url)
63
        self.assertItemNotFound(response)
64

    
65
    def test_delete_network(self):
66
        test_net = dbmf.NetworkFactory.create()
67
        subnet = dbmf.IPv4SubnetFactory.create(network=test_net)
68
        url = join_urls(NETWORKS_URL, str(test_net.id))
69
        response = self.delete(url, user=test_net.userid)
70
        self.assertEqual(response.status_code, 204)
71

    
72
    def test_delete_network_in_use(self):
73
        test_net = dbmf.NetworkFactory.create()
74
        test_iface = dbmf.NetworkInterfaceFactory.create(network=test_net)
75
        url = join_urls(NETWORKS_URL, str(test_net.id))
76
        response = self.delete(url, user=test_net.userid)
77
        self.assertEqual(response.status_code, 409)
78

    
79
    def test_put_unfound_network(self):
80
        url = join_urls(NETWORKS_URL, "123")
81
        response = self.delete(url)
82
        self.assertItemNotFound(response)
83

    
84
    def test_put_network(self):
85
        test_net = dbmf.NetworkFactory.create()
86
        url = join_urls(NETWORKS_URL, str(test_net.id))
87
        request = {
88
            "network": {
89
                "name": "new_name"}
90
        }
91
        response = self.put(url, params=json.dumps(request),
92
                            user=test_net.userid)
93
        self.assertEqual(response.status_code, 200)
94

    
95
    def test_put_network_wrong_data(self):
96
        test_net = dbmf.NetworkFactory.create()
97
        url = join_urls(NETWORKS_URL, str(test_net.id))
98
        request = {
99
            "network": {
100
                "wrong_field": "new_name"}
101
        }
102
        response = self.put(url, params=json.dumps(request),
103
                            user=test_net.userid)
104
        self.assertEqual(response.status_code, 400)
105

    
106
    def test_put_no_data(self):
107
        test_net = dbmf.NetworkFactory.create()
108
        url = join_urls(NETWORKS_URL, str(test_net.id))
109
        response = self.put(url, params="", user=test_net.userid)
110
        self.assertEqual(response.status_code, 400)