|
2 | 2 | import unittest |
3 | 3 |
|
4 | 4 | from netjsonconfig import OpenWrt |
| 5 | +from netjsonconfig.exceptions import ValidationError |
5 | 6 | from netjsonconfig.utils import _TabsMixin |
6 | 7 |
|
7 | 8 |
|
@@ -282,3 +283,93 @@ def test_parse_zone_2(self): |
282 | 283 | def test_parse_zone_3(self): |
283 | 284 | o = OpenWrt(native=self._zone_3_uci) |
284 | 285 | self.assertEqual(o.config, self._zone_2_netjson) |
| 286 | + |
| 287 | + _forwarding_1_netjson = { |
| 288 | + "firewall": {"forwardings": [{"src": "isolated", "dest": "wan"}]} |
| 289 | + } |
| 290 | + |
| 291 | + _forwarding_1_uci = textwrap.dedent( |
| 292 | + """\ |
| 293 | + package firewall |
| 294 | +
|
| 295 | + config defaults 'defaults' |
| 296 | +
|
| 297 | + config forwarding 'forwarding_isolated_wan' |
| 298 | + option src 'isolated' |
| 299 | + option dest 'wan' |
| 300 | + """ |
| 301 | + ) |
| 302 | + |
| 303 | + def test_render_forwarding_1(self): |
| 304 | + o = OpenWrt(self._forwarding_1_netjson) |
| 305 | + expected = self._tabs(self._forwarding_1_uci) |
| 306 | + self.assertEqual(o.render(), expected) |
| 307 | + |
| 308 | + def test_parse_forwarding_1(self): |
| 309 | + o = OpenWrt(native=self._forwarding_1_uci) |
| 310 | + self.assertEqual(o.config, self._forwarding_1_netjson) |
| 311 | + |
| 312 | + _forwarding_2_netjson = { |
| 313 | + "firewall": { |
| 314 | + "forwardings": [{"src": "isolated", "dest": "wan", "family": "ipv4"}] |
| 315 | + } |
| 316 | + } |
| 317 | + |
| 318 | + _forwarding_2_uci = textwrap.dedent( |
| 319 | + """\ |
| 320 | + package firewall |
| 321 | +
|
| 322 | + config defaults 'defaults' |
| 323 | +
|
| 324 | + config forwarding 'forwarding_isolated_wan_ipv4' |
| 325 | + option src 'isolated' |
| 326 | + option dest 'wan' |
| 327 | + option family 'ipv4' |
| 328 | + """ |
| 329 | + ) |
| 330 | + |
| 331 | + def test_render_forwarding_2(self): |
| 332 | + o = OpenWrt(self._forwarding_2_netjson) |
| 333 | + expected = self._tabs(self._forwarding_2_uci) |
| 334 | + self.assertEqual(o.render(), expected) |
| 335 | + |
| 336 | + def test_parse_forwarding_2(self): |
| 337 | + o = OpenWrt(native=self._forwarding_2_uci) |
| 338 | + self.assertEqual(o.config, self._forwarding_2_netjson) |
| 339 | + |
| 340 | + _forwarding_3_netjson = { |
| 341 | + "firewall": {"forwardings": [{"src": "lan", "dest": "wan", "family": "any"}]} |
| 342 | + } |
| 343 | + |
| 344 | + _forwarding_3_uci = textwrap.dedent( |
| 345 | + """\ |
| 346 | + package firewall |
| 347 | +
|
| 348 | + config defaults 'defaults' |
| 349 | +
|
| 350 | + config forwarding 'forwarding_lan_wan_any' |
| 351 | + option src 'lan' |
| 352 | + option dest 'wan' |
| 353 | + option family 'any' |
| 354 | + """ |
| 355 | + ) |
| 356 | + |
| 357 | + def test_render_forwarding_3(self): |
| 358 | + o = OpenWrt(self._forwarding_3_netjson) |
| 359 | + expected = self._tabs(self._forwarding_3_uci) |
| 360 | + self.assertEqual(o.render(), expected) |
| 361 | + |
| 362 | + def test_parse_forwarding_3(self): |
| 363 | + o = OpenWrt(native=self._forwarding_3_uci) |
| 364 | + self.assertEqual(o.config, self._forwarding_3_netjson) |
| 365 | + |
| 366 | + def test_forwarding_validation_error(self): |
| 367 | + o = OpenWrt( |
| 368 | + { |
| 369 | + "firewall": { |
| 370 | + "forwardings": [{"src": "lan", "dest": "wan", "family": "XXXXXX"}] |
| 371 | + } |
| 372 | + } |
| 373 | + ) |
| 374 | + with self.assertRaises(ValidationError): |
| 375 | + o.validate() |
0 commit comments