Commit 90109d26 authored by Benedetta Arena's avatar Benedetta Arena
Browse files

redirect consumption operations

parent 0980f2f5
Loading
Loading
Loading
Loading
+56 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that, when one has a redirect registration and an entity on a Context Source, if one queries the Context Broker the query gets forwarded to the Context Source correctly

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          Setup Registration And Start Context Source Mock Server
Test Teardown       Delete Registration And Stop Context Source Mock Server


*** Variables ***
${entity_id_prefix}                     urn:ngsi-ld:Vehicle:
${entity_payload_filename}              vehicle-simple-attributes.json
${registration_id_prefix}               urn:ngsi-ld:Registration:
${registration_payload_file_path}       csourceRegistrations/context-source-registration-vehicle-complete.jsonld


*** Test Cases ***
D011_01_red Query The Context Broker With Type
    [Documentation]    Check that if one queries the Context Broker for type, entity with matching type on a Context Source gets returned
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    additive-inclusive    4_3_6_3    5_7_2
    ${entity_body}=    Load Entity    ${entity_payload_filename}    ${entity_id}
    Set Stub Reply    GET    /broker1/ngsi-ld/v1/entities?type=Vehicle    200    ${entity_body}
    ${response}=    Query Entities    entity_types=Vehicle    context=${ngsild_test_suite_context}

    Check Response Status Code    200    ${response.status_code}
    @{entities_id}=    Create List    ${entity_id}
    Check Response Body Containing Entities URIS set to    ${entities_id}    ${response.json()}


*** Keywords ***
Setup Registration 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}
    ...    mode=redirect
    ...    endpoint=/broker1
    ${response1}=    Create Context Source Registration With Return    ${registration_payload}
    Check Response Status Code    201    ${response1.status_code}
    Start Context Source Mock Server

Delete Registration And Stop Context Source Mock Server
    Delete Context Source Registration    ${registration_id}
    Delete Entity by Id    ${entity_id}
    Stop Context Source Mock Server
+73 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that with redirect registrations, query requests are correctly forwarded to Context Source

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 Template      Setup Registration, Context Source Mock Server And Query The Context Broker With Type
Test Teardown      Delete Registration And Stop Context Source Mock Server


*** Variables ***
${entity_id_prefix}                     urn:ngsi-ld:Vehicle:
${entity_payload_filename}              vehicle-simple-attributes.json
${registration_id_prefix}               urn:ngsi-ld:Registration:
${registration_payload_file_path}       csourceRegistrations/context-source-registration-vehicle-complete.jsonld

*** Test Cases *** 
D011_02_01_red Query The Context Broker With Type with queryEntity
    [Documentation]    Verify that when querying by entity type with a redirect registration that supports queryEntity, the request is forwarded to the Context Source and entities are retrieved correctly
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-redirect    4_3_6_3    5_7_2
    [Template]     Setup Registration, Context Source Mock Server And Query The Context Broker With Type    
    GET    /broker1/ngsi-ld/v1/entities?type=Vehicle

D011_02_02_red Query The Context Broker With Type with queryBatch
    [Documentation]    Verify that when querying by entity type with a redirect registration that supports queryBatch, the request is forwarded to the Context Source and entities are retrieved correctly
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-redirect    4_3_6_3    5_7_2
    [Template]     Setup Registration, Context Source Mock Server And Query The Context Broker With Type
    POST    /broker1/ngsi-ld/v1/entityOperations/query

*** Keywords ***
Setup Registration, Context Source Mock Server And Query The Context Broker With Type
    [Arguments]    ${method}    ${url} 
    ${entity_id}=    Generate Random Vehicle 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}
    ...    mode=redirect
    ...    endpoint=/broker1
    ${response1}=    Create Context Source Registration With Return    ${registration_payload}
    Check Response Status Code    201    ${response1.status_code}
    
    Start Context Source Mock Server
    ${entity_body}=    Load Entity    ${entity_payload_filename}    ${entity_id}
    @{entity_list}=    Create List    ${entity_body}
    Set Stub Reply    ${method}   ${url}   200    ${entity_list}

    @{entities_id}=    Create List    ${entity_id}
    
    IF    '${method}' == 'GET'
        ${response}=    Query Entities    entity_types=Vehicle    context=${ngsild_test_suite_context}
    ELSE IF    '${method}' == 'POST'
        @{entities}=    Create List    ${entity_body}
        ${response}=    Query Entities Via POST
        ...    entities=${entities}
        ...    content_type=${CONTENT_TYPE_LD_JSON}
        ...    accept=${CONTENT_TYPE_JSON}
        ...    context=${ngsild_test_suite_context}
    END

    Check Response Status Code    200    ${response.status_code}
    Check Response Body Containing Entities URIS set to    ${entities_id}    ${response.json()}

Delete Registration And Stop Context Source Mock Server
    Delete Context Source Registration    ${registration_id}
    Stop Context Source Mock Server
 No newline at end of file
+76 −0
Original line number Diff line number Diff line
** Settings ***
Documentation       Verify that when an entity remotely exists on two Context Sources, a retrieval request to the Context Broker is correctly forwarded to the Context Sources and the response contains the identity.

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 Registration And Start Context Source Mock Server
Test Teardown       Delete Created Entity And Registration And Stop Context Source Mock Server

*** Variables ***
${entity_id_prefix}                     urn:ngsi-ld:Vehicle:
${entity_payload_filename}              vehicle-simple-attributes.json
${entity_payload_filename2}             vehicle-simple-attributes-second.json
${registration_id_prefix}               urn:ngsi-ld:Registration:
${registration_payload_file_path}       csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld


*** Test Cases ***
D010_01_red Query Context Broker And Retrieve Entity By Id
    [Documentation]    Check that if one retrieves an entity on the Context Source, entity gets redirected correctly
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-redirect    4_3_6_3    5_7_1
    ${entity_body}=    Load Entity    ${entity_payload_filename}    ${entity_id}    
    ${entity_body2}=   Load Entity    ${entity_payload_filename2}   ${entity_id}
    Set Stub Reply    GET    /broker1/ngsi-ld/v1/entities/${entity_id}   200    ${entity_body}
    Set Stub Reply    GET    /broker2/ngsi-ld/v1/entities/${entity_id}    200    ${entity_body2}

    ${response_query}=    Retrieve Entity by Id    ${entity_id}    context=${ngsild_test_suite_context}
    Check Response Status Code    200    ${response_query.status_code}
    
    ${stub_count}=    Get Stub Count    GET    /broker1/ngsi-ld/v1/entities/${entity_id}
    Should Be True    ${stub_count} > 0
    ${stub_count}=    Get Stub Count    GET    /broker2/ngsi-ld/v1/entities/${entity_id}
    Should Be True    ${stub_count} > 0

    Should Have Value In Json    ${response_query.json()}    $.isParked
    Should Have Value In Json    ${response_query.json()}    $.isParked2

*** Keywords ***
Setup Registration 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=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_payload2}=    Prepare Context Source Registration From File
    ...    ${registration_id2}
    ...    ${registration_payload_file_path}
    ...    entity_id=${entity_id}
    ...    mode=redirect
    ...    endpoint=/broker2
    ${response}=    Create Context Source Registration With Return    ${registration_payload2}
    Check Response Status Code    201    ${response.status_code}

    Start Context Source Mock Server

Delete Created Entity And Registration And Stop Context Source Mock Server
    Delete Context Source Registration    ${registration_id}
    Delete Context Source Registration    ${registration_id2}
    Delete Entity By Id    ${entity_id}
    Stop Context Source Mock Server
 No newline at end of file
+73 −0
Original line number Diff line number Diff line
* Settings ***
Documentation       Check that when retrieving an entity locally, the Context Broker does not forward the request to the Context Sources and raises an error. 

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 Registration And Start Context Source Mock Server
Test Teardown       Delete Created Entity And Registration And Stop Context Source Mock Server

*** Variables ***
${entity_id_prefix}                     urn:ngsi-ld:Vehicle:
${entity_payload_filename}              vehicle-simple-attributes.json
${entity_payload_filename2}             vehicle-simple-attributes-second.json
${registration_id_prefix}               urn:ngsi-ld:Registration:
${registration_payload_file_path}       csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld


*** Test Cases ***
D010_02_red Query Context Broker And Retrieve Entity By Id
    [Documentation]    Check that when retrieving an entity locally, the Context Broker does not forward the request to the Context Sources and raises an error. 
    [Tags]    since_v1.6.1    dist-ops    4_3_3    cf_06    proxy-redirect    4_3_6_3    5_7_1
    ${entity_body}=    Load Entity    ${entity_payload_filename}    ${entity_id}    
    ${entity_body2}=   Load Entity    ${entity_payload_filename2}   ${entity_id}
    Set Stub Reply    GET    /broker1/ngsi-ld/v1/entities/${entity_id}   200    ${entity_body}
    Set Stub Reply    GET    /broker2/ngsi-ld/v1/entities/${entity_id}    200    ${entity_body2}

    ${response_query}=    Retrieve Entity by Id    ${entity_id}    context=${ngsild_test_suite_context}    local=${true}
    Check Response Status Code    404    ${response_query.status_code}

    ${stub_count}=    Get Stub Count    GET    /broker1/ngsi-ld/v1/entities/${entity_id}
    Should Be True    ${stub_count} == 0
    ${stub_count}=    Get Stub Count    GET    /broker2/ngsi-ld/v1/entities/${entity_id}
    Should Be True    ${stub_count} == 0

*** Keywords ***
Setup Registration 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=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_payload2}=    Prepare Context Source Registration From File
    ...    ${registration_id2}
    ...    ${registration_payload_file_path}
    ...    entity_id=${entity_id}
    ...    mode=redirect
    ...    endpoint=/broker2
    ${response}=    Create Context Source Registration With Return    ${registration_payload2}
    Check Response Status Code    201    ${response.status_code}

    Start Context Source Mock Server

Delete Created Entity And Registration And Stop Context Source Mock Server
    Delete Context Source Registration    ${registration_id}
    Delete Context Source Registration    ${registration_id2}
    Delete Entity By Id    ${entity_id}
    Stop Context Source Mock Server
 No newline at end of file
+12 −0
Original line number Diff line number Diff line
{
    "id": "urn:ngsi-ld:Vehicle:randomUUID",
    "type": "Vehicle",
    "speed": {
        "type": "Property",
        "value": 56,
        "source": {
            "type": "Property",
            "value": "Speedometer"
        }
    }
}  
 No newline at end of file