vmware-nsx/neutron/tests/unit/ibm/test_sdnve_api.py
Mohammad Banikazemi ce046b9f5d Fixes bugs for requests sent to SDN-VE controller
This patchset fixes a couple of bugs wrt processing requests
before sending them to the backend controller and adjusts the
requests based on the controller requirements. It also corrects
typos, add quotas and changes the default for a configuration
parameter.

Change-Id: I4b64c2b49ff4854949afc1e54cba1057f376b058
Closes-Bug: #1311260
DocImpact: The default tenant type is chganged from OF to OVERLAY
2014-05-26 09:56:37 -04:00

146 lines
5.6 KiB
Python

# Copyright 2014 IBM Corp.
#
# All Rights Reserved.
#
# 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.
#
# @author: Mohammad Banikazemi, IBM Corp
import mock
from neutron.openstack.common import uuidutils
from neutron.plugins.ibm.common import constants
from neutron.plugins.ibm import sdnve_api
from neutron.tests import base
RESOURCE_PATH = {
'network': "ln/networks/",
}
RESOURCE = 'network'
HTTP_OK = 200
TENANT_ID = uuidutils.generate_uuid()
class TestSdnveApi(base.BaseTestCase):
def setUp(self):
super(TestSdnveApi, self).setUp()
class MockKeystoneClient(object):
def __init__(self, **kwargs):
pass
def get_tenant_name(self, id):
return 'test tenant name'
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'KeystoneClient',
new=MockKeystoneClient):
self.api = sdnve_api.Client()
def mock_do_request(self, method, url, body=None, headers=None,
params=None, connection_type=None):
return (HTTP_OK, url)
def mock_do_request_tenant(self, method, url, body=None, headers=None,
params=None, connection_type=None):
return (HTTP_OK, {'id': TENANT_ID,
'network_type': constants.TENANT_TYPE_OF})
def mock_do_request_no_tenant(self, method, url, body=None, headers=None,
params=None, connection_type=None):
return (None, None)
def mock_process_request(self, body):
return body
def test_sdnve_api_list(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request):
result = self.api.sdnve_list(RESOURCE)
self.assertEqual(result, (HTTP_OK, RESOURCE_PATH[RESOURCE]))
def test_sdnve_api_show(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request):
result = self.api.sdnve_show(RESOURCE, TENANT_ID)
self.assertEqual(result,
(HTTP_OK, RESOURCE_PATH[RESOURCE] + TENANT_ID))
def test_sdnve_api_create(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.process_request',
new=self.mock_process_request):
result = self.api.sdnve_create(RESOURCE, '')
self.assertEqual(result, (HTTP_OK, RESOURCE_PATH[RESOURCE]))
def test_sdnve_api_update(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.process_request',
new=self.mock_process_request):
result = self.api.sdnve_update(RESOURCE, TENANT_ID, '')
self.assertEqual(result,
(HTTP_OK,
RESOURCE_PATH[RESOURCE] + TENANT_ID))
def test_sdnve_api_delete(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request):
result = self.api.sdnve_delete(RESOURCE, TENANT_ID)
self.assertEqual(result,
(HTTP_OK, RESOURCE_PATH[RESOURCE] + TENANT_ID))
def test_sdnve_get_tenant_by_id(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request_tenant):
id = TENANT_ID
result = self.api.sdnve_get_tenant_byid(id)
self.assertEqual(result,
(TENANT_ID, constants.TENANT_TYPE_OF))
def test_sdnve_check_and_create_tenant(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request_tenant):
id = TENANT_ID
result = self.api.sdnve_check_and_create_tenant(id)
self.assertEqual(result, TENANT_ID)
def test_sdnve_check_and_create_tenant_fail(self):
with mock.patch('neutron.plugins.ibm.sdnve_api.'
'Client.do_request',
new=self.mock_do_request_no_tenant):
id = TENANT_ID
result = self.api.sdnve_check_and_create_tenant(
id, constants.TENANT_TYPE_OF)
self.assertIsNone(result)
def test_process_request(self):
my_request = {'key_1': 'value_1', 'router:external': 'True',
'key_2': 'value_2'}
expected = {'key_1': 'value_1', 'router_external': 'True',
'key_2': 'value_2'}
result = self.api.process_request(my_request)
self.assertEqual(expected, result)