cloudcomputinghust/CAL

View on GitHub
calplus/tests/unit/v1/network/test_client.py

Summary

Maintainability
F
5 days
Test Coverage
import mock
from keystoneauth1.exceptions.base import ClientException

from calplus.tests import base
from calplus.v1.network import client


fake_config_driver = {
    'os_auth_url': 'http://controller:5000/v2_0',
    'os_username': 'test',
    'os_password': 'veryhard',
    'os_project_name': 'demo',
    'os_endpoint_url': 'http://controller:9696',
    'os_driver_name': 'default',
    'os_project_domain_name': 'default',
    'os_user_domain_name': 'default',
    'tenant_id': 'fake_tenant_id',
    'limit': {
        "subnet": 10,
        "network": 10,
        "floatingip": 50,
        "subnetpool": -1,
        "security_group_rule": 100,
        "security_group": 10,
        "router": 10,
        "rbac_policy": -1,
        "port": 50
    }
}

fake_network_in = {
    'name': '',
    'admin_state_up': True
}

fake_network_out = {
    'id': 'fake_id'
}

fake_subnet_int = {
    "network_id": 'fake_id',
    "ip_version": 4,
    "cidr": 'fake_cidr',
    "name": 'fake_name'
}

fake_subnet_out = {
    'name': 'fake_name',
    'description': None,
    'id': 'fake_id',
    'cidr': 'fake_cidr',
    'cloud': 'OPENSTACK',
    'gateway_ip': 'fake_gateway_ip',
    'security_group': None,
    'dns_nameservers': 'fake_dns_nameservers',
    "allocation_pools": [
        {
            "start": "192.0.0.2",
            "end": "192.255.255.254"
        }
    ]
}

fake_router = [
    {
        'id': 'fake_router_id1',
        'external_gateway_info': {
            'fake_attr': None
        }
    },
    {
        'id': 'fake_router_id1',
        'external_gateway_info': None
    }
]

fake_security_groups = {
    'id': 'fake_scg_id',
    'security_group_rules': []
}


class ClientTest(base.TestCase):

    """docstring for ClientTest"""

    def setUp(self):
        super(ClientTest, self).setUp()
        self.fake_client = client.Client(
            'OpenStack', fake_config_driver)

    def test_create_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'create',
            mock.Mock(return_value={
                'network': fake_network_out
            }))

        self.fake_client.create('fake_name', 'fake_cidr')

        self.fake_client.driver.create.\
            assert_called_once_with('fake_name', 'fake_cidr')

    def test_create_unable_to_create(self):
        self.mock_object(
            self.fake_client.driver, 'create',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.create, 'fake_name', 'fake_cidr')

        self.fake_client.driver.create.\
            assert_called_once_with('fake_name', 'fake_cidr')

    def test_delete_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'delete',
            mock.Mock(return_value={}))

        self.fake_client.delete('fake_id')

        self.fake_client.driver.delete.\
            assert_called_once_with('fake_id')

    def test_delete_unable_to_delete(self):
        self.mock_object(
            self.fake_client.driver, 'delete',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.delete, 'fake_id')

        self.fake_client.driver.delete.\
            assert_called_once_with('fake_id')

    def test_list_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'list',
            mock.Mock(return_value={
                'subnets': [fake_subnet_out]
            }))

        self.fake_client.list()

        self.fake_client.driver.list.\
            assert_called_once_with()

    def test_list_unable_to_list(self):
        self.mock_object(
            self.fake_client.driver, 'list',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.list)

        self.fake_client.driver.list.\
            assert_called_once_with()

    def test_show_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'show',
            mock.Mock(return_value={
                'subnet': fake_subnet_out
            }))

        self.fake_client.show('fake_id')

        self.fake_client.driver.show.\
            assert_called_once_with('fake_id')

    def test_show_unable_to_show(self):
        self.mock_object(
            self.fake_client.driver, 'show',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.show, 'fake_id')

        self.fake_client.driver.show.\
            assert_called_once_with('fake_id')

    def test_update_successfully(self):
        self.fake_client.update('fake_id', fake_subnet_out)

    def test_update_unable_to_update(self):
        pass

    def test_connect_external_net_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'connect_external_net',
            mock.Mock(return_value=None))
        #TODO: alter None with exact return format

        self.fake_client.connect_external_net('fake_id')

        self.fake_client.driver.connect_external_net.\
            assert_called_once_with('fake_id')

    def test_connect_external_net_unable_to_connect(self):
        self.mock_object(
            self.fake_client.driver, 'connect_external_net',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.connect_external_net, 'fake_id')

        self.fake_client.driver.connect_external_net.\
            assert_called_once_with('fake_id')

    def test_disconnect_external_net_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'disconnect_external_net',
            mock.Mock(return_value=None))
        #TODO: alter None with exact return format

        self.fake_client.disconnect_external_net('fake_id')

        self.fake_client.driver.disconnect_external_net.\
            assert_called_once_with('fake_id')

    def test_disconnect_external_net_unable_to_disconnect(self):
        self.mock_object(
            self.fake_client.driver, 'disconnect_external_net',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.disconnect_external_net, 'fake_id')

        self.fake_client.driver.disconnect_external_net.\
            assert_called_once_with('fake_id')

    def test_allocate_public_ip_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'allocate_public_ip',
            mock.Mock(return_value=True))

        self.fake_client.allocate_public_ip()

        self.fake_client.driver.allocate_public_ip.\
            assert_called_once_with()

    def test_allocate_public_ip_unable_to_allocate(self):
        self.mock_object(
            self.fake_client.driver, 'allocate_public_ip',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.allocate_public_ip)

        self.fake_client.driver.allocate_public_ip.\
            assert_called_once_with()

    def test_list_public_ip_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'list_public_ip',
            mock.Mock(return_value='fake_list_ip'))

        self.fake_client.list_public_ip()

        self.fake_client.driver.list_public_ip.\
            assert_called_once_with()

    def test_list_public_ip_unable_to_list(self):
        self.mock_object(
            self.fake_client.driver, 'list_public_ip',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.list_public_ip)

        self.fake_client.driver.list_public_ip.\
            assert_called_once_with()

    def test_release_public_ip_successfully(self):
        self.mock_object(
            self.fake_client.driver, 'release_public_ip',
            mock.Mock(return_value=True))

        self.fake_client.release_public_ip('fake_public_ip_id')

        self.fake_client.driver.release_public_ip.\
            assert_called_once_with('fake_public_ip_id')

    def test_release_public_ip_unable_to_release(self):
        self.mock_object(
            self.fake_client.driver, 'release_public_ip',
            mock.Mock(side_effect=ClientException))

        self.assertRaises(ClientException,
            self.fake_client.release_public_ip, 'fake_public_ip_id')

        self.fake_client.driver.release_public_ip.\
            assert_called_once_with('fake_public_ip_id')