Commit e56132b9 authored by Ranim Naimi's avatar Ranim Naimi
Browse files

query entities with type selection language and verify entities URIs

parent 897e075f
Loading
Loading
Loading
Loading
+27 −17
Original line number Diff line number Diff line
@@ -12,38 +12,40 @@ Test Template Query entities with multiple types using Entity Type Selecti


*** Variables ***
${entity_id_prefix}=            urn:ngsi-ld:MultiTypes:
${first_entity_filename}=       building-simple-attributes-sample.jsonld
${second_entity_filename}=      building-with-different-type-sample.jsonld
${third_entity_filename}=       building-with-two-types-sample.jsonld
${first_entity_type}=           Building
${second_entity_type}=          Parking
${third_entity_type}=           TouristDestination
${options_parameter}=           keyValues
${entity_id_prefix}             urn:ngsi-ld:MultiTypes:
${first_entity_filename}        building-simple-attributes-sample.jsonld
${second_entity_filename}       building-with-different-type-sample.jsonld
${third_entity_filename}        building-with-two-types-sample.jsonld
${first_entity_type}            Building
${second_entity_type}           Parking
${third_entity_type}            TouristDestination
${options_parameter}            keyValues


*** Test Cases ***    ENTITY_TYPES_SELECTION    EXPECTED_COUNT
019_08_01 entities first query    ${first_entity_type}    2
019_08_02 entities second query    (${first_entity_type};${third_entity_type})    1
019_08_03 entities third query    ${first_entity_type},${second_entity_type}    3
019_08_04 entities fourth query    ${second_entity_type},${third_entity_type}    2
019_08_05 entities fifth query    (${first_entity_type};${second_entity_type}),${third_entity_type}    1
*** Test Cases ***    ENTITY_TYPES_SELECTION    EXPECTED_ENTITIES_IDS    EXPECTED_LENGTH
019_08_01 entities first query    ${first_entity_type}    ${first_expected_entities_ids}    2
019_08_02 entities second query    (${first_entity_type};${third_entity_type})    ${third_entity_id_as_a_list}    1
019_08_03 entities third query    ${first_entity_type},${second_entity_type}    ${second_expected_entities_ids}    3
019_08_04 entities fourth query    ${second_entity_type},${third_entity_type}    ${third_expected_entities_ids}    2
019_08_05 entities fifth query    (${first_entity_type};${second_entity_type}),${third_entity_type}    ${third_entity_id_as_a_list}   1


*** Keywords ***
Query entities with multiple types using Entity Type Selection Language
    [Documentation]    Query entities with Entity Type Selection Language.
    [Tags]    e-query    4_17
    [Arguments]    ${entity_types_selection}    ${expected_count}
    [Arguments]    ${entity_types_selection}    ${expected_entities_ids}    ${expected_length}

    ${response}=    Query Entities
    ...    entity_types=${entity_types_selection}
    ...    context=${ngsild_test_suite_context}
    ...    count=${True}
    ...    options=${options_parameter}

    Check Response Status Code    200    ${response.status_code}
    Check Response Headers Containing NGSILD-Results-Count Equals To    ${expected_count}    ${response.headers}
    Check Response Body Containing Entities URIS set to
    ...    ${expected_entities_ids}
    ...    ${response.json()}
    ...    ${expected_length}

Setup Initial Entities
    ${first_entity_id}=    Generate Random Entity Id    ${entity_id_prefix}
@@ -67,6 +69,14 @@ Setup Initial Entities
    ...    ${third_entity_id}
    ...    ${CONTENT_TYPE_LD_JSON}
    Check Response Status Code    201    ${create_response3.status_code}
    @{first_expected_entities_ids}=    Create List    ${first_entity_id}    ${third_entity_id}
    Set Suite Variable    ${first_expected_entities_ids}
    @{second_expected_entities_ids}=    Create List    ${first_entity_id}   ${second_entity_id}    ${third_entity_id}
    Set Suite Variable    @{second_expected_entities_ids}
    @{third_expected_entities_ids}=    Create List    ${second_entity_id}    ${third_entity_id}
    Set Suite Variable    @{third_expected_entities_ids}
    @{third_entity_id_as_a_list}=    Create List    ${third_entity_id}
    Set Suite Variable    @{third_entity_id_as_a_list}

Delete Initial Entities
    Delete Entity by Id    ${first_entity_id}
+11 −0
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ class Checks:
                Checks.check_response_status_code,
            'Check Response Body Containing Array Of URIs set to':
                Checks.check_response_body_containing_array_of_uris_set_to,
            'Check Response Body Containing Entities URIS set to' :
                 Checks.check_response_body_containing_entities_uris_set_to,
            'Check Created Resources Set To':
                Checks.check_created_resources_set_to,
            'Check Response Headers Containing Content-Type set to':
@@ -117,6 +119,10 @@ class Checks:
                'params': ['expected_entities_ids', 'response_body'],
                'position': [0, 1]
            },
            'Check Response Body Containing Entities URIS set to': {
                'params': ['expected_entities_ids', 'response_body', 'expected_length'],
                'position': [0, 1, 2]
            },
            'Check Response Body Containing ProblemDetails Element Containing Type Element set to': {
                'params': ['type'],
                'position': [1]
@@ -394,6 +400,10 @@ class Checks:
    def check_response_body_containing_array_of_uris_set_to(kwargs: list) -> str:
        return 'Response Body set to an array of created entities ids'

    @staticmethod
    def check_response_body_containing_entities_uris_set_to(kwargs: list) -> str:
        return 'Response Body contains entities ids'

    @staticmethod
    def check_created_resources_set_to(kwargs: list) -> str:
        return 'Created resources set to ${entities}'
@@ -896,6 +906,7 @@ if __name__ == "__main__":
    print(data.get_checks(checks='Check Response Status Code',
                          status_code=201))
    print(data.get_checks(checks='Check Response Body Containing Array Of URIs set to'))
    print(data.get_checks(checks='Check Response Body Containing Entities URIS set to'))
    print(data.get_checks(checks='Check Created Resources Set To'))
    print(data.get_checks(checks='Check Response Headers Containing Content-Type set to',
                          content_type='application/json'))
+17 −6
Original line number Diff line number Diff line
@@ -8,12 +8,12 @@ Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource


*** Variables ***
${id_regex_expr}=                           root\\['id'\\]
${instance_id_regex_expr}=                  root\\[.*\\]\\['instanceId'\\]
${notification_timestamps_regex_expr}=      root\\['last.*'\\]
${notification_endpoint_uri_regex_expr}=    root\\['endpoint'\\]\\['uri'\\]
${context_regex_expr}=                      root\\['@context'\\]
${status_regex_expr}=                       root\\['status'\\]
${id_regex_expr}                            root\\['id'\\]
${instance_id_regex_expr}                   root\\[.*\\]\\['instanceId'\\]
${notification_timestamps_regex_expr}       root\\['last.*'\\]
${notification_endpoint_uri_regex_expr}     root\\['endpoint'\\]\\['uri'\\]
${context_regex_expr}                       root\\['@context'\\]
${status_regex_expr}                        root\\['status'\\]


*** Keywords ***
@@ -29,6 +29,17 @@ Check Response Body Containing Array Of URIs set to
    [Arguments]    ${expected_entities_ids}    ${response_body}
    Lists Should Be Equal    ${expected_entities_ids}    ${response_body}    ignore_order=True

Check Response Body Containing Entities URIS set to
    [Arguments]    ${expected_entities_ids}    ${response_body}    ${expected_length}
    @{response_entities_ids}=    Create List
    FOR    ${item}    IN    ${response_body}
        FOR    ${index}    IN RANGE    ${expected_length}
            Append To List    ${response_entities_ids}    ${item[${index}]['id']}
        END
    END

    Lists Should Be Equal      ${expected_entities_ids}   ${response_entities_ids}

Check Response Body Content
    [Arguments]    ${expectation_filename}    ${response_body}    ${additional_ignored_path}=${EMPTY}
    ${entity_payload}=    Load JSON From File    ${EXECDIR}/data/entities/expectations/${expectation_filename}