Commit ea1dc5fd authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

New api status tests

parent 6775b068
Loading
Loading
Loading
Loading
Loading
+106 −0
Original line number Diff line number Diff line
@@ -256,6 +256,112 @@ Publish without apiStatus feature receive eventDetails without eventDetails (api



### ----------------------

Update published API without apiStatus and apiStatusMonitoring inactive
    [Tags]    api_status-12    mockserver

    # Initialize Mock server
    Init Mock Server

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

    # Register APF
    ${register_user_info_provider}=    Provider Default Registration    total_aef_roles=2

    ${aef_id_1}=    Set Variable    ${register_user_info_provider['aef_roles']['${AEF_PROVIDER_USERNAME}']['aef_id']}
    ${aef_id_2}=    Set Variable    ${register_user_info_provider['aef_roles']['${AEF_PROVIDER_USERNAME}_1']['aef_id']}
    ${aef_ids}=   Create List    ${aef_id_1}   ${aef_id_2}

    # Subscribe to events
    ${events_list}=    Create List    SERVICE_API_AVAILABLE    SERVICE_API_UNAVAILABLE  SERVICE_API_UPDATE

    ${request_body}=    Create Events Subscription
    ...    events=@{events_list}
    ...    notification_destination=${NOTIFICATION_DESTINATION_URL}/testing
    ...    supported_features=C
    ${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}

    # Publish api with 2 aefIds
    ${service_api_description_published}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1
    ...    aef_id=${aef_ids}
    ...    api_status=${aef_id_1}
    ...    supported_features=020

    # Discover APIs by invoker
    ${resp}=    Get Request Capif
    ...    ${DISCOVER_URL}${register_user_info_invoker['api_invoker_id']}&aef-id=${aef_id_1}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${INVOKER_USERNAME}

    Check Response Variable Type And Values    ${resp}    200    DiscoveredAPIs

    # # Check Results
    Dictionary Should Contain Key    ${resp.json()}    serviceAPIDescriptions
    Should Not Be Empty    ${resp.json()['serviceAPIDescriptions']}
    Length Should Be    ${resp.json()['serviceAPIDescriptions']}    1
    List Should Contain Value    ${resp.json()['serviceAPIDescriptions']}    ${service_api_description_published}

    # Update Request to published API
    ${service_api_description_modified}=    Create Service Api Description
    ...    service_1
    ...    aef_id=${aef_ids}
    ...    supported_features=020
    ...    api_status=${NONE}
    ${resp}=    Put Request Capif
    ...    ${resource_url.path}
    ...    json=${service_api_description_modified}
    ...    server=${CAPIF_HTTPS_URL}
    ...    verify=ca.crt
    ...    username=${APF_PROVIDER_USERNAME}

    Check Response Variable Type And Values    ${resp}    200    ServiceAPIDescription
    ...    apiName=service_1
    Dictionary Should Not Contain Key     ${resp.json()}   apiStatus

    # Provider Remove service_1 published API
    # ${resp}=    Delete Request Capif
    # ...    ${resource_url.path}
    # ...    server=${CAPIF_HTTPS_URL}
    # ...    verify=ca.crt
    # ...    username=${APF_PROVIDER_USERNAME}

    # Status Should Be    204    ${resp}

    # Check Event Notifications
    ## Create check Events to ensure all notifications were received
    ${service_api_available_resources}=    Create List    ${resource_url}
    ${events_expected}=    Create Expected Events For Service API Notifications
    ...    subscription_id=${subscription_id}
    ...    service_api_available_resources=${service_api_available_resources}
    ...    event_detail_expected=${TRUE}
    ...    service_api_description_expected=${TRUE}
    ...    service_api_description=${service_api_description_published}

    Log List    ${events_expected}
    ${events_expected}=    Create Expected Service Update Event
    ...    subscription_id=${subscription_id}
    ...    service_api_resource=${resource_url}
    ...    service_api_descriptions=${service_api_description_modified}
    ...    events_expected=${events_expected}
    Log List    ${events_expected}
    ## Check Events Expected towards received notifications at mock server
    Wait Until Keyword Succeeds    5x    5s    Check Mock Server Notification Events    ${events_expected}



###---
# Invoker receives Service API Invocation events
+16 −1
Original line number Diff line number Diff line
def create_service_api_description(api_name="service_1", aef_id="aef_id", supported_features="0", vendor_specific_service_api_description=None, vendor_specific_aef_profile=None):
def create_service_api_description(api_name="service_1",
                                   aef_id="aef_id",
                                   supported_features="0",
                                   vendor_specific_service_api_description=None,
                                   vendor_specific_aef_profile=None,
                                   api_status=None):
    aef_ids = list()
    if isinstance(aef_id, list):
        aef_ids = aef_id
@@ -39,6 +44,16 @@ def create_service_api_description(api_name="service_1", aef_id="aef_id", suppor
                body["aefProfiles"][0][key] = value
    if supported_features is not None:
        body['supportedFeatures'] = supported_features
    if api_status is not None:
        aef_ids_active = list()
        if isinstance(api_status, list):
            aef_ids_active = api_status
            print("api_status parameter is a list")
        elif isinstance(api_status, str):
            print("api_status parameter is a string")
            aef_ids_active.append(api_status)
        body['apiStatus'] = dict()
        body['apiStatus']['aefIds'] = aef_ids_active

    return body

+8 −1
Original line number Diff line number Diff line
@@ -82,12 +82,19 @@
      "serviceAPICategory": "string",
      "apiSuppFeats": "SupportedFeatures",
      "pubApiPath": "PublishedApiPath",
      "ccfId": "string"
      "ccfId": "string",
      "apiStatus": "ApiStatus"
    },
    "regex_attributes": {
      "^vendorSpecific-(.*)": "VendorSpecificObject"
    }
  },
  "ApiStatus": {
    "mandatory_attributes": {
      "aefIds": "string"
    },
    "optional_attributes": {}
  },
  "VendorSpecificObject": {
    "Check": false
  },
+2 −0
Original line number Diff line number Diff line
@@ -795,6 +795,7 @@ Publish Service Api
    ...    ${vendor_specific_service_api_description}=${None}
    ...    ${vendor_specific_aef_profile}=${None}
    ...    ${aef_id}=${NONE}
    ...    ${api_status}=${NONE}

    ${aef_ids}=    Create List
    IF    "${aef_id}" == "${NONE}"
@@ -824,6 +825,7 @@ Publish Service Api
    ...    ${supported_features}
    ...    ${vendor_specific_service_api_description}
    ...    ${vendor_specific_aef_profile}
    ...    ${api_status}
    ${resp}=    Post Request Capif
    ...    /published-apis/v1/${apf_id_to_use}/service-apis
    ...    json=${request_body}
+29 −25
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ Create Expected Events For Service API Notifications
        END
    END

    IF   "${service_api_available_resources}" != "${NONE}"
        FOR    ${service_api_available_resource}    IN    @{service_api_available_resources}
            Log    ${service_api_available_resource}
            ${api_id}=    Fetch From Right    ${service_api_available_resource.path}    /
@@ -89,7 +90,9 @@ Create Expected Events For Service API Notifications
            ...    serviceAPIDescriptions=${service_api_description_to_use}
            Append To List    ${events_expected}    ${event_expected}
        END
    END

    IF   "${service_api_unavailable_resources}" != "${NONE}"
        FOR    ${service_api_unavailable_resource}    IN    @{service_api_unavailable_resources}
            Log    ${service_api_unavailable_resource}
            ${api_id}=    Fetch From Right    ${service_api_unavailable_resource.path}    /
@@ -103,6 +106,7 @@ Create Expected Events For Service API Notifications
            ...    serviceAPIDescriptions=${service_api_description_to_use}
            Append To List    ${events_expected}    ${event_expected}
        END
    END

    RETURN    ${events_expected}

@@ -213,7 +217,7 @@ Create Expected Service Update Event
    IF    "${event_detail_expected}" != "${TRUE}"
        ${service_api_descriptions}=    Set Variable    ${NONE}
    END
    ${events_expected}=    Create List

    ${event_expected}=    Create Notification Event
    ...    ${subscription_id}
    ...    SERVICE_API_UPDATE