gce-api/gceapi/tests/unit/api/test_networks.py

118 lines
4.5 KiB
Python

# Copyright 2014
# The Cloudscaling Group, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from gceapi.api import networks
from gceapi.tests.unit.api import common
EXPECTED_NETWORKS = [{
"kind": "compute#network",
"selfLink": "http://localhost/compute/v1beta15/projects"
"/fake_project/global/networks/private",
"name": "private",
"id": "1543653731328164645",
"IPv4Range": "10.0.0.0/24",
"gatewayIPv4": "10.0.0.1",
"creationTimestamp": "2013-12-25T09:05:07.396957Z",
"description": "main network",
}, {
"kind": "compute#network",
"selfLink": "http://localhost/compute/v1beta15/projects"
"/fake_project/global/networks/public",
"name": "public",
"id": "8340158205161619676",
"IPv4Range": "172.24.4.224/28",
"gatewayIPv4": "172.24.4.225",
"creationTimestamp": "",
}]
class NetworksControllerTest(common.GCEControllerTest):
def setUp(self):
"""Run before each test."""
super(NetworksControllerTest, self).setUp()
self.controller = networks.Controller()
def test_get_network_by_invalid_name(self):
response = self.request_gce(
'/fake_project/global/networks/wrongNetworkName')
self.assertEqual(404, response.status_int)
def test_get_network(self):
response = self.request_gce('/fake_project/global/networks/public')
expected = EXPECTED_NETWORKS[1]
self.assertEqual(response.json_body, expected)
def test_get_networks_list_filtered(self):
response = self.request_gce("/fake_project/global/networks"
"?filter=name+eq+public")
expected = {
"kind": "compute#networkList",
"id": "projects/fake_project/global/networks",
"selfLink": "http://localhost/compute/v1beta15/projects"
"/fake_project/global/networks",
"items": [EXPECTED_NETWORKS[1]]
}
self.assertEqual(response.json_body, expected)
def test_get_networks_list(self):
response = self.request_gce('/fake_project/global/networks')
expected = {
"kind": "compute#networkList",
"id": "projects/fake_project/global/networks",
"selfLink": "http://localhost/compute/v1beta15/projects"
"/fake_project/global/networks",
"items": EXPECTED_NETWORKS
}
self.assertEqual(response.json_body, expected)
def test_create_network(self):
request_body = {
"IPv4Range": "10.100.0.0/24",
"kind": "compute#network",
"gatewayIPv4": "10.100.0.1",
"name": "mynet",
"description": ""
}
response = self.request_gce('/fake_project/global/networks',
method="POST",
body=request_body)
expected = {
"operationType": "insert",
"targetId": "7132179741530156151",
"targetLink": "http://localhost/compute/v1beta15/projects"
"/fake_project/global/networks/mynet",
}
expected.update(common.COMMON_FINISHED_OPERATION)
self.assertEqual(200, response.status_int)
self.assertEqual(response.json_body, expected)
def test_delete_network(self):
response = self.request_gce(
'/fake_project/global/networks/public', method='DELETE')
expected = {
"operationType": "delete",
"targetId": "8340158205161619676",
"targetLink": "http://localhost/compute/v1beta15/projects/"
"fake_project/global/networks/public",
}
expected.update(common.COMMON_FINISHED_OPERATION)
self.assertEqual(200, response.status_int)
self.assertEqual(expected, response.json_body)