python-oca/oca/tests/test_virtual_network.py

92 lines
3.1 KiB
Python
Raw Permalink Normal View History

2023-11-16 22:29:06 +09:00
# -*- coding: UTF-8 -*-
import os
import unittest
from mock import Mock
from xml.etree import ElementTree as ET
from parameterized import parameterized_class
import oca
VN_TEMPLATE = """NAME = "Red LAN"
TYPE = RANGED
PUBLIC = NO
BRIDGE = vbr0
NETWORK_SIZE = C
NETWORK_ADDRESS = 192.168.0.0"""
@parameterized_class([
{'one_version': '4.10.0'},
{'one_version': '5.4.0'},
{'one_version': '6.0.0'},
])
class TestVirtualNetwork(unittest.TestCase):
# one_version = '4.10.0'
def setUp(self):
self.client = oca.Client('test:test')
self.client.call = Mock(return_value=self.one_version)
self.xml = open(os.path.join(os.path.dirname(oca.__file__),
'tests/fixtures/vnet.xml')).read()
if self.one_version >= '5':
xml_v5 = ET.fromstring(self.xml)
vn_mad = ET.Element('VN_MAD')
vn_mad.text = 'vn_dummy'
xml_v5.append(vn_mad)
self.xml = ET.tostring(xml_v5).decode('utf-8')
def tearDown(self):
version = self.client.one_version
if version is not None and version >= '5':
xml_types = oca.VirtualNetwork.XML_TYPES
del xml_types['vn_mad']
def test_instantiate(self):
h = oca.VirtualNetwork(self.xml, self.client)
self.client.call.assert_called_once_with('system.version')
expected = None if self.one_version == '4.10.0' else 'vn_dummy'
assert (getattr(h, 'vn_mad', None) == expected)
def test_allocate(self):
self.client.call = Mock(return_value=2)
assert oca.VirtualNetwork.allocate(self.client, VN_TEMPLATE) == 2
def test_publish(self):
h = oca.VirtualNetwork(self.xml, self.client)
self.client.call = Mock(return_value='')
h._convert_types()
h.publish()
self.client.call.assert_called_once_with('vn.publish', 3, True)
def test_unpublish(self):
h = oca.VirtualNetwork(self.xml, self.client)
self.client.call = Mock(return_value='')
h._convert_types()
h.unpublish()
self.client.call.assert_called_once_with('vn.publish', 3, False)
def test_repr(self):
h = oca.VirtualNetwork(self.xml, self.client)
h._convert_types()
assert h.__repr__() == '<oca.VirtualNetwork("Red LAN")>'
def test_chown(self):
h = oca.VirtualNetwork(self.xml, self.client)
self.client.call = Mock(return_value='')
h._convert_types()
h.chown(2, 2)
self.client.call.assert_called_once_with('vn.chown', 3, 2, 2)
def test_address_ranges(self):
h = oca.VirtualNetwork(self.xml, self.client)
h._convert_types()
assert (2 == len(h.address_ranges))
assert (1 == h.address_ranges[1].id)
assert (0 == h.address_ranges[0].id)
assert (" 0 68719479930 1 68719545020" == h.address_ranges[0].allocated)
assert ("10.1.0.10" == h.address_ranges[0].ip)
assert ("00:22:44:66:88:aa" == h.address_ranges[0].mac)
assert (507 == h.address_ranges[0].size)
assert ("IP4" == h.address_ranges[0].type)