Commit ccbbd20a authored by Benoit Orihuela's avatar Benoit Orihuela
Browse files

feat: add TCs for Linked Entity Retrieval - Retrieve Entity / Query Entities

parent 2a17e3b1
Loading
Loading
Loading
Loading
+94 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check that entities can be queried with a linked entity in different join types and representations

Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Create Initial Entities And Linked Entities
Test Teardown       Delete Created Entities And Linked Entities
Test Template       Query Entities With Joins And Representations


*** Variables ***
${building_id_prefix}=          urn:ngsi-ld:Building:
${city_id_prefix}=              urn:ngsi-ld:City:
${linking_entity_filename}=     building-relationship.jsonld
${linked_entity_filename}=      city-minimal.jsonld


*** Test Cases ***    JOIN    OPTIONS    EXPECTATION_FILENAME
019_13_01 Query Inline Normalized
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    inline    ${EMPTY}    linked-entity-retrieval/buildings-one-level-inline-019-13.json
019_13_02 Query Flat Normalized
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    flat    ${EMPTY}    linked-entity-retrieval/buildings-one-level-flat-019-13.json
019_13_03 Query Inline Simplified
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    inline    keyValues    linked-entity-retrieval/buildings-one-level-inline-simplified-019-13.json
019_13_04 Query Flat Simplified
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    flat    keyValues    linked-entity-retrieval/buildings-one-level-flat-simplified-019-13.json


*** Keywords ***
Query Entities With Joins And Representations
    [Documentation]    Check that entities can be queried with a linked entity in different join types and representations
    [Arguments]    ${join}    ${options}    ${expectation_filename}

    ${response}=    Query Entities
    ...    entity_types=Building
    ...    options=${options}
    ...    join=${join}
    ...    joinLevel=1
    ...    context=${ngsild_test_suite_context}

    Check Response Status Code    200    ${response.status_code}
    Check Response Body Content
    ...    expectation_filename=${expectation_filename}
    ...    response_body=${response.json()}

Create Initial Entities And Linked Entities
    ${first_entity_id}=    Catenate    ${building_id_prefix}019-13-1
    ${first_linked_entity_id}=    Catenate    ${city_id_prefix}019-13-1
    Set Suite Variable    ${first_entity_id}
    Set Suite Variable    ${first_linked_entity_id}
    ${create_response1}=    Create Linking Entity
    ...    linking_entity_id=${first_entity_id}
    ...    linked_entity_id=${first_linked_entity_id}
    ${create_response2}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${first_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response2.status_code}

    ${second_entity_id}=    Catenate    ${building_id_prefix}019-13-2
    ${second_linked_entity_id}=    Catenate    ${city_id_prefix}019-13-2
    Set Suite Variable    ${second_entity_id}
    Set Suite Variable    ${second_linked_entity_id}
    ${create_response3}=    Create Linking Entity
    ...    linking_entity_id=${second_entity_id}
    ...    linked_entity_id=${second_linked_entity_id}
    ${create_response4}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${second_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response4.status_code}

Delete Created Entities And Linked Entities
    Delete Entity by Id    ${first_entity_id}
    Delete Entity by Id    ${first_linked_entity_id}
    Delete Entity by Id    ${second_entity_id}
    Delete Entity by Id    ${second_linked_entity_id}

Create Linking Entity
    [Arguments]    ${linking_entity_id}    ${linked_entity_id}
    ${entity_payload}=    Load JSON From File    ${EXECDIR}/data/entities/${linking_entity_filename}
    ${entity}=    Update Value To JSON    ${entity_payload}    $.id    ${linking_entity_id}
    ${entity}=    Update Value To JSON    ${entity}    $.locatedAt.object    ${linked_entity_id}
    ${response}=    Create Entity From JSON-LD Content
    ...    ${entity}
    Check Response Status Code    201    ${response.status_code}
    RETURN    ${response}
+79 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check that entities can be queried with an inline linked entity with sysAttrs

Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Create Initial Entities And Linked Entities
Test Teardown       Delete Created Entities And Linked Entities


*** Variables ***
${building_id_prefix}=          urn:ngsi-ld:Building:
${city_id_prefix}=              urn:ngsi-ld:City:
${linking_entity_filename}=     building-relationship.jsonld
${linked_entity_filename}=      city-minimal.jsonld


*** Test Cases ***
019_14_01 Query Entities With Inline Linked Entities And SysAttrs
    [Documentation]    Check that entities can be queried with an inline linked entity with sysAttrs
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1

    ${response}=    Query Entities
    ...    entity_types=Building
    ...    options=sysAttrs
    ...    join=inline
    ...    joinLevel=1
    ...    context=${ngsild_test_suite_context}

    Check Response Status Code    200    ${response.status_code}
    Dictionary Should Contain Key    ${response.json()}[0][locatedAt][entity]    createdAt
    Dictionary Should Contain Key    ${response.json()}[1][locatedAt][entity]    createdAt


*** Keywords ***
Create Initial Entities And Linked Entities
    ${first_entity_id}=    Catenate    ${building_id_prefix}019-12-1
    ${first_linked_entity_id}=    Catenate    ${city_id_prefix}019-12-1
    Set Suite Variable    ${first_entity_id}
    Set Suite Variable    ${first_linked_entity_id}
    ${create_response1}=    Create Linking Entity
    ...    linking_entity_id=${first_entity_id}
    ...    linked_entity_id=${first_linked_entity_id}
    ${create_response2}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${first_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response2.status_code}

    ${second_entity_id}=    Catenate    ${building_id_prefix}019-12-2
    ${second_linked_entity_id}=    Catenate    ${city_id_prefix}019-12-2
    Set Suite Variable    ${second_entity_id}
    Set Suite Variable    ${second_linked_entity_id}
    ${create_response3}=    Create Linking Entity
    ...    linking_entity_id=${second_entity_id}
    ...    linked_entity_id=${second_linked_entity_id}
    ${create_response4}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${second_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response4.status_code}

Delete Created Entities And Linked Entities
    Delete Entity by Id    ${first_entity_id}
    Delete Entity by Id    ${first_linked_entity_id}
    Delete Entity by Id    ${second_entity_id}
    Delete Entity by Id    ${second_linked_entity_id}

Create Linking Entity
    [Arguments]    ${linking_entity_id}    ${linked_entity_id}
    ${entity_payload}=    Load JSON From File    ${EXECDIR}/data/entities/${linking_entity_filename}
    ${entity}=    Update Value To JSON    ${entity_payload}    $.id    ${linking_entity_id}
    ${entity}=    Update Value To JSON    ${entity}    $.locatedAt.object    ${linked_entity_id}
    ${response}=    Create Entity From JSON-LD Content
    ...    ${entity}
    Check Response Status Code    201    ${response.status_code}
    RETURN    ${response}
+81 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check that entities can be queried with a flat linked entity with sysAttrs

Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Create Initial Entities And Linked Entities
Test Teardown       Delete Created Entities And Linked Entities


*** Variables ***
${building_id_prefix}=          urn:ngsi-ld:Building:
${city_id_prefix}=              urn:ngsi-ld:City:
${linking_entity_filename}=     building-relationship.jsonld
${linked_entity_filename}=      city-minimal.jsonld


*** Test Cases ***
019_15_01 Query Entities With Flat Linked Entities And SysAttrs
    [Documentation]    Check that entities can be queried with a flat linked entity with sysAttrs
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1

    ${response}=    Query Entities
    ...    entity_types=Building
    ...    options=sysAttrs
    ...    join=flat
    ...    joinLevel=1
    ...    context=${ngsild_test_suite_context}

    Check Response Status Code    200    ${response.status_code}
    Dictionary Should Contain Key    ${response.json()}[0]    createdAt
    Dictionary Should Contain Key    ${response.json()}[1]    createdAt
    Dictionary Should Contain Key    ${response.json()}[2]    createdAt
    Dictionary Should Contain Key    ${response.json()}[3]    createdAt


*** Keywords ***
Create Initial Entities And Linked Entities
    ${first_entity_id}=    Catenate    ${building_id_prefix}019-12-1
    ${first_linked_entity_id}=    Catenate    ${city_id_prefix}019-12-1
    Set Suite Variable    ${first_entity_id}
    Set Suite Variable    ${first_linked_entity_id}
    ${create_response1}=    Create Linking Entity
    ...    linking_entity_id=${first_entity_id}
    ...    linked_entity_id=${first_linked_entity_id}
    ${create_response2}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${first_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response2.status_code}

    ${second_entity_id}=    Catenate    ${building_id_prefix}019-12-2
    ${second_linked_entity_id}=    Catenate    ${city_id_prefix}019-12-2
    Set Suite Variable    ${second_entity_id}
    Set Suite Variable    ${second_linked_entity_id}
    ${create_response3}=    Create Linking Entity
    ...    linking_entity_id=${second_entity_id}
    ...    linked_entity_id=${second_linked_entity_id}
    ${create_response4}=    Create Entity Selecting Content Type
    ...    filename=${linked_entity_filename}
    ...    entity_id=${second_linked_entity_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response4.status_code}

Delete Created Entities And Linked Entities
    Delete Entity by Id    ${first_entity_id}
    Delete Entity by Id    ${first_linked_entity_id}
    Delete Entity by Id    ${second_entity_id}
    Delete Entity by Id    ${second_linked_entity_id}

Create Linking Entity
    [Arguments]    ${linking_entity_id}    ${linked_entity_id}
    ${entity_payload}=    Load JSON From File    ${EXECDIR}/data/entities/${linking_entity_filename}
    ${entity}=    Update Value To JSON    ${entity_payload}    $.id    ${linking_entity_id}
    ${entity}=    Update Value To JSON    ${entity}    $.locatedAt.object    ${linked_entity_id}
    ${response}=    Create Entity From JSON-LD Content
    ...    ${entity}
    Check Response Status Code    201    ${response.status_code}
    RETURN    ${response}
+114 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check that entities can be queried with two levels linked entities in different join types and representations

Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Create Initial Entities And Linked Entities
Test Teardown       Delete Created Entities And Linked Entities
Test Template       Query Entities With Joins And Representations


*** Variables ***
${building_id_prefix}=                  urn:ngsi-ld:Building:
${city_id_prefix}=                      urn:ngsi-ld:City:
${country_id_prefix}=                   urn:ngsi-ld:Country:
${linking_entity_filename}=             building-relationship.jsonld
${level_1_linked_entity_filename}=      city-relationship.jsonld
${level_2_linked_entity_filename}=      country-minimal.jsonld


*** Test Cases ***    JOIN    OPTIONS    EXPECTATION_FILENAME
019_16_01 Query Inline Normalized
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    inline    ${EMPTY}    linked-entity-retrieval/buildings-two-levels-inline-019-16.json
019_16_02 Query Flat Normalized
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    flat    ${EMPTY}    linked-entity-retrieval/buildings-two-levels-flat-019-16.json
019_16_03 Query Inline Simplified
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    inline    keyValues    linked-entity-retrieval/buildings-two-levels-inline-simplified-019-16.json
019_16_04 Query Flat Simplified
    [Tags]    e-query    5_7_2    4_5_23    since_v1.8.1
    flat    keyValues    linked-entity-retrieval/buildings-two-levels-flat-simplified-019-16.json


*** Keywords ***
Query Entities With Joins And Representations
    [Documentation]    Check that entities can be queried with two levels linked entities in different join types and representations
    [Arguments]    ${join}    ${options}    ${expectation_filename}

    ${response}=    Query Entities
    ...    entity_types=Building
    ...    options=${options}
    ...    join=${join}
    ...    joinLevel=2
    ...    context=${ngsild_test_suite_context}

    Check Response Status Code    200    ${response.status_code}
    Check Response Body Content
    ...    expectation_filename=${expectation_filename}
    ...    response_body=${response.json()}

Create Initial Entities And Linked Entities
    ${entity_1_id}=    Catenate    ${building_id_prefix}019-16-1
    Set Suite Variable    ${entity_1_id}
    ${linked_entity_1_level_1_id}=    Catenate    ${city_id_prefix}019-16-1
    Set Suite Variable    ${linked_entity_1_level_1_id}
    ${create_response1}=    Create Linking Entity
    ...    entity_filename=${linking_entity_filename}
    ...    entity_id=${entity_1_id}
    ...    linked_entity_id=${linked_entity_1_level_1_id}
    ${linked_entity_1_level_2_id}=    Catenate    ${country_id_prefix}019-16-1
    Set Suite Variable    ${linked_entity_1_level_2_id}
    ${create_response2}=    Create Linking Entity
    ...    entity_filename=${level_1_linked_entity_filename}
    ...    entity_id=${linked_entity_1_level_1_id}
    ...    linked_entity_id=${linked_entity_1_level_2_id}
    Check Response Status Code    201    ${create_response2.status_code}
    ${create_response3}=    Create Entity Selecting Content Type
    ...    filename=${level_2_linked_entity_filename}
    ...    entity_id=${linked_entity_1_level_2_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response3.status_code}

    ${entity_2_id}=    Catenate    ${building_id_prefix}019-16-2
    Set Suite Variable    ${entity_2_id}
    ${linked_entity_2_level_1_id}=    Catenate    ${city_id_prefix}019-16-2
    Set Suite Variable    ${linked_entity_2_level_1_id}
    ${create_response4}=    Create Linking Entity
    ...    entity_filename=${linking_entity_filename}
    ...    entity_id=${entity_2_id}
    ...    linked_entity_id=${linked_entity_2_level_1_id}
    ${linked_entity_2_level_2_id}=    Catenate    ${country_id_prefix}019-16-2
    Set Suite Variable    ${linked_entity_2_level_2_id}
    ${create_response5}=    Create Linking Entity
    ...    entity_filename=${level_1_linked_entity_filename}
    ...    entity_id=${linked_entity_2_level_1_id}
    ...    linked_entity_id=${linked_entity_2_level_2_id}
    Check Response Status Code    201    ${create_response2.status_code}
    ${create_response6}=    Create Entity Selecting Content Type
    ...    filename=${level_2_linked_entity_filename}
    ...    entity_id=${linked_entity_2_level_2_id}
    ...    content_type=${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response3.status_code}

Delete Created Entities And Linked Entities
    Delete Entity by Id    ${entity_1_id}
    Delete Entity by Id    ${linked_entity_1_level_1_id}
    Delete Entity by Id    ${linked_entity_1_level_2_id}
    Delete Entity by Id    ${entity_2_id}
    Delete Entity by Id    ${linked_entity_2_level_1_id}
    Delete Entity by Id    ${linked_entity_2_level_2_id}

Create Linking Entity
    [Arguments]    ${entity_filename}    ${entity_id}    ${linked_entity_id}
    ${entity_payload}=    Load JSON From File    ${EXECDIR}/data/entities/${entity_filename}
    ${entity}=    Update Value To JSON    ${entity_payload}    $.id    ${entity_id}
    ${entity}=    Update Value To JSON    ${entity}    $.locatedAt.object    ${linked_entity_id}
    ${response}=    Create Entity From JSON-LD Content
    ...    ${entity}
    Check Response Status Code    201    ${response.status_code}
    RETURN    ${response}
+69 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Check that an entity can be retrieved with a linked entity in different join types and representations

Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Create Initial Entity And Linked Entity
Test Teardown       Delete Created Entity And Linked Entity
Test Template       Retrieve Entity With Linked Entity


*** Variables ***
${building_id_prefix}=          urn:ngsi-ld:Building:
${city_id_prefix}=              urn:ngsi-ld:City:
${linking_entity_filename}=     building-relationship.jsonld
${linked_entity_filename}=      city-minimal.jsonld


*** Test Cases ***    JOIN    OPTIONS    EXPECTATION_FILENAME
018_10_01 Inline Normalized
    [Tags]    e-retrieve    5_7_1    4_5_23    since_v1.8.1
    inline    ${EMPTY}    linked-entity-retrieval/building-one-level-inline-018-10.json
018_10_02 Flat Normalized
    [Tags]    e-retrieve    5_7_1    4_5_23    since_v1.8.1
    flat    ${EMPTY}    linked-entity-retrieval/building-one-level-flat-018-10.json
018_10_03 Inline Simplified
    [Tags]    e-retrieve    5_7_1    4_5_23    since_v1.8.1
    inline    keyValues    linked-entity-retrieval/building-one-level-inline-simplified-018-10.json
018_10_04 Flat Simplified
    [Tags]    e-retrieve    5_7_1    4_5_23    since_v1.8.1
    flat    keyValues    linked-entity-retrieval/building-one-level-flat-simplified-018-10.json


*** Keywords ***
Retrieve Entity With Linked Entity
    [Documentation]    Check that an entity can be retrieved with a linked entity in different join types and representations
    [Arguments]    ${join}    ${options}    ${expectation_filename}
    ${response}=    Query Entity
    ...    id=${linking_entity_id}
    ...    join=${join}
    ...    joinLevel=1
    ...    options=${options}
    ...    context=${ngsild_test_suite_context}
    Check Response Status Code    200    ${response.status_code}
    Check Response Body Content
    ...    expectation_filename=${expectation_filename}
    ...    response_body=${response.json()}

Create Initial Entity And Linked Entity
    ${linking_entity_id}=    Catenate    ${building_id_prefix}018-10
    Set Suite Variable    ${linking_entity_id}
    ${response}=    Create Entity Selecting Content Type
    ...    ${linking_entity_filename}
    ...    ${linking_entity_id}
    ...    ${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${response.status_code}
    ${linked_entity_id}=    Catenate    ${city_id_prefix}Paris
    Set Suite Variable    ${linked_entity_id}
    ${response}=    Create Entity Selecting Content Type
    ...    ${linked_entity_filename}
    ...    ${linked_entity_id}
    ...    ${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${response.status_code}

Delete Created Entity And Linked Entity
    Delete Entity by Id    ${linking_entity_id}
    Delete Entity by Id    ${linked_entity_id}
Loading