diff --git a/requirements.txt b/requirements.txt index 902e2ac..7bd8676 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ # annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.6.0 # via httpx attrs==24.2.0 # via @@ -16,7 +16,7 @@ certifi==2024.8.30 # via # httpcore # httpx -cffi==1.17.0 +cffi==1.17.1 # via cryptography click==8.1.7 # via typer @@ -30,7 +30,7 @@ httpcore==1.0.5 # via httpx httpx==0.27.2 # via lightkube -idna==3.8 +idna==3.10 # via # anyio # httpx @@ -44,16 +44,16 @@ jsonschema-specifications==2023.12.1 # via jsonschema lightkube==0.15.4 # via cosl -lightkube-models==1.30.0.8 +lightkube-models==1.31.1.8 # via lightkube markupsafe==2.1.5 # via jinja2 -ops==2.16.0 +ops==2.17.0 # via # -r requirements.in # cosl # ops-scenario -ops-scenario==6.1.7 +ops-scenario==7.0.5 # via pytest-interface-tester packaging==24.1 # via pytest @@ -70,7 +70,7 @@ pydantic-core==2.23.4 # via pydantic pytest==8.3.3 # via pytest-interface-tester -pytest-interface-tester==3.1.0 +pytest-interface-tester==3.2.0 # via -r requirements.in pyyaml==6.0.2 # via diff --git a/test-requirements.txt b/test-requirements.txt index c85244b..9b50acb 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -12,10 +12,12 @@ cachetools==5.5.0 # via google-auth certifi==2024.8.30 # via + # -c requirements.txt # kubernetes # requests -cffi==1.17.0 +cffi==1.17.1 # via + # -c requirements.txt # cryptography # pynacl charset-normalizer==3.3.2 @@ -25,21 +27,29 @@ codespell==2.3.0 coverage[toml]==7.6.1 # via -r test-requirements.in cryptography==43.0.1 - # via paramiko + # via + # -c requirements.txt + # paramiko decorator==5.1.1 # via # ipdb # ipython +durationpy==0.7 + # via kubernetes executing==2.1.0 # via stack-data -google-auth==2.34.0 +google-auth==2.35.0 # via kubernetes hvac==2.3.0 # via juju -idna==3.8 - # via requests +idna==3.10 + # via + # -c requirements.txt + # requests iniconfig==2.0.0 - # via pytest + # via + # -c requirements.txt + # pytest ipdb==0.13.13 # via pytest-operator ipython==8.27.0 @@ -47,17 +57,21 @@ ipython==8.27.0 jedi==0.19.1 # via ipython jinja2==3.1.4 - # via pytest-operator + # via + # -c requirements.txt + # pytest-operator juju==3.5.2.0 # via # -r test-requirements.in # pytest-operator -kubernetes==30.1.0 +kubernetes==31.0.0 # via juju macaroonbakery==1.3.4 # via juju markupsafe==2.1.5 - # via jinja2 + # via + # -c requirements.txt + # jinja2 matplotlib-inline==0.1.7 # via ipython mypy-extensions==1.0.0 @@ -68,39 +82,48 @@ oauthlib==3.2.2 # via # kubernetes # requests-oauthlib -ops==2.16.0 - # via ops-scenario -ops-scenario==6.1.7 - # via -r test-requirements.in +ops==2.17.0 + # via + # -c requirements.txt + # ops-scenario +ops-scenario==7.0.5 + # via + # -c requirements.txt + # -r test-requirements.in packaging==24.1 # via + # -c requirements.txt # juju # pytest -paramiko==3.4.1 +paramiko==3.5.0 # via juju parso==0.8.4 # via jedi pexpect==4.9.0 # via ipython pluggy==1.5.0 - # via pytest -prompt-toolkit==3.0.47 + # via + # -c requirements.txt + # pytest +prompt-toolkit==3.0.48 # via ipython -protobuf==5.28.0 +protobuf==5.28.2 # via macaroonbakery ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pyasn1==0.6.0 +pyasn1==0.6.1 # via # juju # pyasn1-modules # rsa -pyasn1-modules==0.4.0 +pyasn1-modules==0.4.1 # via google-auth pycparser==2.22 - # via cffi + # via + # -c requirements.txt + # cffi pygments==2.18.0 # via ipython pymacaroons==0.13.0 @@ -118,6 +141,7 @@ pyright==1.1.382.post1 # via -r test-requirements.in pytest==8.3.3 # via + # -c requirements.txt # -r test-requirements.in # pytest-asyncio # pytest-operator @@ -129,10 +153,11 @@ pytest-operator==0.37.0 # via -r test-requirements.in python-dateutil==2.9.0.post0 # via kubernetes -pytz==2024.1 +pytz==2024.2 # via pyrfc3339 pyyaml==6.0.2 # via + # -c requirements.txt # juju # kubernetes # ops @@ -148,7 +173,7 @@ requests-oauthlib==2.0.0 # via kubernetes rsa==4.9 # via google-auth -ruff==0.6.3 +ruff==0.6.8 # via -r test-requirements.in six==1.16.0 # via @@ -167,11 +192,12 @@ traitlets==5.14.3 # matplotlib-inline typing-extensions==4.12.2 # via + # -c requirements.txt # pyright # typing-inspect typing-inspect==0.9.0 # via juju -urllib3==2.2.2 +urllib3==2.2.3 # via # kubernetes # requests @@ -179,7 +205,8 @@ wcwidth==0.2.13 # via prompt-toolkit websocket-client==1.8.0 # via + # -c requirements.txt # kubernetes # ops -websockets==13.0.1 +websockets==13.1 # via juju diff --git a/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_provider_interface.py b/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_provider_interface.py index 6f0d760..60acf2e 100644 --- a/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_provider_interface.py +++ b/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_provider_interface.py @@ -79,17 +79,17 @@ def test_given_unit_is_leader_when_set_nrf_information_then_data_is_in_applicati leader=True, relations=[nrf_relation], ) - action = scenario.Action( - name="set-nrf-information", - params={ - "url": "http://whatever.url.com", - "relation-id": str(nrf_relation.relation_id), - }, - ) + params = { + "url": "http://whatever.url.com", + "relation-id": str(nrf_relation.id), + } - action_output = self.ctx.run_action(action, state_in) + state_out = self.ctx.run( + self.ctx.on.action("set-nrf-information", params=params), state_in + ) - assert action_output.state.relations[0].local_app_data["url"] == "http://whatever.url.com" + relation = state_out.get_relation(nrf_relation.id) + assert relation.local_app_data["url"] == "http://whatever.url.com" def test_given_unit_is_not_leader_when_set_nrf_information_then_data_is_not_in_application_databag( # noqa: E501 self, @@ -102,16 +102,13 @@ def test_given_unit_is_not_leader_when_set_nrf_information_then_data_is_not_in_a leader=False, relations=[nrf_relation], ) - action = scenario.Action( - name="set-nrf-information", - params={ - "url": "http://whatever.url.com", - "relation-id": str(nrf_relation.relation_id), - }, - ) + params = { + "url": "http://whatever.url.com", + "relation-id": str(nrf_relation.id), + } with pytest.raises(Exception) as e: - self.ctx.run_action(action, state_in) + self.ctx.run(self.ctx.on.action("set-nrf-information", params=params), state_in) assert "Unit must be leader to set application relation data" in str(e.value) @@ -126,16 +123,13 @@ def test_given_provided_nrf_url_is_not_valid_when_set_nrf_information_then_error leader=True, relations=[nrf_relation], ) - action = scenario.Action( - name="set-nrf-information", - params={ - "url": "invalid url", - "relation-id": str(nrf_relation.relation_id), - }, - ) + params = { + "url": "invalid url", + "relation-id": str(nrf_relation.id), + } with pytest.raises(Exception) as e: - self.ctx.run_action(action, state_in) + self.ctx.run(self.ctx.on.action("set-nrf-information", params=params), state_in) assert "invalid url" in str(e.value) @@ -146,16 +140,13 @@ def test_given_unit_is_leader_and_fiveg_nrf_relation_is_not_created_when_set_nrf leader=True, relations=[], ) - action = scenario.Action( - name="set-nrf-information", - params={ - "url": "http://whatever.url.com", - "relation-id": "0", - }, - ) + params = { + "url": "http://whatever.url.com", + "relation-id": "0", + } with pytest.raises(Exception) as e: - self.ctx.run_action(action, state_in) + self.ctx.run(self.ctx.on.action("set-nrf-information", params=params), state_in) assert "Relation fiveg_nrf not created yet." in str(e.value) @@ -174,14 +165,15 @@ def test_given_unit_is_leader_when_set_nrf_information_in_all_relations_then_dat leader=True, relations=[nrf_relation_1, nrf_relation_2], ) - action = scenario.Action( - name="set-nrf-information-in-all-relations", - params={ - "url": "http://whatever.url.com", - }, - ) + params = { + "url": "http://whatever.url.com", + } - action_output = self.ctx.run_action(action, state_in) + state_out = self.ctx.run( + self.ctx.on.action("set-nrf-information-in-all-relations", params=params), state_in + ) - assert action_output.state.relations[0].local_app_data["url"] == "http://whatever.url.com" - assert action_output.state.relations[1].local_app_data["url"] == "http://whatever.url.com" + relation_1 = state_out.get_relation(nrf_relation_1.id) + relation_2 = state_out.get_relation(nrf_relation_2.id) + assert relation_1.local_app_data["url"] == "http://whatever.url.com" + assert relation_2.local_app_data["url"] == "http://whatever.url.com" diff --git a/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_requirer_interface.py b/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_requirer_interface.py index 3dd8257..517d95f 100644 --- a/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_requirer_interface.py +++ b/tests/unit/charms/sdcore_nrf/v0/test_fiveg_nrf_requirer_interface.py @@ -59,7 +59,7 @@ def test_given_nrf_information_in_relation_data_when_relation_changed_then_nrf_a relations=[nrf_relation], ) - self.ctx.run(nrf_relation.changed_event, state_in) + self.ctx.run(self.ctx.on.relation_changed(nrf_relation), state_in) assert len(self.ctx.emitted_events) == 2 assert isinstance(self.ctx.emitted_events[1], NRFAvailableEvent) @@ -76,7 +76,7 @@ def test_given_nrf_information_not_in_relation_data_when_relation_changed_then_n relations=[nrf_relation], ) - self.ctx.run(nrf_relation.changed_event, state_in) + self.ctx.run(self.ctx.on.relation_changed(nrf_relation), state_in) assert len(self.ctx.emitted_events) == 1 @@ -94,7 +94,7 @@ def test_given_invalid_nrf_information_in_relation_data_when_relation_changed_th relations=[nrf_relation], ) - self.ctx.run(nrf_relation.changed_event, state_in) + self.ctx.run(self.ctx.on.relation_changed(nrf_relation), state_in) assert len(self.ctx.emitted_events) == 1 @@ -112,7 +112,7 @@ def test_given_invalid_nrf_information_in_relation_data_when_relation_changed_th relations=[nrf_relation], ) - self.ctx.run(nrf_relation.changed_event, state_in) + self.ctx.run(self.ctx.on.relation_changed(nrf_relation), state_in) assert "Invalid relation data: {'pizza': 'steak'}" in caplog.messages @@ -130,11 +130,12 @@ def test_given_nrf_information_in_relation_data_when_get_nrf_url_is_called_then_ relations=[nrf_relation], ) - action_output = self.ctx.run_action("get-nrf-url", state_in) + self.ctx.run(self.ctx.on.action("get-nrf-url"), state_in) - assert action_output.success is True - assert action_output.results - assert action_output.results["nrf-url"] == "http://nrf.com" + assert self.ctx.action_results + assert self.ctx.action_results == { + "nrf-url": "http://nrf.com", + } def test_given_nrf_information_not_in_relation_data_when_get_nrf_url_then_returns_none( # noqa: E501 self, caplog @@ -147,11 +148,12 @@ def test_given_nrf_information_not_in_relation_data_when_get_nrf_url_then_return relations=[nrf_relation], ) - action_output = self.ctx.run_action("get-nrf-url", state_in) + self.ctx.run(self.ctx.on.action("get-nrf-url"), state_in) - assert action_output.success is True - assert action_output.results - assert action_output.results["nrf-url"] is None + assert self.ctx.action_results + assert self.ctx.action_results == { + "nrf-url": None, + } assert "Invalid relation data: {}" in caplog.messages def test_given_nrf_information_in_relation_data_is_not_valid_when_get_nrf_url_then_returns_none_and_error_is_logged( # noqa: E501 @@ -168,11 +170,12 @@ def test_given_nrf_information_in_relation_data_is_not_valid_when_get_nrf_url_th relations=[nrf_relation], ) - action_output = self.ctx.run_action("get-nrf-url", state_in) + self.ctx.run(self.ctx.on.action("get-nrf-url"), state_in) - assert action_output.success is True - assert action_output.results - assert action_output.results["nrf-url"] is None + assert self.ctx.action_results + assert self.ctx.action_results == { + "nrf-url": None, + } assert "Invalid relation data: {'pizza': 'steak'}" in caplog.messages def test_given_nrf_relation_created_when_relation_broken_then_nrf_broken_event_emitted(self): @@ -184,7 +187,7 @@ def test_given_nrf_relation_created_when_relation_broken_then_nrf_broken_event_e relations=[nrf_relation], ) - self.ctx.run(nrf_relation.broken_event, state_in) + self.ctx.run(self.ctx.on.relation_broken(nrf_relation), state_in) assert len(self.ctx.emitted_events) == 2 assert isinstance(self.ctx.emitted_events[1], NRFBrokenEvent) diff --git a/tests/unit/test_charm_certificate_relation_broken.py b/tests/unit/test_charm_certificate_relation_broken.py index 74a4782..46cba17 100644 --- a/tests/unit/test_charm_certificate_relation_broken.py +++ b/tests/unit/test_charm_certificate_relation_broken.py @@ -19,7 +19,7 @@ def test_given_container_when_certificates_relation_broken_then_certificate_dele ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -36,7 +36,7 @@ def test_given_container_when_certificates_relation_broken_then_certificate_dele with open(f"{temp_dir}/nrf.key", "w") as key_file: key_file.write("key") - self.ctx.run(certificates_relation.broken_event, state_in) + self.ctx.run(self.ctx.on.relation_broken(certificates_relation), state_in) assert not os.path.exists(f"{temp_dir}/nrf.pem") assert not os.path.exists(f"{temp_dir}/nrf.key") diff --git a/tests/unit/test_charm_collect_status.py b/tests/unit/test_charm_collect_status.py index d0a67fc..706da37 100644 --- a/tests/unit/test_charm_collect_status.py +++ b/tests/unit/test_charm_collect_status.py @@ -22,7 +22,7 @@ def test_given_container_not_ready_when_collect_unit_status_then_status_is_waiti leader=True, ) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for container to be ready") @@ -36,7 +36,7 @@ def test_given_relations_not_created_when_collect_unit_status_then_status_is_blo leader=True, ) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == BlockedStatus( "Waiting for database, sdcore_config, certificates relation(s)" @@ -59,7 +59,7 @@ def test_given_certificates_and_nms_relations_not_created_when_collect_unit_stat leader=True, ) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == BlockedStatus( "Waiting for sdcore_config, certificates relation(s)" @@ -86,7 +86,7 @@ def test_given_nms_relation_not_created_when_collect_unit_status_then_status_is_ leader=True, ) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == BlockedStatus("Waiting for sdcore_config relation(s)") @@ -116,7 +116,7 @@ def test_given_database_not_available_when_collect_unit_status_then_status_is_wa ) self.mock_database_resource_created.return_value = False - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for the database to be available") @@ -147,7 +147,7 @@ def test_given_database_information_not_available_when_collect_unit_status_then_ self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = {} - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for database URI") @@ -177,11 +177,11 @@ def test_given_webui_data_not_available_when_collect_unit_status_then_status_is_ ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "mongodb://localhost:27017"}, + database_relation.id: {"uris": "mongodb://localhost:27017"}, } self.mock_sdcore_config_webui_url.return_value = None - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for Webui data to be available") @@ -211,11 +211,11 @@ def test_given_storage_not_attached_when_collect_unit_status_then_status_is_wait ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "mongodb://localhost:27017"}, + database_relation.id: {"uris": "mongodb://localhost:27017"}, } self.mock_sdcore_config_webui_url.return_value = "https://webui.url" - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for storage to be attached") @@ -237,11 +237,11 @@ def test_given_certificates_not_stored_when_collect_unit_status_then_status_is_w ) config_mount = scenario.Mount( location="/etc/nrf/", - src=tempdir, + source=tempdir, ) certs_mount = scenario.Mount( location="/support/TLS/", - src=tempdir, + source=tempdir, ) container = scenario.Container( name="nrf", @@ -258,12 +258,12 @@ def test_given_certificates_not_stored_when_collect_unit_status_then_status_is_w ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "mongodb://localhost:27017"}, + database_relation.id: {"uris": "mongodb://localhost:27017"}, } self.mock_sdcore_config_webui_url.return_value = "https://webui.url" self.mock_get_assigned_certificate.return_value = (None, None) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus( "Waiting for certificates to be available" @@ -287,11 +287,11 @@ def test_given_nrf_service_not_started_when_collect_unit_status_then_status_is_w ) config_mount = scenario.Mount( location="/etc/nrf/", - src=tempdir, + source=tempdir, ) certs_mount = scenario.Mount( location="/support/TLS/", - src=tempdir, + source=tempdir, ) container = scenario.Container( name="nrf", @@ -308,15 +308,15 @@ def test_given_nrf_service_not_started_when_collect_unit_status_then_status_is_w ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "mongodb://localhost:27017"}, + database_relation.id: {"uris": "mongodb://localhost:27017"}, } self.mock_sdcore_config_webui_url.return_value = "https://webui.url" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == WaitingStatus("Waiting for NRF service to start") @@ -338,17 +338,17 @@ def test_given_database_relation_is_created_and_config_file_is_written_when_coll ) config_mount = scenario.Mount( location="/etc/nrf/", - src=tempdir, + source=tempdir, ) certs_mount = scenario.Mount( location="/support/TLS/", - src=tempdir, + source=tempdir, ) container = scenario.Container( name="nrf", can_connect=True, layers={"nrf": Layer({"services": {"nrf": {}}})}, - service_status={ + service_statuses={ "nrf": ServiceStatus.ACTIVE, }, mounts={ @@ -363,18 +363,18 @@ def test_given_database_relation_is_created_and_config_file_is_written_when_coll ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "mongodb://localhost:27017"}, + database_relation.id: {"uris": "mongodb://localhost:27017"}, } self.mock_sdcore_config_webui_url.return_value = "https://webui.url" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = provider_certificate, private_key with open(f"{tempdir}/nrf.pem", "w") as f: f.write("whatever cert") - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.unit_status == ActiveStatus() @@ -390,7 +390,7 @@ def test_given_no_workload_version_file_when_collect_unit_status_then_workload_v leader=True, ) - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.workload_version == "" @@ -400,7 +400,7 @@ def test_given_workload_version_file_when_container_can_connect_then_workload_ve with tempfile.TemporaryDirectory() as temp_dir: workload_version_mount = scenario.Mount( location="/etc", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -414,6 +414,6 @@ def test_given_workload_version_file_when_container_can_connect_then_workload_ve with open(f"{temp_dir}/workload-version", "w") as f: f.write("1.2.3") - state_out = self.ctx.run("collect_unit_status", state_in) + state_out = self.ctx.run(self.ctx.on.collect_unit_status(), state_in) assert state_out.workload_version == "1.2.3" diff --git a/tests/unit/test_charm_configure.py b/tests/unit/test_charm_configure.py index e2df11c..9001db9 100644 --- a/tests/unit/test_charm_configure.py +++ b/tests/unit/test_charm_configure.py @@ -31,11 +31,11 @@ def test_given_database_info_and_storage_attached_and_certs_stored_when_configur ) config_mount = scenario.Mount( location="/etc/nrf", - src=temp_dir, + source=temp_dir, ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -49,15 +49,15 @@ def test_given_database_info_and_storage_attached_and_certs_stored_when_configur ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "http://dummy"}, + database_relation.id: {"uris": "http://dummy"}, } self.mock_sdcore_config_webui_url.return_value = "some-webui:7890" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) - self.ctx.run(container.pebble_ready_event, state_in) + self.ctx.run(self.ctx.on.pebble_ready(container=container), state_in) with open(f"{temp_dir}/nrfcfg.yaml", "r") as config_file: config_content = config_file.read() @@ -85,11 +85,11 @@ def test_given_content_of_config_file_not_changed_when_configure_then_config_fil ) config_mount = scenario.Mount( location="/etc/nrf", - src=temp_dir, + source=temp_dir, ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -103,11 +103,11 @@ def test_given_content_of_config_file_not_changed_when_configure_then_config_fil ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "http://dummy"}, + database_relation.id: {"uris": "http://dummy"}, } self.mock_sdcore_config_webui_url.return_value = "some-webui:7890" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) with open("tests/unit/expected_config/config.conf", "r") as expected_config_file: @@ -116,7 +116,7 @@ def test_given_content_of_config_file_not_changed_when_configure_then_config_fil config_file.write(expected_content.strip()) config_modification_time = os.stat(temp_dir + "/nrfcfg.yaml").st_mtime - self.ctx.run(container.pebble_ready_event, state_in) + self.ctx.run(self.ctx.on.pebble_ready(container=container), state_in) with open(f"{temp_dir}/nrfcfg.yaml", "r") as config_file: config_content = config_file.read() @@ -145,11 +145,11 @@ def test_given_config_pushed_when_configure_then_pebble_plan_is_applied( ) config_mount = scenario.Mount( location="/etc/nrf", - src=temp_dir, + source=temp_dir, ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -163,17 +163,18 @@ def test_given_config_pushed_when_configure_then_pebble_plan_is_applied( ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "http://dummy"}, + database_relation.id: {"uris": "http://dummy"}, } self.mock_sdcore_config_webui_url.return_value = "some-webui:7890" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) - state_out = self.ctx.run(container.pebble_ready_event, state_in) + state_out = self.ctx.run(self.ctx.on.pebble_ready(container=container), state_in) - assert state_out.containers[0].layers["nrf"] == Layer( + container = state_out.get_container("nrf") + assert container.layers["nrf"] == Layer( { "summary": "nrf layer", "description": "pebble config layer for nrf", @@ -216,11 +217,11 @@ def test_service_starts_running_after_nrf_relation_joined_when_configure_then_nr ) config_mount = scenario.Mount( location="/etc/nrf", - src=temp_dir, + source=temp_dir, ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -239,15 +240,15 @@ def test_service_starts_running_after_nrf_relation_joined_when_configure_then_nr ) self.mock_database_resource_created.return_value = True self.mock_database_relation_data.return_value = { - database_relation.relation_id: {"uris": "http://dummy"}, + database_relation.id: {"uris": "http://dummy"}, } self.mock_sdcore_config_webui_url.return_value = "some-webui:7890" provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) - self.ctx.run(container.pebble_ready_event, state_in) + self.ctx.run(self.ctx.on.pebble_ready(container=container), state_in) self.mock_set_nrf_information_in_all_relations.assert_called_once() @@ -269,11 +270,11 @@ def test_given_certificate_available_when_configure_then_certificate_is_pushed( ) config_mount = scenario.Mount( location="/etc/nrf", - src=temp_dir, + source=temp_dir, ) certs_mount = scenario.Mount( location="/support/TLS", - src=temp_dir, + source=temp_dir, ) container = scenario.Container( name="nrf", @@ -290,11 +291,11 @@ def test_given_certificate_available_when_configure_then_certificate_is_pushed( leader=True, ) provider_certificate, private_key = example_cert_and_key( - tls_relation_id=certificates_relation.relation_id + tls_relation_id=certificates_relation.id ) self.mock_get_assigned_certificate.return_value = (provider_certificate, private_key) - self.ctx.run(container.pebble_ready_event, state_in) + self.ctx.run(self.ctx.on.pebble_ready(container=container), state_in) with open(f"{temp_dir}/nrf.pem", "r") as f: certificate = f.read() diff --git a/tests/unit/test_charm_fiveg_nrf_relation_joined.py b/tests/unit/test_charm_fiveg_nrf_relation_joined.py index 9e3646d..632a9b1 100644 --- a/tests/unit/test_charm_fiveg_nrf_relation_joined.py +++ b/tests/unit/test_charm_fiveg_nrf_relation_joined.py @@ -20,18 +20,19 @@ def test_given_https_nrf_url_and_service_is_running_when_fiveg_nrf_relation_join name="nrf", can_connect=True, layers={"nrf": Layer({"services": {"nrf": {}}})}, - service_status={ + service_statuses={ "nrf": ServiceStatus.ACTIVE, }, ) state_in = scenario.State( containers=[container], + relations=[fiveg_nrf_relation], leader=True, ) - self.ctx.run(fiveg_nrf_relation.joined_event, state_in) + self.ctx.run(self.ctx.on.relation_joined(fiveg_nrf_relation), state_in) self.mock_set_nrf_information.assert_called_with( url="https://sdcore-nrf-k8s:29510", - relation_id=fiveg_nrf_relation.relation_id, + relation_id=fiveg_nrf_relation.id, )