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

Merge branch 'develop' into 86-add-interoperability-test-cases

parents 02f8e8b4 68869375
Loading
Loading
Loading
Loading
+56 −0
Original line number Diff line number Diff line
*** Settings ***
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
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource
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

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

*** Test Cases ***
D018_01 Loop Detection With Via Header
    [Documentation]    Verify that a loop is detected when the Via header contains the broker's identifier.
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    5_6_6    6_3_18

    ${response}=    Create Entity    ${entity_payload_filename}    ${entity_id}
    Check Response Status Code    201    ${response.status_code}

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

    ${response}=    Delete Entity    ${entity_id}    via=${expected_via_header}
    Check Response Status Code    508    ${response.status_code}

*** Keywords ***
Create Entity And Registration On The Context Broker And Start Context Source Mock Server
    ${entity_id}=    Generate Random Vehicle Entity Id
    Set Test Variable    ${entity_id}

    ${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=inclusive
    ${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 Entity    ${entity_id}
    Delete Context Source Registration    ${registration_id}
    Stop Context Source Mock Server
+123 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check Via Header Forwarding To Context Source across multiple NGSI-LD endpoints

Resource            ${EXECDIR}/resources/ApiUtils/Common.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource
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

*** Variables ***
${first_entity_payload_filename}     vehicle-simple-attributes.jsonld
${second_entity_payload_filename}    vehicle-simple-attributes-second-different.jsonld
${third_entity_payload_filename}     vehicle-simple-attributes-second.json
${brandname_payload_filename}        vehicle-brandname-complete-fragment.jsonld
${entity_pattern}                    urn:ngsi-ld:Vehicle:*
${registration_payload_file_path}    csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld

*** Test Cases ***
D018_02_01 Check Post Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the POST Via header when forwarding operations to the Context Source
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

    Set Stub Reply    POST    /broker1/ngsi-ld/v1/entities    201
    ${response}=    Create Entity    ${second_entity_payload_filename}    ${entity_id2}
    Check Response Status Code    201    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    Dictionary Should Contain Key    ${payload}    Via

D018_02_02 Check Update Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the PATCH Via header when forwarding operations to the Context Source
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

    Set Stub Reply    PATCH    /broker1/ngsi-ld/v1/entities/${entity_id}/attrs/    204
    ${response}=    Update Entity Attributes
    ...    ${entity_id}
    ...    ${brandname_payload_filename}
    ...    ${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    204    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    Dictionary Should Contain Key    ${payload}    Via

D018_02_03 Check Delete Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the DELETE Via header when forwarding operations to the Context Source
    [Tags]    since_v1.8.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}
    Check Response Status Code    204    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    Dictionary Should Contain Key    ${payload}    Via

D018_02_04 Check Put Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the PUT Via header when forwarding operations to the Context Source
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

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

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    Dictionary Should Contain Key    ${payload}    Via

D018_02_05 Check Get Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the GET Via header when forwarding operations to the Context Source
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

    Set Stub Reply    GET    /broker1/ngsi-ld/v1/entities/${entity_id}    200
    ${response}=    Retrieve Entity    ${entity_id}
    Check Response Status Code    200    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${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
    ${entity_id}=    Generate Random Vehicle Entity Id
    Set Suite Variable    ${entity_id}
    ${entity_id2}=    Generate Random Vehicle Entity Id
    Set Suite Variable    ${entity_id2}
    ${response}=    Create Entity    ${first_entity_payload_filename}    ${entity_id}
    Check Response Status Code    201    ${response.status_code}

    ${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_pattern=${entity_pattern}
    ...    mode=inclusive
    ...    endpoint=/broker1
    ${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 Entity    ${entity_id}
    Delete Entity    ${entity_id2}
    Delete Context Source Registration    ${registration_id}
    Stop Context Source Mock Server
+63 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that the request contains both the Via header from the Context Broker and the Via from the Context Source

Resource            ${EXECDIR}/resources/ApiUtils/Common.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource
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

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

*** Test Cases ***
D018_03 Check Via Header Forwarding To Context Source
    [Documentation]    Verify that the request contains the Via header from both the Context Broker and the Context Source
    [Tags]    since_v1.8.1    dist-ops    4_3_3    cf_06    additive-inclusive    5_6_6    6_3_18

    ${response}=    Create Entity    ${entity_payload_filename}    ${entity_id}
    Check Response Status Code    201    ${response.status_code}

    Wait For Request
    ${response}=    Get Request Headers
    ${payload}=    Convert To Dictionary    ${response}
    ${create_via_header}=    Get From Dictionary    ${payload}    Via
    Set Suite Variable    ${create_via_header}

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

    Wait For Request
    ${response}=    Get Request Headers
    ${delete_via_header}=    Convert To Dictionary    ${response}
    Should Contain    ${delete_via_header}[Via]\[value]    ${create_via_header}

*** Keywords ***
Create Entity And Registration On The Context Broker And Start Context Source Mock Server
    ${entity_id}=    Generate Random Vehicle Entity Id
    Set Suite Variable    ${entity_id}

    ${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=inclusive
    ...    endpoint=/broker1
    ${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}
    Stop Context Source Mock Server
+5 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ Library RequestsLibrary
Library         OperatingSystem
Library         Collections
Library         JSONLibrary
Library         HttpCtrl.Server
Resource        ${EXECDIR}/resources/ApiUtils/Common.resource
Resource        ${EXECDIR}/resources/ApiUtils/TemporalContextInformationProvision.resource
Resource        ${EXECDIR}/resources/JsonUtils.resource
@@ -271,13 +272,16 @@ Delete Entity Attributes

Delete Entity
    [Tags]    actor_context-producer
    [Arguments]    ${id}    ${local}=${EMPTY}    ${broker_url}=${EMPTY}
    [Arguments]    ${id}    ${local}=${EMPTY}    ${broker_url}=${EMPTY}    ${via}=${EMPTY}
    &{params}=    Create Dictionary
    IF    '${local}'!=''    Set To Dictionary    ${params}    local=${local}
    ${final_url}=    Set Variable If    '${broker_url}' != ''    ${broker_url}    ${url}
    &{headers}=    Create Dictionary    
    IF    '${via}'!=''    Set To Dictionary    ${headers}    Via    ${via}    
    ${response}=    DELETE
    ...    url=${final_url}/${ENTITIES_ENDPOINT_PATH}${id}
    ...    params=${params}
    ...    headers=${headers}
    ...    expected_status=any
    IF    ${delete_temporal_on_core_delete}
        Delete Temporal Representation Of Entity    ${id}