Skip to content
Snippets Groups Projects

replace mocked values in tests using faker methods

Merged Karel van Klink requested to merge feature/use-faker-for-tests into develop
All threads resolved!
4 files
+ 170
151
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 146
135
@@ -2,151 +2,162 @@ import time
@@ -2,151 +2,162 @@ import time
from unittest.mock import patch
from unittest.mock import patch
import jsonschema
import jsonschema
 
import pytest
import responses
import responses
 
from faker import Faker
from starlette.testclient import TestClient
from starlette.testclient import TestClient
from lso.playbook import PlaybookLaunchResponse
from lso.playbook import PlaybookLaunchResponse
from test.routes import TEST_CALLBACK_URL, test_ansible_runner_run
from test.routes import TEST_CALLBACK_URL, test_ansible_runner_run
_SUBSCRIPTION_OBJECT = {
"subscription_id": "0",
@pytest.fixture(scope="session")
"description": "IP trunk, geant_s_sid:GS-00000",
def subscription_object(faker: Faker) -> dict:
"iptrunk": {
return {
"geant_s_sid": "GS-00000",
"subscription_id": faker.pyint(),
"iptrunk_description": "A description for this trunk",
"description": "IP trunk, geant_s_sid:GS-00000",
"iptrunk_isis_metric": 9000,
"iptrunk": {
"iptrunk_minimum_links": 1,
"geant_s_sid": "GS-00000",
"iptrunk_sides": [
"iptrunk_description": faker.pystr(),
{
"iptrunk_isis_metric": faker.pyint(),
"name": "IptrunkSideBlock",
"iptrunk_minimum_links": 1,
"label": None,
"iptrunk_sides": [
"iptrunk_side_node": {
{
"name": "RouterBlock",
"name": "IptrunkSideBlock",
"label": None,
"label": None,
"router_fqdn": "rt1.city.country.geant.net",
"iptrunk_side_node": {
"router_role": "p",
"name": "RouterBlock",
"router_site": {
"name": "SiteBlock",
"label": None,
"label": None,
"site_city": "City",
"router_fqdn": "rt1.city.country.geant.net",
"site_name": "city",
"router_role": "p",
"site_tier": "1",
"router_site": {
"site_country": "Country",
"name": "SiteBlock",
"site_latitude": 1,
"label": None,
"site_longitude": 1,
"site_city": faker.city(),
"site_ts_address": "0.0.0.0",
"site_name": "city",
"site_internal_id": 1,
"site_tier": "1",
"site_country_code": "xxx",
"site_country": faker.country(),
"owner_subscription_id": "b5146e62-da79-4791-b703-d03b0ebeebf8",
"site_latitude": float(faker.latitude()),
"site_bgp_community_id": 1,
"site_longitude": float(faker.longitude()),
"subscription_instance_id": "039e03e5-5c09-4236-8d28-cd569e04315e",
"site_ts_address": faker.ipv4(),
 
"site_internal_id": faker.pyint(),
 
"site_country_code": faker.country_code(),
 
"owner_subscription_id": faker.uuid4(),
 
"site_bgp_community_id": faker.pyint(),
 
"subscription_instance_id": faker.uuid4(),
 
},
 
"router_vendor": "juniper",
 
"router_ts_port": faker.pyint(),
 
"router_access_via_ts": faker.pybool(),
 
"owner_subscription_id": faker.uuid4(),
 
"router_lo_iso_address": "49.51e5.0001.0620.4009.6014.00",
 
"router_lo_ipv4_address": faker.ipv4(),
 
"router_lo_ipv6_address": faker.ipv6(),
 
"router_si_ipv4_network": faker.ipv4() + "/31",
 
"router_is_ias_connected": faker.pybool(),
 
"subscription_instance_id": faker.uuid4(),
 
"router_ias_lt_ipv4_network": faker.ipv4() + "/31",
 
"router_ias_lt_ipv6_network": faker.ipv6() + "/126",
},
},
"router_vendor": "juniper",
"iptrunk_side_ae_iface": "ae1",
"router_ts_port": 22222,
"owner_subscription_id": faker.uuid4(),
"router_access_via_ts": True,
"iptrunk_side_ae_members": ["ge-0/0/0", "ge-0/0/1"],
"owner_subscription_id": "4a0001f1-459d-46f5-9a85-b8177e1bbc1b",
"subscription_instance_id": faker.uuid4(),
"router_lo_iso_address": "49.51e5.0001.0620.4009.6014.00",
"iptrunk_side_ae_geant_a_sid": "SID-11112",
"router_lo_ipv4_address": "0.0.0.0",
"iptrunk_side_ae_members_description": [faker.pystr(), faker.pystr()],
"router_lo_ipv6_address": "::",
"router_si_ipv4_network": "0.0.0.0/31",
"router_is_ias_connected": True,
"subscription_instance_id": "2242883e-a581-4ce1-919c-9c986ded57f6",
"router_ias_lt_ipv4_network": "0.0.0.0/31",
"router_ias_lt_ipv6_network": "::/126",
},
},
"iptrunk_side_ae_iface": "ae1",
{
"owner_subscription_id": "c9ddbe14-e107-4749-82ac-e22091cdb132",
"name": "IptrunkSideBlock",
"iptrunk_side_ae_members": ["ge-0/0/0", "ge-0/0/1"],
"subscription_instance_id": "6276fac5-9d31-4c9a-9247-48f02a19f151",
"iptrunk_side_ae_geant_a_sid": "SID-11112",
"iptrunk_side_ae_members_description": ["first one", "second one"],
},
{
"name": "IptrunkSideBlock",
"label": None,
"iptrunk_side_node": {
"name": "RouterBlock",
"label": None,
"label": None,
"router_fqdn": "rt2.city.country.geant.net",
"iptrunk_side_node": {
"router_role": "p",
"name": "RouterBlock",
"router_site": {
"name": "SiteBlock",
"label": None,
"label": None,
"site_city": "City",
"router_fqdn": "rt1.city.country.geant.net",
"site_name": "city",
"router_role": "p",
"site_tier": "1",
"router_site": {
"site_country": "Country",
"name": "SiteBlock",
"site_latitude": 1,
"label": None,
"site_longitude": 1,
"site_city": faker.city(),
"site_ts_address": "0.0.0.0",
"site_name": "city",
"site_internal_id": 2,
"site_tier": "1",
"site_country_code": "country",
"site_country": faker.country(),
"owner_subscription_id": "93cba8dc-7424-44c0-8872-13159df93042",
"site_latitude": float(faker.latitude()),
"site_bgp_community_id": 2,
"site_longitude": float(faker.longitude()),
"subscription_instance_id": "6bf4f274-6496-438d-9dba-9c3984d0ec07",
"site_ts_address": faker.ipv4(),
 
"site_internal_id": faker.pyint(),
 
"site_country_code": faker.country_code(),
 
"owner_subscription_id": faker.uuid4(),
 
"site_bgp_community_id": faker.pyint(),
 
"subscription_instance_id": faker.uuid4(),
 
},
 
"router_vendor": "juniper",
 
"router_ts_port": faker.pyint(),
 
"router_access_via_ts": faker.pybool(),
 
"owner_subscription_id": faker.uuid4(),
 
"router_lo_iso_address": "49.51e5.0001.0620.4009.6014.00",
 
"router_lo_ipv4_address": faker.ipv4(),
 
"router_lo_ipv6_address": faker.ipv6(),
 
"router_si_ipv4_network": faker.ipv4() + "/31",
 
"router_is_ias_connected": faker.pybool(),
 
"subscription_instance_id": faker.uuid4(),
 
"router_ias_lt_ipv4_network": faker.ipv4() + "/31",
 
"router_ias_lt_ipv6_network": faker.ipv6() + "/126",
},
},
"router_vendor": "juniper",
"iptrunk_side_ae_iface": "ae1",
"router_ts_port": 11111,
"owner_subscription_id": faker.uuid4(),
"router_access_via_ts": True,
"iptrunk_side_ae_members": ["ge-0/0/0", "ge-0/0/1"],
"owner_subscription_id": "9cb1fc7d-9608-42ce-aacc-2a97f9620a91",
"subscription_instance_id": faker.uuid4(),
"router_lo_iso_address": "49.51e5.0001.0620.4009.6066.00",
"iptrunk_side_ae_geant_a_sid": "SID-11112",
"router_lo_ipv4_address": "0.0.0.0",
"iptrunk_side_ae_members_description": [faker.pystr(), faker.pystr()],
"router_lo_ipv6_address": "::",
"router_si_ipv4_network": "0.0.0.0/31",
"router_is_ias_connected": True,
"subscription_instance_id": "6d09394e-658b-4e55-8b1f-8b812d59f5a1",
"router_ias_lt_ipv4_network": "0.0.0.0/31",
"router_ias_lt_ipv6_network": "::/126",
},
},
"iptrunk_side_ae_iface": "ae1",
],
"owner_subscription_id": "c9ddbe14-e107-4749-82ac-e22091cdb132",
"iptrunk_side_ae_members": ["ge-0/0/0", "ge-0/0/1"],
},
],
},
"status": "provisioning",
}
_MIGRATION_OBJECT = {
"new_node": {
"description": "Router rt1.luc.it.geant.net",
"router": {
"router_access_via_ts": "true",
"router_fqdn": "rt1.luc.it.geant.net",
"router_role": "pe",
"router_is_ias_connected": "false",
"router_lo_ipv4_address": "62.40.96.7",
"router_lo_ipv6_address": "2001:798:aa:1::49",
"router_lo_iso_address": "49.51e5.0001.0620.4009.6007.00",
"router_site": {
"name": "SiteBlock",
"label": "null",
"site_city": "Lucca",
"site_name": "luc",
"site_tier": "1",
"site_country": "Italy",
"site_latitude": "10.0",
"site_longitude": "43.0",
"site_ts_address": "172.16.100.151",
"site_internal_id": 133,
"site_country_code": "IT",
"owner_subscription_id": "f4bacf38-39bb-4553-8e74-190699bd9b4e",
"site_bgp_community_id": 33,
"subscription_instance_id": "2cf443a2-4039-4402-ab75-73ff1a1096f5",
},
"router_ts_port": 22111,
"router_vendor": "juniper",
},
},
"status": "provisioning",
"status": "provisioning",
},
}
"new_lag_interface": "ae1",
"new_lag_member_interfaces": ["ge-0/0/0", "ge-0/0/1"],
"replace_index": 0,
@pytest.fixture(scope="session")
}
def migration_object(faker: Faker) -> dict:
 
return {
 
"new_node": {
 
"description": "Router rt1.luc.it.geant.net",
 
"router": {
 
"router_access_via_ts": "true",
 
"router_fqdn": "rt1.luc.it.geant.net",
 
"router_role": "pe",
 
"router_is_ias_connected": faker.pybool(),
 
"router_lo_ipv4_address": faker.ipv4(),
 
"router_lo_ipv6_address": faker.ipv6(),
 
"router_lo_iso_address": "49.51e5.0001.0620.4009.6007.00",
 
"router_site": {
 
"name": "SiteBlock",
 
"label": "null",
 
"site_city": faker.city(),
 
"site_name": "luc",
 
"site_tier": "1",
 
"site_country": faker.country(),
 
"site_latitude": "10.0",
 
"site_longitude": "43.0",
 
"site_ts_address": faker.ipv4(),
 
"site_internal_id": faker.pyint(),
 
"site_country_code": faker.country_code(),
 
"owner_subscription_id": faker.uuid4(),
 
"site_bgp_community_id": faker.pyint(),
 
"subscription_instance_id": faker.uuid4(),
 
},
 
"router_ts_port": faker.pyint(),
 
"router_vendor": "juniper",
 
},
 
"status": "provisioning",
 
},
 
"new_lag_interface": "ae1",
 
"new_lag_member_interfaces": ["ge-0/0/0", "ge-0/0/1"],
 
"replace_index": 0,
 
}
@responses.activate
@responses.activate
def test_ip_trunk_provisioning(client: TestClient) -> None:
def test_ip_trunk_provisioning(client: TestClient, subscription_object: dict) -> None:
responses.put(url=TEST_CALLBACK_URL, status=204)
responses.put(url=TEST_CALLBACK_URL, status=204)
params = {
params = {
@@ -156,7 +167,7 @@ def test_ip_trunk_provisioning(client: TestClient) -> None:
@@ -156,7 +167,7 @@ def test_ip_trunk_provisioning(client: TestClient) -> None:
"dry_run": True,
"dry_run": True,
"object": "trunk_interface",
"object": "trunk_interface",
"verb": "deploy",
"verb": "deploy",
"subscription": _SUBSCRIPTION_OBJECT,
"subscription": subscription_object,
}
}
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
@@ -173,7 +184,7 @@ def test_ip_trunk_provisioning(client: TestClient) -> None:
@@ -173,7 +184,7 @@ def test_ip_trunk_provisioning(client: TestClient) -> None:
@responses.activate
@responses.activate
def test_ip_trunk_modification(client: TestClient) -> None:
def test_ip_trunk_modification(client: TestClient, subscription_object: dict) -> None:
responses.put(url=TEST_CALLBACK_URL, status=204)
responses.put(url=TEST_CALLBACK_URL, status=204)
params = {
params = {
@@ -182,8 +193,8 @@ def test_ip_trunk_modification(client: TestClient) -> None:
@@ -182,8 +193,8 @@ def test_ip_trunk_modification(client: TestClient) -> None:
"tt_number": "TT123456789",
"tt_number": "TT123456789",
"dry_run": True,
"dry_run": True,
"verb": "modify",
"verb": "modify",
"subscription": _SUBSCRIPTION_OBJECT,
"subscription": subscription_object,
"old_subscription": _SUBSCRIPTION_OBJECT,
"old_subscription": subscription_object,
}
}
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
@@ -200,7 +211,7 @@ def test_ip_trunk_modification(client: TestClient) -> None:
@@ -200,7 +211,7 @@ def test_ip_trunk_modification(client: TestClient) -> None:
@responses.activate
@responses.activate
def test_ip_trunk_deletion(client: TestClient) -> None:
def test_ip_trunk_deletion(client: TestClient, subscription_object: dict) -> None:
responses.put(url=TEST_CALLBACK_URL, status=204)
responses.put(url=TEST_CALLBACK_URL, status=204)
params = {
params = {
@@ -209,7 +220,7 @@ def test_ip_trunk_deletion(client: TestClient) -> None:
@@ -209,7 +220,7 @@ def test_ip_trunk_deletion(client: TestClient) -> None:
"tt_number": "TT123456789",
"tt_number": "TT123456789",
"dry_run": True,
"dry_run": True,
"verb": "terminate",
"verb": "terminate",
"subscription": _SUBSCRIPTION_OBJECT,
"subscription": subscription_object,
}
}
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
@@ -226,7 +237,7 @@ def test_ip_trunk_deletion(client: TestClient) -> None:
@@ -226,7 +237,7 @@ def test_ip_trunk_deletion(client: TestClient) -> None:
@responses.activate
@responses.activate
def test_ip_trunk_migration(client: TestClient) -> None:
def test_ip_trunk_migration(client: TestClient, subscription_object: dict, migration_object: dict) -> None:
responses.put(url=TEST_CALLBACK_URL, status=204)
responses.put(url=TEST_CALLBACK_URL, status=204)
params = {
params = {
@@ -236,8 +247,8 @@ def test_ip_trunk_migration(client: TestClient) -> None:
@@ -236,8 +247,8 @@ def test_ip_trunk_migration(client: TestClient) -> None:
"tt_number": "TT123456789",
"tt_number": "TT123456789",
"verb": "migrate",
"verb": "migrate",
"config_object": "trunk_interface",
"config_object": "trunk_interface",
"subscription": _SUBSCRIPTION_OBJECT,
"subscription": subscription_object,
"new_side": _MIGRATION_OBJECT,
"new_side": migration_object,
}
}
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
with patch("lso.playbook.ansible_runner.run", new=test_ansible_runner_run) as _:
Loading