Merge "Created domain class for routers."
[snaps.git] / snaps / domain / test / network_tests.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 #                    and others.  All rights reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import unittest
17 from snaps.domain.network import (
18     Port, SecurityGroup, SecurityGroupRule,  Router, InterfaceRouter)
19
20
21 class PortDomainObjectTests(unittest.TestCase):
22     """
23     Tests the construction of the snaps.domain.network.Port class
24     """
25
26     def test_construction_kwargs(self):
27         ips = ['10', '11']
28         port = Port(
29             **{'name': 'name', 'id': 'id', 'ips': ips})
30         self.assertEqual('name', port.name)
31         self.assertEqual('id', port.id)
32         self.assertEqual(ips, port.ips)
33
34     def test_construction_named(self):
35         ips = ['10', '11']
36         port = Port(ips=ips, id='id', name='name')
37         self.assertEqual('name', port.name)
38         self.assertEqual('id', port.id)
39         self.assertEqual(ips, port.ips)
40
41
42 class RouterDomainObjectTests(unittest.TestCase):
43     """
44     Tests the construction of the snaps.domain.network.Router class
45     """
46
47     def test_construction_kwargs(self):
48         sec_grp = Router(
49             **{'name': 'name', 'id': 'id', 'status': 'hello',
50                'tenant_id': '1234', 'admin_state_up': 'yes',
51                'external_gateway_info': 'no'})
52         self.assertEqual('name', sec_grp.name)
53         self.assertEqual('id', sec_grp.id)
54         self.assertEqual('hello', sec_grp.status)
55         self.assertEqual('1234', sec_grp.tenant_id)
56         self.assertEqual('yes', sec_grp.admin_state_up)
57         self.assertEqual('no', sec_grp.external_gateway_info)
58
59     def test_construction_named(self):
60         sec_grp = Router(
61             external_gateway_info='no', admin_state_up='yes', tenant_id='1234',
62             status='hello', id='id', name='name')
63         self.assertEqual('name', sec_grp.name)
64         self.assertEqual('id', sec_grp.id)
65         self.assertEqual('hello', sec_grp.status)
66         self.assertEqual('1234', sec_grp.tenant_id)
67         self.assertEqual('yes', sec_grp.admin_state_up)
68         self.assertEqual('no', sec_grp.external_gateway_info)
69
70
71 class InterfaceRouterDomainObjectTests(unittest.TestCase):
72     """
73     Tests the construction of the snaps.domain.network.InterfaceRouter class
74     """
75
76     def test_construction_kwargs(self):
77         sec_grp = InterfaceRouter(
78             **{'id': 'id', 'subnet_id': 'foo', 'port_id': 'bar'})
79         self.assertEqual('id', sec_grp.id)
80         self.assertEqual('foo', sec_grp.subnet_id)
81         self.assertEqual('bar', sec_grp.port_id)
82
83     def test_construction_named(self):
84         sec_grp = InterfaceRouter(port_id='bar', subnet_id='foo', id='id')
85         self.assertEqual('id', sec_grp.id)
86         self.assertEqual('foo', sec_grp.subnet_id)
87         self.assertEqual('bar', sec_grp.port_id)
88
89
90 class SecurityGroupDomainObjectTests(unittest.TestCase):
91     """
92     Tests the construction of the snaps.domain.network.SecurityGroup class
93     """
94
95     def test_construction_proj_id_kwargs(self):
96         sec_grp = SecurityGroup(
97             **{'name': 'name', 'id': 'id',
98                'project_id': 'foo'})
99         self.assertEqual('name', sec_grp.name)
100         self.assertEqual('id', sec_grp.id)
101         self.assertEqual('foo', sec_grp.project_id)
102
103     def test_construction_tenant_id_kwargs(self):
104         sec_grp = SecurityGroup(
105             **{'name': 'name', 'id': 'id',
106                'tenant_id': 'foo'})
107         self.assertEqual('name', sec_grp.name)
108         self.assertEqual('id', sec_grp.id)
109         self.assertEqual('foo', sec_grp.project_id)
110
111     def test_construction_named(self):
112         sec_grp = SecurityGroup(tenant_id='foo', id='id', name='name')
113         self.assertEqual('name', sec_grp.name)
114         self.assertEqual('id', sec_grp.id)
115         self.assertEqual('foo', sec_grp.project_id)
116
117
118 class SecurityGroupRuleDomainObjectTests(unittest.TestCase):
119     """
120     Tests the construction of the snaps.domain.network.SecurityGroupRule class
121     """
122
123     def test_construction_kwargs(self):
124         sec_grp_rule = SecurityGroupRule(
125             **{'id': 'id', 'security_group_id': 'grp_id',
126                'description': 'desc', 'direction': 'dir', 'ethertype': 'eType',
127                'port_range_min': '10.0.0.100', 'port_range_max': '10.0.0.200',
128                'protocol': 'proto', 'remote_group_id': 'group_id',
129                'remote_ip_prefix': 'ip_prefix'})
130         self.assertEqual('id', sec_grp_rule.id)
131         self.assertEqual('grp_id', sec_grp_rule.security_group_id)
132         self.assertEqual('desc', sec_grp_rule.description)
133         self.assertEqual('dir', sec_grp_rule.direction)
134         self.assertEqual('eType', sec_grp_rule.ethertype)
135         self.assertEqual('10.0.0.100', sec_grp_rule.port_range_min)
136         self.assertEqual('10.0.0.200', sec_grp_rule.port_range_max)
137         self.assertEqual('proto', sec_grp_rule.protocol)
138         self.assertEqual('group_id', sec_grp_rule.remote_group_id)
139         self.assertEqual('ip_prefix', sec_grp_rule.remote_ip_prefix)
140
141     def test_construction_named(self):
142         sec_grp_rule = SecurityGroupRule(
143             remote_ip_prefix='ip_prefix', remote_group_id='group_id',
144             protocol='proto', port_range_min='10.0.0.100',
145             port_range_max='10.0.0.200', ethertype='eType',
146             direction='dir', description='desc', security_group_id='grp_id',
147             id='id')
148         self.assertEqual('id', sec_grp_rule.id)
149         self.assertEqual('grp_id', sec_grp_rule.security_group_id)
150         self.assertEqual('desc', sec_grp_rule.description)
151         self.assertEqual('dir', sec_grp_rule.direction)
152         self.assertEqual('eType', sec_grp_rule.ethertype)
153         self.assertEqual('10.0.0.100', sec_grp_rule.port_range_min)
154         self.assertEqual('10.0.0.200', sec_grp_rule.port_range_max)
155         self.assertEqual('proto', sec_grp_rule.protocol)
156         self.assertEqual('group_id', sec_grp_rule.remote_group_id)
157         self.assertEqual('ip_prefix', sec_grp_rule.remote_ip_prefix)