Skip to content
capif_events_api.robot 13.6 KiB
Newer Older
Jorge Moratinos's avatar
Jorge Moratinos committed
*** Settings ***
Resource            /opt/robot-tests/tests/resources/common.resource
Library             /opt/robot-tests/tests/libraries/bodyRequests.py
Library             XML
Resource            /opt/robot-tests/tests/resources/common/basicRequests.robot
Resource            ../../resources/common.resource
Jorge Moratinos's avatar
Jorge Moratinos committed

Suite Teardown      Reset Testing Environment
Test Setup          Reset Testing Environment
Jorge Moratinos's avatar
Jorge Moratinos committed


*** Variables ***
${API_INVOKER_NOT_REGISTERED}       not-valid
${SUBSCRIBER_ID_NOT_VALID}          not-valid
${SUBSCRIPTION_ID_NOT_VALID}        not-valid


*** Test Cases ***
Creates a new individual CAPIF Event Subscription
    [Tags]    capif_api_events-1
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Events Subscription
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    # Check Results
    Check Response Variable Type And Values    ${resp}    201    EventSubscription
    ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

Creates a new individual CAPIF Event Subscription with Invalid SubscriberId
    [Tags]    capif_api_events-2
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Events Subscription
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${SUBSCRIBER_ID_NOT_VALID}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    # Check Results
    Check Response Variable Type And Values    ${resp}    404    ProblemDetails
Jorge Moratinos's avatar
Jorge Moratinos committed
    ...    title=Not Found
    ...    status=404
    ...    detail=Invoker or APF or AEF or AMF Not found
    ...    cause=Subscriber Not Found

Deletes an individual CAPIF Event Subscription
    [Tags]    capif_api_events-3
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Events Subscription
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    Check Response Variable Type And Values    ${resp}    201    EventSubscription

    ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

    ${resp}=    Delete Request Capif
    ...    /capif-events/v1/${subscriber_id}/subscriptions/${subscription_id}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    Status Should Be    204    ${resp}

Deletes an individual CAPIF Event Subscription with invalid SubscriberId
    [Tags]    capif_api_events-4
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Events Subscription
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    Check Response Variable Type And Values    ${resp}    201    EventSubscription

    ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

    ${resp}=    Delete Request Capif
    ...    /capif-events/v1/${SUBSCRIBER_ID_NOT_VALID}/subscriptions/${subscription_id}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}
Jorge Moratinos's avatar
Jorge Moratinos committed
    # Check Results
    Check Response Variable Type And Values    ${resp}    404    ProblemDetails
Jorge Moratinos's avatar
Jorge Moratinos committed
    ...    title=Not Found
    ...    status=404
    ...    detail=Invoker or APF or AEF or AMF Not found
    ...    cause=Subscriber Not Found

Deletes an individual CAPIF Event Subscription with invalid SubscriptionId
    [Tags]    capif_api_events-5

    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Events Subscription
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    Check Response Variable Type And Values    ${resp}    201    EventSubscription

    ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

    ${resp}=    Delete Request Capif
    ...    /capif-events/v1/${subscriber_id}/subscriptions/${SUBSCRIPTION_ID_NOT_VALID}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    # Check Results
    Check Response Variable Type And Values    ${resp}    401    ProblemDetails
    ...    title=Unauthorized
    ...    detail=User not authorized
    ...    cause=You are not the owner of this resource
Jorge Moratinos's avatar
Jorge Moratinos committed
# Prueba Mock Server
#     [Tags]  jms-3
#     Start Mock server

# Prueba JMS
#     [Tags]    jms-1

#     # Start Mock server
#     Check Mock Server
#     Clean Mock Server

#     # Register APF
#     ${register_user_info}=    Provider Default Registration

#     # Publish one api
#     Publish Service Api    ${register_user_info}

#     # Register INVOKER
#     ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

#     ${discover_response}=    Get Request Capif
#     ...    ${DISCOVER_URL}${register_user_info_invoker['api_invoker_id']}
#     ...    server=${CAPIF_HTTPS_URL}
#     ...    verify=ca.crt
#     ...    username=${INVOKER_USERNAME}

#     ${api_ids}    ${api_names}=    Get Api Ids And Names From Discover Response    ${discover_response}

#     # Subscribe to events
#     ${events_list}=    Create List    SERVICE_API_INVOCATION_SUCCESS    SERVICE_API_INVOCATION_FAILURE
#     ${request_body}=    Create Events Subscription
#     ...    events=@{events_list}
#     ...    notificationDestination=http://192.168.0.14:9090/testing
#     ${resp}=    Post Request Capif
#     ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
#     ...    json=${request_body}
#     ...    server=${CAPIF_HTTPS_URL}
#     ...    verify=ca.crt
#     ...    username=${INVOKER_USERNAME}

#     # Check Results
#     Check Response Variable Type And Values    ${resp}    201    EventSubscription
#     ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

#     ${results}=    Create List    200    400

#     # Create Log Entry
#     ${request_body}=    Create Log Entry
#     ...    ${register_user_info['aef_id']}
#     ...    ${register_user_info_invoker['api_invoker_id']}
#     ...    ${api_ids}
#     ...    ${api_names}
#     ...    results=${results}
#     ${resp}=    Post Request Capif
#     ...    /api-invocation-logs/v1/${register_user_info['aef_id']}/logs
#     ...    json=${request_body}
#     ...    server=${CAPIF_HTTPS_URL}
#     ...    verify=ca.crt
#     ...    username=${AEF_PROVIDER_USERNAME}

#     # Check Results
#     Check Response Variable Type And Values    ${resp}    201    InvocationLog
#     ${resource_url}=    Check Location Header    ${resp}    ${LOCATION_LOGGING_RESOURCE_REGEX}

#     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 if message follow EventNotification definition.
#     Check Variable    ${notification_events_on_mock_server}    EventNotification
#     # Check if mock server receive 2 events.
#     Length Should Be    ${notification_events_on_mock_server}    2

#     # Now we create the expected events received at notification server according to logs sent to loggin service in order to check if all are present.
#     ${invocation_log_base}=    Copy Dictionary    ${request_body}    deepcopy=True

#     # Store log array because each log will be notified in one Event Notification
#     ${invocation_log_logs}=    Set Variable    ${invocation_log_base['logs']}
#     # Remove logs array from invocationLog data
#     Remove From Dictionary    ${invocation_log_base}    logs
#     Length Should Be    ${invocation_log_logs}    2

#     # Create 2 invocationLogs from initial invocationLog present on request
#     ${invocation_logs_1}=    Copy Dictionary    ${invocation_log_base}    deepcopy=True
#     ${invocation_logs_2}=    Copy Dictionary    ${invocation_log_base}    deepcopy=True
#     # Create a log array with only one component
#     ${log_1}=    Create List    ${invocation_log_logs[0]}
#     ${log_2}=    Create List    ${invocation_log_logs[1]}
#     # Setup logs array with previously created list
#     Set To Dictionary    ${invocation_logs_1}    logs=${log_1}
#     Set To Dictionary    ${invocation_logs_2}    logs=${log_2}
#     # Create event details for each log
#     ${event_details_1}=    Create dictionary    invocationLogs=${invocation_logs_1}
#     ${event_details_2}=    Create dictionary    invocationLogs=${invocation_logs_2}
#     # Create Event with Event Details from invocationLog
#     ${event_1}=    Create Dictionary
#     ...    subscriptionId=${subscription_id}
#     ...    events=SERVICE_API_INVOCATION_SUCCESS
#     ...    eventDetail=${event_details_1}
#     ${event_2}=    Create Dictionary
#     ...    subscriptionId=${subscription_id}
#     ...    events=SERVICE_API_INVOCATION_FAILURE
#     ...    eventDetail=${event_details_2}
#     # Check if created events follow EventNotification format defined by 3gpp
#     Check Variable    ${event_1}    EventNotification
#     Check Variable    ${event_2}    EventNotification

#     List Should Contain Value    ${notification_events_on_mock_server}    ${event_1}
#     List Should Contain Value    ${notification_events_on_mock_server}    ${event_2}
Invoker receives Service API Invocation events
    [Tags]    capif_api_events-6  mockserver

    # Start Mock server
    Check Mock Server
    Clean Mock Server

    # Register APF
    ${register_user_info}=    Provider Default Registration

    # Publish one api
    Publish Service Api    ${register_user_info}

    # Register INVOKER
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${discover_response}=    Get Request Capif
    ...    ${DISCOVER_URL}${register_user_info_invoker['api_invoker_id']}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    ${api_ids}    ${api_names}=    Get Api Ids And Names From Discover Response    ${discover_response}

    # Subscribe to events
    ${events_list}=    Create List    SERVICE_API_INVOCATION_SUCCESS    SERVICE_API_INVOCATION_FAILURE
    ${aef_ids}=    Create List   ${register_user_info['aef_id']}
    ${event_filter}=   Create Capif Event Filter    aefIds=${aef_ids}
    ${event_filters}=   Create List    ${event_filter}

    ${request_body}=    Create Events Subscription
    ...    events=@{events_list}
    ...    notificationDestination=${MOCK_SERVER_URL}/testing
    ...    eventFilters=${event_filters}
    ${resp}=    Post Request Capif
    ...    /capif-events/v1/${register_user_info_invoker['api_invoker_id']}/subscriptions
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    # Check Results
    Check Response Variable Type And Values    ${resp}    201    EventSubscription
    ${subscriber_id}    ${subscription_id}=    Check Event Location Header    ${resp}

    # Create Log Entry, emulate success and failure api invocation
    ${results}=    Create List    200    400
    ${request_body}=    Create Log Entry
    ...    ${register_user_info['aef_id']}
    ...    ${register_user_info_invoker['api_invoker_id']}
    ...    ${api_ids}
    ...    ${api_names}
    ${resp}=    Post Request Capif
    ...    /api-invocation-logs/v1/${register_user_info['aef_id']}/logs
    ...    json=${request_body}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${AEF_PROVIDER_USERNAME}

    # Check Results
    Check Response Variable Type And Values    ${resp}    201    InvocationLog
    ${resource_url}=    Check Location Header    ${resp}    ${LOCATION_LOGGING_RESOURCE_REGEX}

    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 if message follow EventNotification definition.
    Check Variable    ${notification_events_on_mock_server}    EventNotification

    # Create check Events to ensure all notifications were received
    ${check_events}    ${check_events_length}=    Create Events From invocationLogs
    ...    ${subscription_id}
    ...    ${request_body}

    # Number of events received must be equal than events expected
    Length Should Be    ${notification_events_on_mock_server}    ${check_events_length}
    # Check if events received are the same than expected
    FOR    ${event}    IN    @{check_events}
        Log    ${event}
        List Should Contain Value    ${notification_events_on_mock_server}    ${event}
    END