~ubuntu-branches/ubuntu/trusty/horizon/trusty

« back to all changes in this revision

Viewing changes to horizon/dashboards/nova/networks/tests.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-03-09 11:50:22 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20120309115022-ymiww5i58rbg97my
Tags: 2012.1~rc1~20120308.1479-0ubuntu1
* New upstream version.
* debian/rules: Fix symlink when installing horizon.
  (LP: #947118)
* debian/control: Add python-django-nose as a dep. (LP: #944235)
* debian/control: Fix broken depends.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
 
 
3
 
# Copyright 2012 United States Government as represented by the
4
 
# Administrator of the National Aeronautics and Space Administration.
5
 
# All Rights Reserved.
6
 
#
7
 
# Copyright 2012 Nebula, Inc.
8
 
#
9
 
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
10
 
#    not use this file except in compliance with the License. You may obtain
11
 
#    a copy of the License at
12
 
#
13
 
#         http://www.apache.org/licenses/LICENSE-2.0
14
 
#
15
 
#    Unless required by applicable law or agreed to in writing, software
16
 
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
 
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
 
#    License for the specific language governing permissions and limitations
19
 
#    under the License.
20
 
 
21
 
from django import http
22
 
from django.core.urlresolvers import reverse
23
 
from mox import IsA
24
 
 
25
 
from horizon import api
26
 
from horizon import test
27
 
 
28
 
 
29
 
class NetworkViewTests(test.TestCase):
30
 
    def setUp(self):
31
 
        super(NetworkViewTests, self).setUp()
32
 
        # TODO(gabriel): Move this to horizon.tests.test_data.quantum_data
33
 
        #                after the wrapper classes are added for Quantum.
34
 
        self.network = {}
35
 
        self.network['networks'] = []
36
 
        self.network['networks'].append({'id': 'n1'})
37
 
        self.network_details = {'network': {'id': '1', 'name': 'test_network'}}
38
 
        self.ports = {}
39
 
        self.ports['ports'] = []
40
 
        self.ports['ports'].append({'id': 'p1'})
41
 
        self.port_details = {
42
 
            'port': {
43
 
                'id': 'p1',
44
 
                'state': 'DOWN'}}
45
 
        self.port_attachment = {
46
 
            'attachment': {
47
 
                'id': 'vif1'}}
48
 
        self.vifs = [{'id': 'vif1'}]
49
 
 
50
 
    def test_network_index(self):
51
 
        self.mox.StubOutWithMock(api, 'quantum_list_networks')
52
 
        api.quantum_list_networks(IsA(http.HttpRequest)).\
53
 
                                            AndReturn(self.network)
54
 
 
55
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
56
 
        api.quantum_network_details(IsA(http.HttpRequest),
57
 
                                    'n1').AndReturn(self.network_details)
58
 
 
59
 
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
60
 
        api.quantum_list_ports(IsA(http.HttpRequest),
61
 
                               'n1').AndReturn(self.ports)
62
 
 
63
 
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
64
 
        api.quantum_port_attachment(IsA(http.HttpRequest),
65
 
                                    'n1', 'p1').AndReturn(self.port_attachment)
66
 
 
67
 
        self.mox.ReplayAll()
68
 
 
69
 
        res = self.client.get(reverse('horizon:nova:networks:index'))
70
 
 
71
 
        self.assertTemplateUsed(res, 'nova/networks/index.html')
72
 
        networks = res.context['table'].data
73
 
 
74
 
        self.assertEqual(len(networks), 1)
75
 
        self.assertEqual(networks[0]['name'], 'test_network')
76
 
        self.assertEqual(networks[0]['id'], 'n1')
77
 
        self.assertEqual(networks[0]['total'], 1)
78
 
        self.assertEqual(networks[0]['used'], 1)
79
 
        self.assertEqual(networks[0]['available'], 0)
80
 
 
81
 
    def test_network_create(self):
82
 
        self.mox.StubOutWithMock(api.quantum, "quantum_create_network")
83
 
        api.quantum.quantum_create_network(IsA(http.HttpRequest),
84
 
                                           IsA(dict)).AndReturn(True)
85
 
 
86
 
        self.mox.ReplayAll()
87
 
 
88
 
        formData = {'name': 'Test',
89
 
                    'method': 'CreateNetwork'}
90
 
 
91
 
        res = self.client.post(reverse('horizon:nova:networks:create'),
92
 
                               formData)
93
 
 
94
 
        self.assertRedirectsNoFollow(res,
95
 
                                     reverse('horizon:nova:networks:index'))
96
 
 
97
 
    def test_network_delete(self):
98
 
        self.mox.StubOutWithMock(api, "quantum_delete_network")
99
 
        api.quantum_delete_network(IsA(http.HttpRequest), 'n1').AndReturn(True)
100
 
 
101
 
        self.mox.StubOutWithMock(api, 'quantum_list_networks')
102
 
        api.quantum_list_networks(IsA(http.HttpRequest)).\
103
 
                                            AndReturn(self.network)
104
 
 
105
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
106
 
        api.quantum_network_details(IsA(http.HttpRequest),
107
 
                                    'n1').AndReturn(self.network_details)
108
 
 
109
 
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
110
 
        api.quantum_list_ports(IsA(http.HttpRequest),
111
 
                               'n1').AndReturn(self.ports)
112
 
 
113
 
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
114
 
        api.quantum_port_attachment(IsA(http.HttpRequest),
115
 
                                    'n1', 'p1').AndReturn(self.port_attachment)
116
 
 
117
 
        self.mox.ReplayAll()
118
 
 
119
 
        formData = {'action': 'networks__delete__n1'}
120
 
 
121
 
        self.client.post(reverse('horizon:nova:networks:index'), formData)
122
 
 
123
 
    def test_network_rename(self):
124
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
125
 
        api.quantum_network_details(IsA(http.HttpRequest),
126
 
                                    'n1').AndReturn(self.network_details)
127
 
 
128
 
        self.mox.StubOutWithMock(api, 'quantum_update_network')
129
 
        api.quantum_update_network(IsA(http.HttpRequest), 'n1',
130
 
                                   {'network': {'name': "Test1"}})
131
 
 
132
 
        self.mox.ReplayAll()
133
 
 
134
 
        formData = {'network': 'n1',
135
 
                    'new_name': 'Test1',
136
 
                    'method': 'RenameNetwork'}
137
 
 
138
 
        res = self.client.post(reverse('horizon:nova:networks:rename',
139
 
                                       args=["n1"]),
140
 
                               formData)
141
 
 
142
 
        self.assertRedirectsNoFollow(res,
143
 
                                     reverse('horizon:nova:networks:index'))
144
 
 
145
 
    def test_network_details(self):
146
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
147
 
        api.quantum_network_details(IsA(http.HttpRequest),
148
 
                                    'n1').AndReturn(self.network_details)
149
 
 
150
 
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
151
 
        api.quantum_list_ports(IsA(http.HttpRequest),
152
 
                               'n1').AndReturn(self.ports)
153
 
 
154
 
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
155
 
        api.quantum_port_attachment(IsA(http.HttpRequest),
156
 
                                    'n1', 'p1').AndReturn(self.port_attachment)
157
 
 
158
 
        self.mox.StubOutWithMock(api, 'quantum_port_details')
159
 
        api.quantum_port_details(IsA(http.HttpRequest),
160
 
                                 'n1', 'p1').AndReturn(self.port_details)
161
 
 
162
 
        self.mox.StubOutWithMock(api, 'get_vif_ids')
163
 
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)
164
 
 
165
 
        self.mox.ReplayAll()
166
 
 
167
 
        res = self.client.get(reverse('horizon:nova:networks:detail',
168
 
                                      args=['n1']))
169
 
 
170
 
        self.assertTemplateUsed(res, 'nova/networks/detail.html')
171
 
        self.assertIn('network', res.context)
172
 
 
173
 
        network = res.context['network']
174
 
 
175
 
        self.assertEqual(network['name'], 'test_network')
176
 
        self.assertEqual(network['id'], 'n1')
177
 
 
178
 
    def test_port_create(self):
179
 
        self.mox.StubOutWithMock(api, "quantum_network_details")
180
 
        self.mox.StubOutWithMock(api, "quantum_create_port")
181
 
        network_details = {'network': {'id': 'n1'}}
182
 
        api.quantum_network_details(IsA(http.HttpRequest),
183
 
                                    'n1').AndReturn(network_details)
184
 
        api.quantum_create_port(IsA(http.HttpRequest), 'n1').AndReturn(True)
185
 
 
186
 
        formData = {'ports_num': 1,
187
 
                    'network': 'n1',
188
 
                    'method': 'CreatePort'}
189
 
 
190
 
        self.mox.ReplayAll()
191
 
 
192
 
        res = self.client.post(reverse('horizon:nova:networks:port_create',
193
 
                                       args=["n1"]),
194
 
                               formData)
195
 
 
196
 
        self.assertRedirectsNoFollow(res,
197
 
                                     reverse('horizon:nova:networks:detail',
198
 
                                             args=["n1"]))
199
 
 
200
 
    def test_port_delete(self):
201
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
202
 
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
203
 
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
204
 
        self.mox.StubOutWithMock(api, 'quantum_port_details')
205
 
        self.mox.StubOutWithMock(api, 'get_vif_ids')
206
 
        self.mox.StubOutWithMock(api, "quantum_delete_port")
207
 
        network_details = {'network': {'id': 'n1', 'name': 'network1'}}
208
 
        api.quantum_network_details(IsA(http.HttpRequest),
209
 
                                    'n1').AndReturn(network_details)
210
 
 
211
 
        api.quantum_list_ports(IsA(http.HttpRequest),
212
 
                               'n1').AndReturn(self.ports)
213
 
 
214
 
        api.quantum_port_attachment(IsA(http.HttpRequest),
215
 
                                    'n1', 'p1').AndReturn(self.port_attachment)
216
 
 
217
 
        api.quantum_port_details(IsA(http.HttpRequest),
218
 
                                 'n1', 'p1').AndReturn(self.port_details)
219
 
 
220
 
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)
221
 
 
222
 
        api.quantum_delete_port(IsA(http.HttpRequest),
223
 
                                'n1', 'p1').AndReturn(True)
224
 
 
225
 
        formData = {'action': 'network_details__delete__p1'}
226
 
 
227
 
        self.mox.ReplayAll()
228
 
 
229
 
        detail_url = reverse('horizon:nova:networks:detail', args=["n1"])
230
 
        self.client.post(detail_url, formData)
231
 
 
232
 
    def test_port_attach(self):
233
 
        self.mox.StubOutWithMock(api, "quantum_network_details")
234
 
        self.mox.StubOutWithMock(api, "quantum_attach_port")
235
 
        self.mox.StubOutWithMock(api, "get_vif_ids")
236
 
        network_details = {'network': {'id': 'n1'}}
237
 
        api.quantum_network_details(IsA(http.HttpRequest),
238
 
                                    'n1').AndReturn(network_details)
239
 
        api.quantum_attach_port(IsA(http.HttpRequest),
240
 
                                'n1', 'p1', IsA(dict)).AndReturn(True)
241
 
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn([{
242
 
                'id': 'v1',
243
 
                'instance_name': 'instance1',
244
 
                'available': True}])
245
 
 
246
 
        formData = {'port': 'p1',
247
 
                    'network': 'n1',
248
 
                    'vif_id': 'v1',
249
 
                    'method': 'AttachPort'}
250
 
 
251
 
        self.mox.ReplayAll()
252
 
 
253
 
        res = self.client.post(reverse('horizon:nova:networks:port_attach',
254
 
                                       args=["n1", "p1"]),
255
 
                               formData)
256
 
 
257
 
        self.assertRedirectsNoFollow(res,
258
 
                                     reverse('horizon:nova:networks:detail',
259
 
                                             args=["n1"]))
260
 
 
261
 
    def test_port_detach(self):
262
 
        self.mox.StubOutWithMock(api, 'quantum_network_details')
263
 
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
264
 
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
265
 
        self.mox.StubOutWithMock(api, 'quantum_port_details')
266
 
        self.mox.StubOutWithMock(api, 'get_vif_ids')
267
 
        self.mox.StubOutWithMock(api, "quantum_set_port_state")
268
 
        network_details = {'network': {'id': 'n1', 'name': 'network1'}}
269
 
        api.quantum_network_details(IsA(http.HttpRequest),
270
 
                                    'n1').AndReturn(network_details)
271
 
 
272
 
        api.quantum_list_ports(IsA(http.HttpRequest),
273
 
                               'n1').AndReturn(self.ports)
274
 
 
275
 
        api.quantum_port_attachment(IsA(http.HttpRequest),
276
 
                                    'n1', 'p1').AndReturn(self.port_attachment)
277
 
 
278
 
        api.quantum_port_details(IsA(http.HttpRequest),
279
 
                                 'n1', 'p1').AndReturn(self.port_details)
280
 
 
281
 
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)
282
 
 
283
 
        api.quantum_set_port_state(IsA(http.HttpRequest),
284
 
                                   'n1',
285
 
                                   'p1',
286
 
                                   {'port': {'state': 'DOWN'}}).AndReturn(True)
287
 
 
288
 
        formData = {'action': "network_details__detach_port__p1"}
289
 
 
290
 
        self.mox.ReplayAll()
291
 
 
292
 
        detail_url = reverse('horizon:nova:networks:detail', args=["n1"])
293
 
        res = self.client.post(detail_url, formData)
294
 
 
295
 
        self.assertRedirectsNoFollow(res, detail_url)