3
3
from django .test import TestCase
4
4
5
5
from tenancy .models import Tenant
6
+ from dcim .models import Site , Device , Manufacturer , DeviceRole , DeviceType
7
+ from ipam .models import IPAddress
6
8
7
9
from netbox_bgp .models import ASN , BGPSession , Community , RoutingPolicy , BGPPeerGroup
8
10
@@ -16,7 +18,8 @@ def setUp(self):
16
18
)
17
19
18
20
def test_create_asn (self ):
19
- pass
21
+ self .assertTrue (isinstance (self .asn , ASN ))
22
+ self .assertEqual (self .asn .__str__ (), str (self .asn .number ))
20
23
21
24
def test_invalid_asn0 (self ):
22
25
asn = ASN (number = 0 )
@@ -35,3 +38,178 @@ def test_uniqueconstraint_asn2(self):
35
38
asn = ASN .objects .create (number = 65001 , tenant = self .tenant )
36
39
self .assertEqual (str (asn ), '65001' )
37
40
# todo cre another 65001 tenant=self.tenant
41
+
42
+
43
+ class RoutingPolicyTestCase (TestCase ):
44
+ def setUp (self ):
45
+ rp_name = 'test_policy'
46
+ self .rp = RoutingPolicy .objects .create (
47
+ name = rp_name ,
48
+ description = rp_name
49
+ )
50
+
51
+ def test_create_routing_policy (self ):
52
+ self .assertTrue (isinstance (self .rp , RoutingPolicy ))
53
+ self .assertEqual (self .rp .__str__ (), self .rp .name )
54
+
55
+ def test_unique_together (self ):
56
+ rp = RoutingPolicy (name = self .rp .name , description = self .rp .description )
57
+ with self .assertRaises (IntegrityError ):
58
+ rp .save ()
59
+
60
+
61
+ class BGPPeerGroupTestCase (TestCase ):
62
+ def setUp (self ):
63
+ self .in_policy1 = RoutingPolicy .objects .create (
64
+ name = 'in_policy_1'
65
+ )
66
+ self .in_policy2 = RoutingPolicy .objects .create (
67
+ name = 'in_policy_2'
68
+ )
69
+ self .out_policy1 = RoutingPolicy .objects .create (
70
+ name = 'out_policy_1'
71
+ )
72
+ self .out_policy2 = RoutingPolicy .objects .create (
73
+ name = 'out_policy_2'
74
+ )
75
+ self .peer_group = BGPPeerGroup .objects .create (
76
+ name = 'peer_group' ,
77
+ description = 'peer_group'
78
+ )
79
+
80
+ def test_create_peer_group (self ):
81
+ self .assertTrue (isinstance (self .peer_group , BGPPeerGroup ))
82
+ self .assertEqual (self .peer_group .__str__ (), self .peer_group .name )
83
+
84
+ def test_peer_group_polciy_realtions (self ):
85
+ peer_group = BGPPeerGroup .objects .create (
86
+ name = 'group1' ,
87
+ )
88
+ peer_group .import_policies .add (self .in_policy1 )
89
+ peer_group .import_policies .add (self .in_policy2 )
90
+ peer_group .export_policies .add (self .out_policy1 )
91
+ peer_group .export_policies .add (self .out_policy2 )
92
+ self .assertEqual (
93
+ peer_group .import_policies .get (
94
+ pk = self .in_policy1 .pk
95
+ ),
96
+ self .in_policy1
97
+ )
98
+ self .assertEqual (
99
+ peer_group .import_policies .get (
100
+ pk = self .in_policy2 .pk
101
+ ),
102
+ self .in_policy2
103
+ )
104
+ self .assertEqual (
105
+ peer_group .export_policies .get (
106
+ pk = self .out_policy1 .pk
107
+ ),
108
+ self .out_policy1
109
+ )
110
+ self .assertEqual (
111
+ peer_group .export_policies .get (
112
+ pk = self .out_policy2 .pk
113
+ ),
114
+ self .out_policy2
115
+ )
116
+
117
+ def test_unique_together (self ):
118
+ peer_group = BGPPeerGroup (
119
+ name = 'peer_group' ,
120
+ description = 'peer_group'
121
+ )
122
+ with self .assertRaises (IntegrityError ):
123
+ peer_group .save ()
124
+
125
+ def test_ununique_together (self ):
126
+ peer_group1 = BGPPeerGroup (
127
+ name = 'peer_group1' ,
128
+ description = 'peer_group'
129
+ )
130
+ peer_group1 .save ()
131
+
132
+
133
+ class CommunityTestCase (TestCase ):
134
+ def setUp (self ):
135
+ self .community = Community .objects .create (
136
+ value = '65001:65001' ,
137
+ description = 'test_community'
138
+ )
139
+
140
+ def test_create_community (self ):
141
+ self .assertTrue (isinstance (self .community , Community ))
142
+ self .assertEqual (self .community .__str__ (), self .community .value )
143
+
144
+ def test_invalid_community (self ):
145
+ community = Community (value = 0 )
146
+ self .assertRaises (ValidationError , community .full_clean )
147
+
148
+
149
+ class BGPSessionTestCase (TestCase ):
150
+ def setUp (self ):
151
+ manufacturer = Manufacturer .objects .create (
152
+ name = 'manufacturer'
153
+ )
154
+ device_type = DeviceType .objects .create (
155
+ manufacturer = manufacturer ,
156
+ model = 'device type'
157
+ )
158
+ device_role = DeviceRole .objects .create (
159
+ name = 'device role'
160
+ )
161
+ self .site = Site .objects .create (
162
+ name = 'site'
163
+ )
164
+ self .tenant = Tenant .objects .create (
165
+ name = 'tenant'
166
+ )
167
+ self .device = Device .objects .create (
168
+ name = 'device' ,
169
+ site = self .site ,
170
+ device_role = device_role ,
171
+ device_type = device_type
172
+ )
173
+ self .local_as = ASN .objects .create (
174
+ number = 65001 ,
175
+ )
176
+ self .remote_as = ASN .objects .create (
177
+ number = 65002 ,
178
+ )
179
+ self .peer_group = BGPPeerGroup .objects .create (
180
+ name = 'peer_group'
181
+ )
182
+ self .routing_policy_in = RoutingPolicy .objects .create (
183
+ name = 'policy_in'
184
+ )
185
+ self .routing_policy_out = RoutingPolicy .objects .create (
186
+ name = 'policy_out'
187
+ )
188
+ self .local_ip = IPAddress .objects .create (
189
+ address = '1.1.1.1/32'
190
+ )
191
+ self .remote_ip = IPAddress .objects .create (
192
+ address = '1.1.1.2/32'
193
+ )
194
+ self .session = BGPSession .objects .create (
195
+ name = 'session' ,
196
+ site = self .site ,
197
+ tenant = self .tenant ,
198
+ device = self .device ,
199
+ local_address = self .local_ip ,
200
+ remote_address = self .remote_ip ,
201
+ local_as = self .local_as ,
202
+ remote_as = self .remote_as ,
203
+ status = 'active' ,
204
+ peer_group = self .peer_group ,
205
+ )
206
+
207
+ def test_create_session (self ):
208
+ self .assertTrue (isinstance (self .session , BGPSession ))
209
+ self .assertEqual (self .session .__str__ (), f'{ self .session .device } :{ self .session .name } ' )
210
+
211
+ def test_policies (self ):
212
+ pass
213
+
214
+ def test_unique_together (self ):
215
+ pass
0 commit comments