Skip to content

Commit

Permalink
[tests] Added tests for Wireguard and VXLAN backends
Browse files Browse the repository at this point in the history
  • Loading branch information
pandafy committed Apr 16, 2021
1 parent fa3f7f6 commit 8f50313
Show file tree
Hide file tree
Showing 7 changed files with 182 additions and 5 deletions.
1 change: 0 additions & 1 deletion netjsonconfig/backends/vxlan/vxlan_wireguard.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,4 @@ def auto_client(cls, vni=0, server_ip_address='', **kwargs):
'server_ip_address': server_ip_address,
'vni': vni,
}
print(kwargs)
return config
8 changes: 4 additions & 4 deletions netjsonconfig/backends/wireguard/wireguard.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class Wireguard(BaseVpnBackend):
config_suffix = config_suffix

@classmethod
def auto_client(cls, host=None, pub_key=None, server={}, port=51820, **kwargs):
def auto_client(cls, host='', pub_key='', server={}, port=51820, **kwargs):
"""
Returns a configuration dictionary representing Wireguard configuration
that is compatible with the passed server configuration.
Expand All @@ -25,7 +25,7 @@ def auto_client(cls, host=None, pub_key=None, server={}, port=51820, **kwargs):
:param pub_key: publick key of the Wireguard server
:returns: dictionary representing a Wireguard server and client properties
"""
server_name = server.get('name')
server_name = server.get('name', '')
return {
'client': {
'port': port,
Expand All @@ -36,7 +36,7 @@ def auto_client(cls, host=None, pub_key=None, server={}, port=51820, **kwargs):
'name': server_name,
'public_key': pub_key,
'endpoint_host': host,
'endpoint_port': server.get('port'),
'allowed_ips': [kwargs.get('server_ip_max_prefix')],
'endpoint_port': server.get('port', 51820),
'allowed_ips': [kwargs.get('server_ip_max_prefix', '')],
},
}
110 changes: 110 additions & 0 deletions tests/openwrt/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,3 +421,113 @@ def test_override_file(self):
# ensure the additional files are there present in the tar.gz archive
tar = tarfile.open(fileobj=o.generate(), mode='r')
self.assertEqual(len(tar.getmembers()), 1)

def _get_wireguard_empty_configuration(self):
return {
'interfaces': [
{
'addresses': [],
'disabled': True,
'fwmark': '',
'ip6prefix': [],
'mtu': 1420,
'name': '_client',
'network': '',
'nohostroute': False,
'port': 51820,
'private_key': '{{private_key}}',
'type': 'wireguard',
}
],
'wireguard_peers': [
{
'allowed_ips': [''],
'endpoint_host': '',
'endpoint_port': 51820,
'interface': '',
'persistent_keepalive': 0,
'preshared_key': '',
'public_key': '',
'route_allowed_ips': False,
}
],
}

def _get_vxlan_wireguard_empty_configuration(self):
wireguard_config = self._get_wireguard_empty_configuration()
vxlan_config = {
'disabled': False,
'mac': '',
'mtu': 1280,
'name': 'vxlan',
'network': '',
'port': 4789,
'rxcsum': True,
'ttl': 64,
'tunlink': '_client',
'txcsum': True,
'type': 'vxlan',
'vni': 0,
'vtep': '',
}
wireguard_config['interfaces'].append(vxlan_config)
return wireguard_config

def test_wireguard_auto_client(self):
with self.subTest('No arguments provided'):
expected = self._get_wireguard_empty_configuration()
self.assertDictEqual(OpenWrt.wireguard_auto_client(), expected)
with self.subTest('Required arguments provided'):
expected = self._get_wireguard_empty_configuration()
expected['interfaces'][0].update(
{'name': 'wg_client', 'private_key': '{{private_key}}'}
)
expected['wireguard_peers'][0].update(
{
'allowed_ips': ['10.0.0.1/24'],
'endpoint_host': '0.0.0.0',
'public_key': 'server_public_key',
'interface': 'wg',
}
)
self.assertDictEqual(
OpenWrt.wireguard_auto_client(
host='0.0.0.0',
pub_key='server_public_key',
server={'name': 'wg', 'port': 51820},
server_ip_max_prefix='10.0.0.1/24',
),
expected,
)

def test_vxlan_wireguard_auto_client(self):
with self.subTest('No arguments provided'):
expected = self._get_vxlan_wireguard_empty_configuration()
self.assertDictEqual(OpenWrt.vxlan_wireguard_auto_client(), expected)
with self.subTest('Required arguments provided'):
expected = self._get_vxlan_wireguard_empty_configuration()
expected['interfaces'][0].update(
{'name': 'wg_client', 'private_key': '{{private_key}}'}
)
expected['wireguard_peers'][0].update(
{
'allowed_ips': ['10.0.0.1/24'],
'endpoint_host': '0.0.0.0',
'public_key': 'server_public_key',
'interface': 'wg',
}
)
expected['interfaces'][1].update(
{'tunlink': 'wg_client', 'vni': 1, 'vtep': '10.0.0.1'}
)
self.assertDictEqual(
OpenWrt.vxlan_wireguard_auto_client(
host='0.0.0.0',
pub_key='server_public_key',
server={'name': 'wg', 'port': 51820},
server_ip_max_prefix='10.0.0.1/24',
vni=1,
server_ip_address='10.0.0.1',
),
expected,
)
Empty file added tests/vxlan/__init__.py
Empty file.
25 changes: 25 additions & 0 deletions tests/vxlan/test_vxlan_wireguard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import unittest

from netjsonconfig import VxlanWireguard


class TestBackend(unittest.TestCase):
def test_auto_client(self):
with self.subTest('No arguments are provided'):
expected = {
'server_ip_address': '',
'vni': 0,
}
self.assertDictEqual(VxlanWireguard.auto_client(), expected)

with self.subTest('All arguments are provided'):
expected = {
'server_ip_address': '10.0.0.1',
'vni': 1,
}
self.assertDictEqual(
VxlanWireguard.auto_client(
vni=1, server_ip_address='10.0.0.1', server={}
),
expected,
)
42 changes: 42 additions & 0 deletions tests/wireguard/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,45 @@ def test_generate(self):
PublicKey = jqHs76yCH0wThMSqogDshndAiXelfffUJVcFmz352HI=
"""
self.assertEqual(contents, expected)

def test_auto_client(self):
with self.subTest('No arguments are provided'):
expected = {
'client': {
'port': 51820,
'private_key': '{{private_key}}',
'name': '_client',
},
'server': {
'name': '',
'public_key': '',
'endpoint_host': '',
'endpoint_port': 51820,
'allowed_ips': [''],
},
}
self.assertDictEqual(Wireguard.auto_client(), expected)
with self.subTest('Required arguments are provided'):
expected = {
'client': {
'port': 51820,
'private_key': '{{private_key}}',
'name': 'wg_client',
},
'server': {
'name': 'wg',
'public_key': 'server_public_key',
'endpoint_host': '0.0.0.0',
'endpoint_port': 51820,
'allowed_ips': ['10.0.0.1/24'],
},
}
self.assertDictEqual(
Wireguard.auto_client(
host='0.0.0.0',
pub_key='server_public_key',
server={'name': 'wg', 'port': 51820},
server_ip_max_prefix='10.0.0.1/24',
),
expected,
)
1 change: 1 addition & 0 deletions tests/wireguard/test_parser.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from unittest.mock import patch

from netjsonconfig.backends.wireguard.parser import WireguardParser


Expand Down

0 comments on commit 8f50313

Please sign in to comment.