Commit e93693ec authored by Benedetta Arena's avatar Benedetta Arena
Browse files

feat: update test cases for loop detection to verify Via header presence

parent fc04ea9f
Loading
Loading
Loading
Loading
+29 −35
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that the broker prevents loop when forwarding operations through Context Source Registrations
Documentation       Verify that a loop is detected when the Via header contains the broker's identifier.

Resource            ${EXECDIR}/resources/ApiUtils/Common.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
@@ -10,46 +10,40 @@ Resource ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource
Resource            ${EXECDIR}/resources/MockServerUtils.resource

Test Setup          Create Entity And Registration On The Context Broker And Start Context Source Mock Server
Test Teardown       Delete Registrations And Stop Context Source Mock Server
Test Teardown       Delete Initial Entity
Test Template       Create Entity Scenarios

*** Variables ***
${entity_payload_filename}           vehicle-simple-attributes-second-different.jsonld
${registration_payload_file_path}    csourceRegistrations/context-source-registration-vehicle-speed-with-redirection-ops.jsonld

*** Test Cases ***
D018_01 Loop Detection In Context Source Registrations
    [Documentation]    Verify that the broker prevents loop when forwarding operations through Context Source Registrations
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-exclusive    5_6_6    6_3_18

    ${response}=    Delete Entity    ${entity_id}    context=${ngsild_test_suite_context}

    ${response}=    Get Request Headers
    ${actual_payload}=    Get From Dictionary    ${response}    Via
    Dictionary Should Contain Key    ${actual_payload}    ${expected_payload}
    Reply By    508
*** Test Cases ***    FILENAME
D018_01 Loop Detection With Header Via
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    5_6_6    6_3_18
    vehicle-simple-attributes.jsonld


*** Keywords ***
Create Entity And Registration On The Context Broker And Start Context Source Mock Server
Create Entity Scenarios
    [Documentation]    Verify that a loop is detected when the Via header contains the broker's identifier.
    [Arguments]    ${filename}

    ${entity_id}=    Generate Random Vehicle Entity Id
    Set Suite Variable    ${entity_id}
    ${response}=    Create Entity    ${entity_payload_filename}    ${entity_id}
    Set Test Variable    ${entity_id}
    ${response}=    Create Entity    ${filename}    ${entity_id}    local=true
    Check Response Status Code    201    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${expected_payload}=    Get From Dictionary    ${response}    Via
    Set Suite Variable    ${expected_payload}

    ${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}
    ...    mode=exclusive
    ${response}=    Create Context Source Registration With Return    ${registration_payload}
    Check Response Status Code    201    ${response.status_code}
    ${payload}=    Convert To Dictionary    ${response}
    ${expected_payload}=    Get From Dictionary    ${payload}    Via

    ${response}=   Delete Entity    ${entity_id}    local=true

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    ${actual_payload}=    Get From Dictionary    ${payload}    Via

    Should Be Equal    ${actual_payload}    ${expected_payload}
    Reply By    508


Delete Registrations And Stop Context Source Mock Server
    Delete Entity    ${entity_id}
    Delete Context Source Registration    ${registration_id}
Delete Initial Entity
    Delete Entity    ${entity_id}    local=true
+11 −27
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that the broker prevents loop when forwarding operations through Context Source Registrations
Documentation       Verify that the request contains the VIA when forwarding operations through Context Source Registrations

Resource            ${EXECDIR}/resources/ApiUtils/Common.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
@@ -14,29 +14,22 @@ Test Setup Create Entity And Registration On The Context Broker And Sta
Test Teardown       Delete Registrations And Stop Context Source Mock Server

*** Variables ***
${entity_payload_filename}           vehicle-simple-attributes-second-different.jsonld
${registration_payload_file_path}    csourceRegistrations/context-source-registration-vehicle-speed-with-redirection-ops.jsonld
${registration_inclusive_payload_file_path}    csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld
${entity_payload_filename}           vehicle-simple-attributes.jsonld
${registration_payload_file_path}    csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld

*** Test Cases ***
D018_02 Loop Detection In Context Source Registrations
    [Documentation]    Verify that the broker prevents loop when Via header is already presents
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-exclusive    additive-inclusive    5_6_6    6_3_18
    [Documentation]    Verify that the request contains the VIA when forwarding operations through Context Source Registrations
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

    Set Stub Reply    DELETE    /broker1/ngsi-ld/v1/entities/${entity_id}    204
    ${response}=    Delete Entity    ${entity_id}    context=${ngsild_test_suite_context}
    ${response}=    Delete Entity    ${entity_id}
    Check Response Status Code    204    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${expected_payload}=    Get From Dictionary    ${response}    Via

    ${stub_count}=    Get Stub Count    DELETE    /ngsi-ld/v1/entities/${entity_id}
    Should Be Equal    ${stub_count}    0

    ${response}=    Get Request Headers
    ${actual_payload}=    Get From Dictionary    ${response}    Via
    Dictionary Should Contain Key    ${actual_payload}    ${expected_payload}
    Reply By    508
    ${payload}=    Convert To Dictionary    ${response}
    Dictionary Should Contain Key    ${payload}    Via

*** Keywords ***
Create Entity And Registration On The Context Broker And Start Context Source Mock Server
@@ -50,23 +43,14 @@ Create Entity And Registration On The Context Broker And Start Context Source Mo
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id}
    ...    ${registration_payload_file_path}
    ...    mode=exclusive
    ...    entity_id=${entity_id}
    ...    mode=inclusive
    ...    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_inclusive_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id2}
    ...    ${registration_inclusive_payload_file_path}
    ...    mode=inclusive
    ${response}=    Create Context Source Registration With Return    ${registration_inclusive_payload}
    Check Response Status Code    201    ${response.status_code}
    Start Context Source Mock Server

Delete Registrations And Stop Context Source Mock Server
    Delete Entity    ${entity_id}
    Delete Context Source Registration    ${registration_id}
    Delete Context Source Registration    ${registration_id2}
    Stop Context Source Mock Server