Skip to content
common.resource 5.63 KiB
Newer Older
Jorge Moratinos's avatar
Jorge Moratinos committed
*** Settings ***
Library         /opt/robot-tests/tests/libraries/helpers.py
Library         /opt/robot-tests/tests/libraries/interrupt_listener.py
Library    Process
Library    Collections
Variables       /opt/robot-tests/tests/libraries/environment.py
Resource        /opt/robot-tests/tests/resources/common/basicRequests.robot
Jorge Moratinos's avatar
Jorge Moratinos committed


*** Variables ***
${INVOKER_USERNAME}             ROBOT_TESTING_INVOKER
${PROVIDER_USERNAME}            ROBOT_TESTING_PROVIDER
${APF_PROVIDER_USERNAME}        APF_${PROVIDER_USERNAME}
${AEF_PROVIDER_USERNAME}        AEF_${PROVIDER_USERNAME}
${AMF_PROVIDER_USERNAME}        AMF_${PROVIDER_USERNAME}

${INVOKER_NOT_REGISTERED}       not-valid
${INVOKER_ROLE}                 invoker
${PROVIDER_ROLE}                provider

${CAPIF_HOSTNAME}               capifcore
${CAPIF_VAULT}                  vault
${CAPIF_VAULT_PORT}             8200
${CAPIF_VAULT_TOKEN}            read-ca-token
${CAPIF_REGISTER}               register
${CAPIF_REGISTER_PORT}          8084
${CAPIF_HTTP_PORT}              ${EMPTY}
${CAPIF_HTTPS_PORT}             ${EMPTY}
Jorge Moratinos's avatar
Jorge Moratinos committed
${CAPIF_IP}                     127.0.0.1
${CAPIF_CALLBACK_IP}            host.docker.internal
${CAPIF_CALLBACK_PORT}          8086

${REGISTER_ADMIN_USER}          admin
${REGISTER_ADMIN_PASSWORD}      password123

${NOTIFICATION_DESTINATION_URL}     ${MOCK_SERVER_URL}
Jorge Moratinos's avatar
Jorge Moratinos committed
${DISCOVER_URL}                 /service-apis/v1/allServiceAPIs?api-invoker-id=


*** Keywords ***
Reset Testing Environment
    Log    Db capif.invokerdetails collection will be removed in order to isolate each test.

    # Clean Test Information By HTTP Requests
Jorge Moratinos's avatar
Jorge Moratinos committed
    Clean Test Information

Check Location Header
    [Documentation]    This keyword will check location header at response according to regular expression provided as argument
    [Arguments]    ${resp}    ${regular_expression}

    ${event_url}=    Parse Url    ${resp.headers['Location']}

    Should Match Regexp    ${event_url.path}    ${regular_expression}
    RETURN    ${event_url}

Check Event Location Header
    [Arguments]    ${resp}

    ${event_url}=    Check Location Header    ${resp}    ${LOCATION_EVENT_RESOURCE_REGEX}

    ${subscriber_id}    ${subscription_id}=    Get Subscriber And Subscription From Location    ${event_url.path}

    RETURN    ${subscriber_id}    ${subscription_id}

Check Problem Details
    [Arguments]    ${resp}    &{input_parameters}
    Check Variable    ${resp.json()}    ProblemDetails
    FOR    ${input}    IN    @{input_parameters}
        Log    ${input}=${input_parameters['${input}']}
        Should Match    "${resp.json()['${input}']}"    "${input_parameters['${input}']}"
    END

Check Response Variable Type And Values
    [Arguments]    ${resp}    ${status_code}    ${variable_type}    &{input_parameters}
    Status Should Be    ${status_code}    ${resp}
    Check Variable    ${resp.json()}    ${variable_type}
    FOR    ${input}    IN    @{input_parameters}
        Log    ${input}=${input_parameters['${input}']}
        Should Match Regexp    "${resp.json()['${input}']}"    "${input_parameters['${input}']}"
    END

Remove Keys From Object
    [Arguments]    ${input}    @{keys_to_remove}

    ${filtered_input}=    Remove Keys From Object Helper    ${input}    ${keys_to_remove}

    RETURN    ${filtered_input}

Test ${TEST NAME} Currently Not Supported
    Log    Test "${TEST NAME}" Currently not supported    WARN
    Skip    Test "${TEST NAME}" Currently not supported
Init Mock Server
    Check Mock Server
    Clean Mock Server

Check Mock Server
    Log  Checking mock Server for Robot Framework.

    IF    "${MOCK_SERVER_URL}" == ""
        Fail   Mock Server Url is not setup on Tests execution, check MOCK_SERVER_URL variable   mockserver-not-ready
    END

    Create Session    mockserver    ${MOCK_SERVER_URL}

    ${endpoint}=    Set Variable  /requests_list

    ${resp}=    GET On Session
    ...    mockserver
    ...    ${endpoint}
    ...    expected_status=any
    ...    verify=False

    Status Should Be    200    ${resp}   Mock Server response is not 200 OK at ${MOCK_SERVER_URL}, check server status.

Clean Mock Server
    Log  Checking mock Server for Robot Framework.

    Create Session    mockserver    ${MOCK_SERVER_URL}

    ${endpoint}=    Set Variable  /requests_list

    ${resp}=    DELETE On Session
    ...    mockserver
    ...    ${endpoint}
    ...    expected_status=any
    ...    verify=False

    Status Should Be    200    ${resp}


Get Mock Server Messages
    Log  Checking mock Server for Robot Framework.

    Create Session    mockserver    ${MOCK_SERVER_URL}

    ${endpoint}=    Set Variable  /requests_list

    ${resp}=    GET On Session
    ...    mockserver
    ...    ${endpoint}
    ...    expected_status=any
    ...    verify=False

    Status Should Be    200    ${resp}
    Log List    ${resp.json()}
    RETURN   ${resp}

Check Mock Server Notification Events
    [Arguments]    ${events_expected}

    Check Variable    ${events_expected}    EventNotification
    # Check results
    ${events_expected_length}=   Get Length    ${events_expected}

    Sleep    3s
    # Get from Mock server the EventNotification Messages sent to callback setup on event subscription.
    ${resp}=    Get Mock Server Messages
    ${notification_events_on_mock_server}=    Set Variable    ${resp.json()}
    Check Variable    ${notification_events_on_mock_server}    EventNotification

    Length Should Be    ${notification_events_on_mock_server}   ${events_expected_length}
    FOR    ${event_expected}    IN    @{events_expected}
        Log    ${event_expected}
        List Should Contain Value    ${notification_events_on_mock_server}    ${event_expected}
    END