Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / tests / networks.py @ 593851e0

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
        # validate response
44
        res = json.loads(response.content)
45
        net = res['network']
46
        keys = net.keys()
47
        must_send = set(["status", "subnets", "name", "admin_state_up",
48
                        "tenant_id", "id"])
49
        self.assertEqual(set(keys).issuperset(must_send), True)
50
        self.assertEqual(response.status_code, 200)
51

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

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

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

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

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

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

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

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