From ca09bd7cc48db890d27709d0da582076d0f22bc4 Mon Sep 17 00:00:00 2001 From: Steven Bal Date: Tue, 29 Oct 2024 14:40:14 +0100 Subject: [PATCH] :white_check_mark: [#4398] Fix VCR issue in Objects API ownership tests --- ...ests.test_user_is_not_owner_of_object.yaml | 6 +- ...torTests.test_user_is_owner_of_object.yaml | 6 +- .../setUpTestData.yaml | 58 +++++++++++++++++++ .../objects_api/tests/test_validators.py | 30 ++++++---- 4 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/setUpTestData.yaml diff --git a/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_not_owner_of_object.yaml b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_not_owner_of_object.yaml index 2b4cc25e02..332c63e9ec 100644 --- a/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_not_owner_of_object.yaml +++ b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_not_owner_of_object.yaml @@ -15,10 +15,10 @@ interactions: User-Agent: - python-requests/2.32.2 method: GET - uri: http://localhost:8002/api/v2/objects/5015053e-1916-42b5-9119-ede73f5c0694 + uri: http://localhost:8002/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646 response: body: - string: '{"url":"http://objects-web:8000/api/v2/objects/5015053e-1916-42b5-9119-ede73f5c0694","uuid":"5015053e-1916-42b5-9119-ede73f5c0694","type":"http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e","record":{"index":1,"typeVersion":1,"data":{"bsn":"111222333","foo":"bar"},"geometry":null,"startAt":"2024-10-29","endAt":null,"registrationAt":"2024-10-29","correctionFor":null,"correctedBy":null}}' + string: '{"url":"http://objects-web:8000/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646","uuid":"d36124c0-752e-48a7-a724-bf3241a2e646","type":"http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e","record":{"index":1,"typeVersion":1,"data":{"bsn":"111222333","foo":"bar"},"geometry":null,"startAt":"2024-10-29","endAt":null,"registrationAt":"2024-10-29","correctionFor":null,"correctedBy":null}}' headers: Allow: - GET, PUT, PATCH, DELETE, HEAD, OPTIONS @@ -33,7 +33,7 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Tue, 29 Oct 2024 11:41:43 GMT + - Tue, 29 Oct 2024 13:38:52 GMT Referrer-Policy: - same-origin Server: diff --git a/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_owner_of_object.yaml b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_owner_of_object.yaml index 2b4cc25e02..332c63e9ec 100644 --- a/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_owner_of_object.yaml +++ b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/ObjectsAPIInitialDataOwnershipValidatorTests.test_user_is_owner_of_object.yaml @@ -15,10 +15,10 @@ interactions: User-Agent: - python-requests/2.32.2 method: GET - uri: http://localhost:8002/api/v2/objects/5015053e-1916-42b5-9119-ede73f5c0694 + uri: http://localhost:8002/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646 response: body: - string: '{"url":"http://objects-web:8000/api/v2/objects/5015053e-1916-42b5-9119-ede73f5c0694","uuid":"5015053e-1916-42b5-9119-ede73f5c0694","type":"http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e","record":{"index":1,"typeVersion":1,"data":{"bsn":"111222333","foo":"bar"},"geometry":null,"startAt":"2024-10-29","endAt":null,"registrationAt":"2024-10-29","correctionFor":null,"correctedBy":null}}' + string: '{"url":"http://objects-web:8000/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646","uuid":"d36124c0-752e-48a7-a724-bf3241a2e646","type":"http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e","record":{"index":1,"typeVersion":1,"data":{"bsn":"111222333","foo":"bar"},"geometry":null,"startAt":"2024-10-29","endAt":null,"registrationAt":"2024-10-29","correctionFor":null,"correctedBy":null}}' headers: Allow: - GET, PUT, PATCH, DELETE, HEAD, OPTIONS @@ -33,7 +33,7 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Tue, 29 Oct 2024 11:41:43 GMT + - Tue, 29 Oct 2024 13:38:52 GMT Referrer-Policy: - same-origin Server: diff --git a/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/setUpTestData.yaml b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/setUpTestData.yaml new file mode 100644 index 0000000000..4b65c9a456 --- /dev/null +++ b/src/openforms/contrib/objects_api/tests/files/vcr_cassettes/ObjectsAPIInitialDataOwnershipValidatorTests/setUpTestData.yaml @@ -0,0 +1,58 @@ +interactions: +- request: + body: '{"type": "http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e", + "record": {"typeVersion": 1, "data": {"bsn": "111222333", "foo": "bar"}, "startAt": + "2024-10-29"}}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - Token 7657474c3d75f56ae0abd0d1bf7994b09964dca9 + Connection: + - keep-alive + Content-Crs: + - EPSG:4326 + Content-Length: + - '194' + Content-Type: + - application/json + User-Agent: + - python-requests/2.32.2 + method: POST + uri: http://localhost:8002/api/v2/objects + response: + body: + string: '{"url":"http://objects-web:8000/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646","uuid":"d36124c0-752e-48a7-a724-bf3241a2e646","type":"http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e","record":{"index":1,"typeVersion":1,"data":{"bsn":"111222333","foo":"bar"},"geometry":null,"startAt":"2024-10-29","endAt":null,"registrationAt":"2024-10-29","correctionFor":null,"correctedBy":null}}' + headers: + Allow: + - GET, POST, HEAD, OPTIONS + Connection: + - keep-alive + Content-Crs: + - EPSG:4326 + Content-Length: + - '422' + Content-Type: + - application/json + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Tue, 29 Oct 2024 13:38:51 GMT + Location: + - http://localhost:8002/api/v2/objects/d36124c0-752e-48a7-a724-bf3241a2e646 + Referrer-Policy: + - same-origin + Server: + - nginx/1.27.0 + Vary: + - origin + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + status: + code: 201 + message: Created +version: 1 diff --git a/src/openforms/contrib/objects_api/tests/test_validators.py b/src/openforms/contrib/objects_api/tests/test_validators.py index 992cdaedc1..62aaf230d4 100644 --- a/src/openforms/contrib/objects_api/tests/test_validators.py +++ b/src/openforms/contrib/objects_api/tests/test_validators.py @@ -5,6 +5,7 @@ from django.test import TestCase, override_settings, tag from requests.exceptions import RequestException +from vcr.config import VCR from openforms.authentication.service import AuthAttribute from openforms.contrib.objects_api.clients import get_objects_client @@ -34,16 +35,25 @@ def setUpTestData(cls): cls.objects_api_group_used = ObjectsAPIGroupConfigFactory.create( for_test_docker_compose=True ) - # TODO fix tests failing after first run - with get_objects_client(cls.objects_api_group_used) as client: - object = client.create_object( - record_data=prepare_data_for_registration( - data={"bsn": "111222333", "foo": "bar"}, - objecttype_version=1, - ), - objecttype_url="http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e", - ) - cls.object_ref = object["uuid"] + + # Explicitly define a cassette for Object creation, because running this in + # setUpTestData doesn't record cassettes by default + cassette_path = Path( + cls.VCR_TEST_FILES + / "vcr_cassettes" + / cls.__qualname__ + / "setUpTestData.yaml" + ) + with VCR().use_cassette(cassette_path): + with get_objects_client(cls.objects_api_group_used) as client: + object = client.create_object( + record_data=prepare_data_for_registration( + data={"bsn": "111222333", "foo": "bar"}, + objecttype_version=1, + ), + objecttype_url="http://objecttypes-web:8000/api/v2/objecttypes/8faed0fa-7864-4409-aa6d-533a37616a9e", + ) + cls.object_ref = object["uuid"] @tag("gh-4398") def test_user_is_owner_of_object(self):