@@ -421,3 +421,124 @@ def test_override_file(self):
421421 # ensure the additional files are there present in the tar.gz archive
422422 tar = tarfile .open (fileobj = o .generate (), mode = 'r' )
423423 self .assertEqual (len (tar .getmembers ()), 1 )
424+
425+ def _get_wireguard_empty_configuration (self ):
426+ return {
427+ 'interfaces' : [
428+ {
429+ 'addresses' : [],
430+ 'fwmark' : '' ,
431+ 'ip6prefix' : [],
432+ 'mtu' : 1420 ,
433+ 'name' : '' ,
434+ 'network' : '' ,
435+ 'nohostroute' : False ,
436+ 'port' : 51820 ,
437+ 'private_key' : '{{private_key}}' ,
438+ 'type' : 'wireguard' ,
439+ }
440+ ],
441+ 'wireguard_peers' : [
442+ {
443+ 'allowed_ips' : ['' ],
444+ 'endpoint_host' : '' ,
445+ 'endpoint_port' : 51820 ,
446+ 'interface' : '' ,
447+ 'persistent_keepalive' : 60 ,
448+ 'preshared_key' : '' ,
449+ 'public_key' : '' ,
450+ 'route_allowed_ips' : True ,
451+ }
452+ ],
453+ }
454+
455+ def _get_vxlan_wireguard_empty_configuration (self ):
456+ wireguard_config = self ._get_wireguard_empty_configuration ()
457+ vxlan_config = {
458+ 'disabled' : False ,
459+ 'mac' : '' ,
460+ 'mtu' : 1280 ,
461+ 'name' : 'vxlan' ,
462+ 'network' : '' ,
463+ 'port' : 4789 ,
464+ 'rxcsum' : True ,
465+ 'ttl' : 64 ,
466+ 'tunlink' : '' ,
467+ 'txcsum' : True ,
468+ 'type' : 'vxlan' ,
469+ 'vni' : 0 ,
470+ 'vtep' : '' ,
471+ }
472+ wireguard_config ['interfaces' ].append (vxlan_config )
473+ return wireguard_config
474+
475+ def test_wireguard_auto_client (self ):
476+ with self .subTest ('No arguments provided' ):
477+ expected = self ._get_wireguard_empty_configuration ()
478+ self .assertDictEqual (OpenWrt .wireguard_auto_client (), expected )
479+ with self .subTest ('Required arguments provided' ):
480+ expected = self ._get_wireguard_empty_configuration ()
481+ expected ['interfaces' ][0 ].update (
482+ {
483+ 'name' : 'wg' ,
484+ 'private_key' : '{{private_key}}' ,
485+ 'addresses' : [
486+ {
487+ 'address' : '10.0.0.2' ,
488+ 'family' : 'ipv4' ,
489+ 'mask' : 32 ,
490+ 'proto' : 'static' ,
491+ },
492+ ],
493+ }
494+ )
495+ expected ['wireguard_peers' ][0 ].update (
496+ {
497+ 'allowed_ips' : ['10.0.0.1/24' ],
498+ 'endpoint_host' : '0.0.0.0' ,
499+ 'public_key' : 'server_public_key' ,
500+ 'interface' : 'wg' ,
501+ }
502+ )
503+ self .assertDictEqual (
504+ OpenWrt .wireguard_auto_client (
505+ host = '0.0.0.0' ,
506+ public_key = 'server_public_key' ,
507+ server = {'name' : 'wg' , 'port' : 51820 },
508+ server_ip_network = '10.0.0.1/24' ,
509+ ip_address = '10.0.0.2' ,
510+ ),
511+ expected ,
512+ )
513+
514+ def test_vxlan_wireguard_auto_client (self ):
515+ with self .subTest ('No arguments provided' ):
516+ expected = self ._get_vxlan_wireguard_empty_configuration ()
517+ self .assertDictEqual (OpenWrt .vxlan_wireguard_auto_client (), expected )
518+ with self .subTest ('Required arguments provided' ):
519+ expected = self ._get_vxlan_wireguard_empty_configuration ()
520+ expected ['interfaces' ][0 ].update (
521+ {'name' : 'wg' , 'private_key' : '{{private_key}}' }
522+ )
523+ expected ['wireguard_peers' ][0 ].update (
524+ {
525+ 'allowed_ips' : ['10.0.0.1/24' ],
526+ 'endpoint_host' : '0.0.0.0' ,
527+ 'public_key' : 'server_public_key' ,
528+ 'interface' : 'wg' ,
529+ }
530+ )
531+ expected ['interfaces' ][1 ].update (
532+ {'tunlink' : 'wg' , 'vni' : 1 , 'vtep' : '10.0.0.1' }
533+ )
534+ self .assertDictEqual (
535+ OpenWrt .vxlan_wireguard_auto_client (
536+ host = '0.0.0.0' ,
537+ public_key = 'server_public_key' ,
538+ server = {'name' : 'wg' , 'port' : 51820 },
539+ server_ip_network = '10.0.0.1/24' ,
540+ vni = 1 ,
541+ server_ip_address = '10.0.0.1' ,
542+ ),
543+ expected ,
544+ )
0 commit comments