From 6f0dcdedcc5bb0ac7eae18b46b2e7ad72e3c65e1 Mon Sep 17 00:00:00 2001 From: Marco Cavalli Date: Thu, 18 Sep 2025 09:14:10 +0200 Subject: [PATCH 1/4] feat: add provision tests for redirect regs --- .../Entities/CreateEntity/D001_01_red.robot | 77 +++++++++++++++++ .../Entities/DeleteEntity/D002_01_red.robot | 85 +++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot create mode 100644 TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot new file mode 100644 index 00000000..5acdfaa7 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot @@ -0,0 +1,77 @@ +*** Settings *** +Documentation Verify that when two redirect registrations are configured on a Context Broker, it is possible to create entities in both Context Sources, but not directly in the Context Broker + +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + +Test Setup Setup Entity Id And Registrations And Start Context Source Mock Server +Test Teardown Delete Registrations And Stop Context Source Mock Server + + +*** Variables *** +${entity_id_prefix} urn:ngsi-ld:Vehicle: +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_id_prefix} urn:ngsi-ld:Registration: +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld + + +*** Test Cases *** +D001_01_red Create Entity On Both Context Sources + [Documentation] Check that if one requests the Context Broker to create an entity that matches two redirect registrations, this is created only on the Context Sources + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxied-redirect 4_3_6_3 5_6_1 + Set Stub Reply POST /broker1/ngsi-ld/v1/entities/${entity_id} 201 + Set Stub Reply POST /broker2/ngsi-ld/v1/entities/${entity_id2} 201 + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + ${response}= Create Entity ${entity_payload_filename} ${entity_id2} + Check Response Status Code 201 ${response.status_code} + + ${response}= Retrieve Entity By Id ${entity_id} context=${ngsild_test_suite_context} + Check Response Status Code 200 ${response.status_code} + ${response}= Retrieve Entity By Id ${entity_id2} context=${ngsild_test_suite_context} + Check Response Status Code 200 ${response.status_code} + + #the test is correct, it should return 200 as both creations are successful. it returns 422 due to the scorpio implementation + +*** Keywords *** +Setup Entity Id And Registrations And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + ${entity_id2}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id2} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + ${registration_id2}= Generate Random CSR Id + Set Suite Variable ${registration_id2} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id2} + ... ${registration_payload_file_path} + ... entity_id=${entity_id2} + ... mode=redirect + ... endpoint=/broker2 + ${response2}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response2.status_code} + + Start Context Source Mock Server +Delete Registrations And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Context Source Registration ${registration_id2} + Delete Entity By Id ${entity_id} + Delete Entity By Id ${entity_id2} + Stop Context Source Mock Server \ No newline at end of file diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot new file mode 100644 index 00000000..163ecb15 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot @@ -0,0 +1,85 @@ +*** Settings *** +Documentation Verify that when two redirect registrations are configured on a Context Broker, it is possible to delete entities in both Context Sources + +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + +Test Setup Setup Entity Id And Registrations And Start Context Source Mock Server +Test Teardown Delete Registrations And Stop Context Source Mock Server + + +*** Variables *** +${entity_id_prefix} urn:ngsi-ld:Vehicle: +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_id_prefix} urn:ngsi-ld:Registration: +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld + + +*** Test Cases *** +D002_01_red Delete Entities On Both Context Sources + [Documentation] Verify that, when one has a redirect registration on a Context Broker, one is able to delete entities on both Context Sources + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxied-redirect 4_3_6_3 5_6_6 + + Set Stub Reply POST /broker1/ngsi-ld/v1/entities/${entity_id} 201 + Set Stub Reply POST /broker2/ngsi-ld/v1/entities/${entity_id2} 201 + + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + ${response}= Create Entity ${entity_payload_filename} ${entity_id2} + Check Response Status Code 201 ${response.status_code} + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities/${entity_id} 204 + Set Stub Reply DELETE /broker2/ngsi-ld/v1/entities/${entity_id2} 204 + + ${response}= Delete Entity by Id ${entity_id} + Check Response Status Code 204 ${response.status_code} + ${response}= Delete Entity by Id ${entity_id2} + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities/${entity_id} + Should Be True ${stub_count} > 0 + ${stub_count}= Get Stub Count DELETE /broker2/ngsi-ld/v1/entities/${entity_id2} + Should Be True ${stub_count} > 0 + + #the test is correct, it should return 204 as both deletions are successful. it returns 422 due to the scorpio implementation + +*** Keywords *** +Setup Entity Id And Registrations And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + ${entity_id2}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id2} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... entity_id=${entity_id} + ... mode=redirect + ... endpoint=/broker1 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + ${registration_id2}= Generate Random CSR Id + Set Suite Variable ${registration_id2} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id2} + ... ${registration_payload_file_path} + ... entity_id=${entity_id2} + ... mode=redirect + ... endpoint=/broker2 + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + Start Context Source Mock Server + +Delete Registrations And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Delete Context Source Registration ${registration_id2} + Stop Context Source Mock Server \ No newline at end of file -- GitLab From df4b498726a4a61c15d6719771bdce015477febc Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Tue, 23 Sep 2025 17:31:53 +0200 Subject: [PATCH 2/4] fix: create test does not return 422 error --- .../Entities/CreateEntity/D001_01_red.robot | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot index 5acdfaa7..eadbc496 100644 --- a/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/CreateEntity/D001_01_red.robot @@ -24,20 +24,18 @@ ${registration_payload_file_path} csourceRegistrations/context-source-regi D001_01_red Create Entity On Both Context Sources [Documentation] Check that if one requests the Context Broker to create an entity that matches two redirect registrations, this is created only on the Context Sources [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxied-redirect 4_3_6_3 5_6_1 - Set Stub Reply POST /broker1/ngsi-ld/v1/entities/${entity_id} 201 - Set Stub Reply POST /broker2/ngsi-ld/v1/entities/${entity_id2} 201 + Set Stub Reply POST /broker1/ngsi-ld/v1/entities 201 + Set Stub Reply POST /broker2/ngsi-ld/v1/entities 201 ${response}= Create Entity ${entity_payload_filename} ${entity_id} Check Response Status Code 201 ${response.status_code} + ${stub_count}= Get Stub Count POST /broker1/ngsi-ld/v1/entities + Should Be True ${stub_count} > 0 + ${response}= Create Entity ${entity_payload_filename} ${entity_id2} Check Response Status Code 201 ${response.status_code} - - ${response}= Retrieve Entity By Id ${entity_id} context=${ngsild_test_suite_context} - Check Response Status Code 200 ${response.status_code} - ${response}= Retrieve Entity By Id ${entity_id2} context=${ngsild_test_suite_context} - Check Response Status Code 200 ${response.status_code} - - #the test is correct, it should return 200 as both creations are successful. it returns 422 due to the scorpio implementation + ${stub_count}= Get Stub Count POST /broker2/ngsi-ld/v1/entities + Should Be True ${stub_count} > 0 *** Keywords *** Setup Entity Id And Registrations And Start Context Source Mock Server -- GitLab From 3718c621d9430c1567e4373eaec96cdf93069e8a Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Thu, 25 Sep 2025 10:19:06 +0200 Subject: [PATCH 3/4] fix: remove comment --- .../Provision/Entities/DeleteEntity/D002_01_red.robot | 2 -- 1 file changed, 2 deletions(-) diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot index 163ecb15..4584d07f 100644 --- a/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/DeleteEntity/D002_01_red.robot @@ -46,8 +46,6 @@ D002_01_red Delete Entities On Both Context Sources ${stub_count}= Get Stub Count DELETE /broker2/ngsi-ld/v1/entities/${entity_id2} Should Be True ${stub_count} > 0 - #the test is correct, it should return 204 as both deletions are successful. it returns 422 due to the scorpio implementation - *** Keywords *** Setup Entity Id And Registrations And Start Context Source Mock Server ${entity_id}= Generate Random Vehicle Entity Id -- GitLab From a6c30827c53554fb6d9fcc29ebcff9a377c2d5a2 Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Thu, 25 Sep 2025 10:22:09 +0200 Subject: [PATCH 4/4] Merge remote-tracking branch 'origin/develop' --- .../Provision/Entities/CreateEntity/001_02.robot | 4 ++-- .../SubscriptionNotificationBehaviour/046_21_02.robot | 2 +- resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/TP/NGSI-LD/ContextInformation/Provision/Entities/CreateEntity/001_02.robot b/TP/NGSI-LD/ContextInformation/Provision/Entities/CreateEntity/001_02.robot index a9d3a691..47a71624 100644 --- a/TP/NGSI-LD/ContextInformation/Provision/Entities/CreateEntity/001_02.robot +++ b/TP/NGSI-LD/ContextInformation/Provision/Entities/CreateEntity/001_02.robot @@ -17,9 +17,9 @@ Test Template Create Entity With Invalid Request Scenarios 001_02_03 EntityWithNoContext [Tags] e-create 5_6_1 building-minimal.json ${ERROR_TYPE_BAD_REQUEST_DATA} -001_02_04 EntityWithNoContext +001_02_04 EntityWithInvalidType [Tags] e-create 5_6_1 - invalid-type.jsonld ${ERROR_TYPE_INVALID_REQUEST} + invalid-type.jsonld ${ERROR_TYPE_BAD_REQUEST_DATA} *** Keywords *** diff --git a/TP/NGSI-LD/ContextInformation/Subscription/SubscriptionNotificationBehaviour/046_21_02.robot b/TP/NGSI-LD/ContextInformation/Subscription/SubscriptionNotificationBehaviour/046_21_02.robot index acd4e36c..6ff061b9 100644 --- a/TP/NGSI-LD/ContextInformation/Subscription/SubscriptionNotificationBehaviour/046_21_02.robot +++ b/TP/NGSI-LD/ContextInformation/Subscription/SubscriptionNotificationBehaviour/046_21_02.robot @@ -31,7 +31,7 @@ ${building_filename}= building-location-attribute.jsonld Should be Equal ${subscription_id} ${notification}[subscriptionId] Length Should Be ${notification}[data] ${1} ${notified_entity}= Set Variable ${notification}[data][0] - Length Should Be ${notified_entity} ${4} + Length Should Be ${notified_entity} ${5} Should be Equal ${entity_id} ${notified_entity}[id] Should Have Value In Json ... json_object=${notified_entity} diff --git a/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld b/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld index 88d10bcb..ba572931 100644 --- a/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld +++ b/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld @@ -1,6 +1,6 @@ { "@context": [ "https://forge.etsi.org/rep/cim/ngsi-ld-test-suite/-/raw/develop/resources/jsonld-contexts/ngsi-ld-test-suite.jsonld", - "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.6.jsonld" + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.8.jsonld" ] } -- GitLab