From 5ab6f4de211f8f8fcf73c140cc7ede4d00176cc5 Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Wed, 21 Oct 2020 16:34:52 +0200 Subject: [PATCH 1/6] Add get_config method Supports all retrive options, where 'candidate' is the Napalm candidate. Either gets the boot config as 'startup' or output from 'show' in edit mode for 'running' Supports sanitized only for 'running'. Outputs the 'show' in op mode. --- napalm_vyos/vyos.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/napalm_vyos/vyos.py b/napalm_vyos/vyos.py index ddddf06..100ccb9 100644 --- a/napalm_vyos/vyos.py +++ b/napalm_vyos/vyos.py @@ -914,3 +914,42 @@ def ping(self, } return ping_result + + def get_config(self, retrieve="all", full=False, sanitized=False): + """ + Return the configuration of a device. + :param retrieve: String to determine which configuration type you want to retrieve, default is all of them. + The rest will be set to "". + :param full: Boolean to retrieve all the configuration. (Not supported) + :param sanitized: Boolean to remove secret data. (Only supported for 'running') + :return: The object returned is a dictionary with a key for each configuration store: + - running(string) - Representation of the native running configuration + - candidate(string) - Representation of the candidate configuration. + - startup(string) - Representation of the native startup configuration. + """ + if retrieve not in ["running", "candidate", "startup", "all"]: + raise Exception("ERROR: Not a valid option to retrieve.\nPlease select from 'running', 'candidate', " + "'startup', or 'all'") + else: + config_dict = { + "running": "", + "startup": "", + "candidate": "" + } + if retrieve in ["running", "all"]: + config_dict['running'] = self._get_running_config(sanitized) + if retrieve in ["startup", "all"]: + config_dict['startup'] = self.device.send_command(f"cat {self._BOOT_FILENAME}") + if retrieve in ["candidate", "all"]: + config_dict['candidate'] = self._new_config + + return config_dict + + def _get_running_config(self, sanitized): + if sanitized: + return self.device.send_command("show configuration") + self.device.config_mode() + config = self.device.send_command("show") + config = config[:config.rfind('\n')] + self.device.exit_config_mode() + return config From 7107560f844eb427e6b641f22422424206e228f6 Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Thu, 22 Oct 2020 14:54:34 +0200 Subject: [PATCH 2/6] Add tests for get_config Add test cases for normal and sanitized versions. Add support for config mode in mock device. --- test/unit/conftest.py | 9 ++ .../normal/cat__config_config.boot.text | 123 +++++++++++++++++ .../normal/expected_result.json | 1 + .../test_get_config/normal/show.text | 124 ++++++++++++++++++ .../normal/cat__config_config.boot.text | 123 +++++++++++++++++ .../normal/expected_result.json | 1 + .../normal/show_configuration.text | 124 ++++++++++++++++++ 7 files changed, 505 insertions(+) create mode 100644 test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text create mode 100644 test/unit/mocked_data/test_get_config/normal/expected_result.json create mode 100644 test/unit/mocked_data/test_get_config/normal/show.text create mode 100644 test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text create mode 100644 test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json create mode 100644 test/unit/mocked_data/test_get_config_sanitized/normal/show_configuration.text diff --git a/test/unit/conftest.py b/test/unit/conftest.py index 6960292..b75adde 100644 --- a/test/unit/conftest.py +++ b/test/unit/conftest.py @@ -51,7 +51,16 @@ def open(self): class FakeVyOSDevice(BaseTestDouble): """VyOS device test double.""" + def __init__(self): + self.mode_config = False + def send_command(self, command, **kwargs): filename = '{}.text'.format(self.sanitize_text(command)) full_path = self.find_file(filename) return self.read_txt_file(full_path) + + def config_mode(self): + self.mode_config = True + + def exit_config_mode(self): + self.mode_config = False diff --git a/test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text b/test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text new file mode 100644 index 0000000..6e06146 --- /dev/null +++ b/test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text @@ -0,0 +1,123 @@ +interfaces { + ethernet eth0 { + address dhcp + } + ethernet eth1 { + address 10.0.1.222/24 + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr. + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1 + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} + + +/* Warning: Do not remove the following line. */ +/* === vyatta-config-version: "cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1" === */ +/* Release version: VyOS 1.1.7 */ diff --git a/test/unit/mocked_data/test_get_config/normal/expected_result.json b/test/unit/mocked_data/test_get_config/normal/expected_result.json new file mode 100644 index 0000000..4f7a109 --- /dev/null +++ b/test/unit/mocked_data/test_get_config/normal/expected_result.json @@ -0,0 +1 @@ +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} diff --git a/test/unit/mocked_data/test_get_config/normal/show.text b/test/unit/mocked_data/test_get_config/normal/show.text new file mode 100644 index 0000000..06701fe --- /dev/null +++ b/test/unit/mocked_data/test_get_config/normal/show.text @@ -0,0 +1,124 @@ +interfaces { + ethernet eth0 { + address dhcp + duplex auto + smp_affinity auto + speed auto + } + ethernet eth1 { + address 10.0.1.222/24 + duplex auto + smp_affinity auto + speed auto + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr. + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1 + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text b/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text new file mode 100644 index 0000000..6e06146 --- /dev/null +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text @@ -0,0 +1,123 @@ +interfaces { + ethernet eth0 { + address dhcp + } + ethernet eth1 { + address 10.0.1.222/24 + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr. + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1 + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} + + +/* Warning: Do not remove the following line. */ +/* === vyatta-config-version: "cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1" === */ +/* Release version: VyOS 1.1.7 */ diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json new file mode 100644 index 0000000..b71ab3b --- /dev/null +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json @@ -0,0 +1 @@ +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/show_configuration.text b/test/unit/mocked_data/test_get_config_sanitized/normal/show_configuration.text new file mode 100644 index 0000000..ac02187 --- /dev/null +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/show_configuration.text @@ -0,0 +1,124 @@ +interfaces { + ethernet eth0 { + address dhcp + duplex auto + smp_affinity auto + speed auto + } + ethernet eth1 { + address 10.0.1.222/24 + duplex auto + smp_affinity auto + speed auto + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password ********** + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password ********** + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} From d970ad22c94623e702a472386052e354b3133c2a Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Thu, 22 Oct 2020 16:51:57 +0200 Subject: [PATCH 3/6] Fixed tests Add missing case test_get_config_filtere Correct names of mock files --- ...boot.text => cat__config_config_boot.text} | 0 .../normal/cat__config_config_boot.text} | 0 .../normal/expected_result.json | 1 + .../test_get_config_filtered/normal/show.text | 124 ++++++++++++++++++ .../normal/cat__config_config_boot.text | 123 +++++++++++++++++ 5 files changed, 248 insertions(+) rename test/unit/mocked_data/test_get_config/normal/{cat__config_config.boot.text => cat__config_config_boot.text} (100%) rename test/unit/mocked_data/{test_get_config_sanitized/normal/cat__config_config.boot.text => test_get_config_filtered/normal/cat__config_config_boot.text} (100%) create mode 100644 test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json create mode 100644 test/unit/mocked_data/test_get_config_filtered/normal/show.text create mode 100644 test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config_boot.text diff --git a/test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text b/test/unit/mocked_data/test_get_config/normal/cat__config_config_boot.text similarity index 100% rename from test/unit/mocked_data/test_get_config/normal/cat__config_config.boot.text rename to test/unit/mocked_data/test_get_config/normal/cat__config_config_boot.text diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text b/test/unit/mocked_data/test_get_config_filtered/normal/cat__config_config_boot.text similarity index 100% rename from test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config.boot.text rename to test/unit/mocked_data/test_get_config_filtered/normal/cat__config_config_boot.text diff --git a/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json b/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json new file mode 100644 index 0000000..4f7a109 --- /dev/null +++ b/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json @@ -0,0 +1 @@ +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} diff --git a/test/unit/mocked_data/test_get_config_filtered/normal/show.text b/test/unit/mocked_data/test_get_config_filtered/normal/show.text new file mode 100644 index 0000000..06701fe --- /dev/null +++ b/test/unit/mocked_data/test_get_config_filtered/normal/show.text @@ -0,0 +1,124 @@ +interfaces { + ethernet eth0 { + address dhcp + duplex auto + smp_affinity auto + speed auto + } + ethernet eth1 { + address 10.0.1.222/24 + duplex auto + smp_affinity auto + speed auto + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr. + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1 + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config_boot.text b/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config_boot.text new file mode 100644 index 0000000..6e06146 --- /dev/null +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/cat__config_config_boot.text @@ -0,0 +1,123 @@ +interfaces { + ethernet eth0 { + address dhcp + } + ethernet eth1 { + address 10.0.1.222/24 + } + loopback lo { + address 10.2.2.2/32 + address 8.8.8.8/32 + } +} +policy { + prefix-list EXPORT { + rule 1 { + action permit + prefix 172.16.2.0/24 + } + rule 65535 { + action permit + prefix 10.2.2.2/32 + } + } + route-map EXPORT-POLICY { + rule 1 { + action permit + match { + ip { + address { + prefix-list EXPORT + } + } + } + } + } +} +protocols { + bgp 65002 { + neighbor 10.0.1.100 { + remote-as 65001 + route-map { + export EXPORT-POLICY + } + } + redistribute { + connected { + route-map EXPORT-POLICY + } + } + } +} +service { + snmp { + community commro { + authorization ro + } + contact admin@foo.corp + location PL,Krakow + } + ssh { + disable-host-validation + port 22 + } +} +system { + config-management { + commit-revisions 20 + } + host-name vyos2 + login { + banner { + pre-login "My banner for all devices" + } + user vagrant { + authentication { + encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr. + plaintext-password "" + public-keys vagrant { + key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== + type ssh-rsa + } + } + level admin + } + user vyos { + authentication { + encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1 + plaintext-password "" + } + level admin + } + } + ntp { + server 10.0.1.100 { + } + } + package { + auto-sync 1 + repository community { + components main + distribution helium + password "" + url http://packages.vyos.net/vyos + username "" + } + } + syslog { + global { + facility all { + level notice + } + facility protocols { + level debug + } + } + } + time-zone UTC +} + + +/* Warning: Do not remove the following line. */ +/* === vyatta-config-version: "cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1" === */ +/* Release version: VyOS 1.1.7 */ From 1200cf432867812bc112eec78003be660240a197 Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Thu, 22 Oct 2020 18:28:34 +0200 Subject: [PATCH 4/6] Fix sanitized_test, Add str return to candidate Change the expected results of sanitized test. If candidate config is None return empty string --- napalm_vyos/vyos.py | 2 +- test/unit/mocked_data/test_get_config_filtered/normal/show.text | 1 + .../test_get_config_sanitized/normal/expected_result.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/napalm_vyos/vyos.py b/napalm_vyos/vyos.py index 100ccb9..4f6d06e 100644 --- a/napalm_vyos/vyos.py +++ b/napalm_vyos/vyos.py @@ -941,7 +941,7 @@ def get_config(self, retrieve="all", full=False, sanitized=False): if retrieve in ["startup", "all"]: config_dict['startup'] = self.device.send_command(f"cat {self._BOOT_FILENAME}") if retrieve in ["candidate", "all"]: - config_dict['candidate'] = self._new_config + config_dict['candidate'] = self._new_config or "" return config_dict diff --git a/test/unit/mocked_data/test_get_config_filtered/normal/show.text b/test/unit/mocked_data/test_get_config_filtered/normal/show.text index 06701fe..18da59f 100644 --- a/test/unit/mocked_data/test_get_config_filtered/normal/show.text +++ b/test/unit/mocked_data/test_get_config_filtered/normal/show.text @@ -122,3 +122,4 @@ system { } time-zone UTC } +[edit] diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json index b71ab3b..1e6d3b9 100644 --- a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json @@ -1 +1 @@ -{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} +{"running": "", "startup": "", "candidate": null} From 7e470df55e8e76c4d99897a71c34c34ef7ce92e2 Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Fri, 23 Oct 2020 10:46:52 +0200 Subject: [PATCH 5/6] Fix expected results Fixed wrong output and new lines in expected results and corrected the show output for test_get_config --- .../mocked_data/test_get_config/normal/expected_result.json | 2 +- test/unit/mocked_data/test_get_config/normal/show.text | 1 + .../test_get_config_filtered/normal/expected_result.json | 2 +- .../test_get_config_sanitized/normal/expected_result.json | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test/unit/mocked_data/test_get_config/normal/expected_result.json b/test/unit/mocked_data/test_get_config/normal/expected_result.json index 4f7a109..af3d7db 100644 --- a/test/unit/mocked_data/test_get_config/normal/expected_result.json +++ b/test/unit/mocked_data/test_get_config/normal/expected_result.json @@ -1 +1 @@ -{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": ""} diff --git a/test/unit/mocked_data/test_get_config/normal/show.text b/test/unit/mocked_data/test_get_config/normal/show.text index 06701fe..5d392fe 100644 --- a/test/unit/mocked_data/test_get_config/normal/show.text +++ b/test/unit/mocked_data/test_get_config/normal/show.text @@ -122,3 +122,4 @@ system { } time-zone UTC } +[edit] \ No newline at end of file diff --git a/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json b/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json index 4f7a109..a70a040 100644 --- a/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json +++ b/test/unit/mocked_data/test_get_config_filtered/normal/expected_result.json @@ -1 +1 @@ -{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": null} +{"running": "", "startup": "", "candidate": ""} \ No newline at end of file diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json index 1e6d3b9..e069e93 100644 --- a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json @@ -1 +1 @@ -{"running": "", "startup": "", "candidate": null} +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": ""} From 619fc3d32cc28ea7ff384043cb50ff176442a433 Mon Sep 17 00:00:00 2001 From: Marcus Hoff Date: Fri, 23 Oct 2020 11:21:13 +0200 Subject: [PATCH 6/6] Fix expected results for sanitized changed the return password to be hidden --- .../test_get_config_sanitized/normal/expected_result.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json index e069e93..37d9ad3 100644 --- a/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json +++ b/test/unit/mocked_data/test_get_config_sanitized/normal/expected_result.json @@ -1 +1 @@ -{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": ""} +{"running": "interfaces {\n ethernet eth0 {\n address dhcp\n duplex auto\n smp_affinity auto\n speed auto\n }\n ethernet eth1 {\n address 10.0.1.222/24\n duplex auto\n smp_affinity auto\n speed auto\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password **********\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n", "startup": "interfaces {\n ethernet eth0 {\n address dhcp\n }\n ethernet eth1 {\n address 10.0.1.222/24\n }\n loopback lo {\n address 10.2.2.2/32\n address 8.8.8.8/32\n }\n}\npolicy {\n prefix-list EXPORT {\n rule 1 {\n action permit\n prefix 172.16.2.0/24\n }\n rule 65535 {\n action permit\n prefix 10.2.2.2/32\n }\n }\n route-map EXPORT-POLICY {\n rule 1 {\n action permit\n match {\n ip {\n address {\n prefix-list EXPORT\n }\n }\n }\n }\n }\n}\nprotocols {\n bgp 65002 {\n neighbor 10.0.1.100 {\n remote-as 65001\n route-map {\n export EXPORT-POLICY\n }\n }\n redistribute {\n connected {\n route-map EXPORT-POLICY\n }\n }\n }\n}\nservice {\n snmp {\n community commro {\n authorization ro\n }\n contact admin@foo.corp\n location PL,Krakow\n }\n ssh {\n disable-host-validation\n port 22\n }\n}\nsystem {\n config-management {\n commit-revisions 20\n }\n host-name vyos2\n login {\n banner {\n pre-login \"My banner for all devices\"\n }\n user vagrant {\n authentication {\n encrypted-password $6$fcHhBu3T$WLmiu6/txlEfWK5uh4mKE8v7qocuftsoAN1oHqPIIoogXAX8zS.SKhB105EExYU6yBy4cKHUD/Q6Mm7CUbVTr.\n plaintext-password \"\"\n public-keys vagrant {\n key AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==\n type ssh-rsa\n }\n }\n level admin\n }\n user vyos {\n authentication {\n encrypted-password $1$yHIMnG/J$aWDkd3oDYSYps8twB5vpw1\n plaintext-password \"\"\n }\n level admin\n }\n }\n ntp {\n server 10.0.1.100 {\n }\n }\n package {\n auto-sync 1\n repository community {\n components main\n distribution helium\n password \"\"\n url http://packages.vyos.net/vyos\n username \"\"\n }\n }\n syslog {\n global {\n facility all {\n level notice\n }\n facility protocols {\n level debug\n }\n }\n }\n time-zone UTC\n}\n\n\n/* Warning: Do not remove the following line. */\n/* === vyatta-config-version: \"cluster@1:config-management@1:conntrack-sync@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@4:nat@4:qos@1:quagga@2:system@6:vrrp@1:wanloadbalance@3:webgui@1:webproxy@1:zone-policy@1\" === */\n/* Release version: VyOS 1.1.7 */\n", "candidate": ""}