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

Test updated according to new logic. Now tests that create a security context...

Test updated according to new logic. Now tests that create a security context must send valid aef_id and api_id, because now serivce API existence is checked by interfaceDescription or aef_id and api_id
parent 2476a00f
Loading
Loading
Loading
Loading
Loading
+233 −39
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ Test Teardown Reset Testing Environment
${APF_ID_NOT_VALID}             apf-example
${SERVICE_API_ID_NOT_VALID}     not-valid
${API_INVOKER_NOT_VALID}        not-valid
${AEF_ID_NOT_VALID}             not-valid


*** Test Cases ***
@@ -22,8 +23,22 @@ Create a security context for an API invoker
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -41,10 +56,21 @@ Create a security context for an API invoker with Provider role
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -62,10 +88,21 @@ Create a security context for an API invoker with Provider role
Create a security context for an API invoker with Provider entity role and invalid apiInvokerId
    [Tags]    capif_security_api-3
    # Register APF
    ${register_user_info_publisher}=    Provider Default Registration
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${API_INVOKER_NOT_VALID}
    ...    json=${request_body}
@@ -85,7 +122,22 @@ Create a security context for an API invoker with Invalid apiInvokerID
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register APF
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${API_INVOKER_NOT_VALID}
    ...    json=${request_body}
@@ -105,7 +157,24 @@ Retrieve the Security Context of an API Invoker
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ...    authentication_info=authenticationInfo
    ...    authorization_info=authorizationInfo
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -118,9 +187,6 @@ Retrieve the Security Context of an API Invoker

    ${service_security_context}=    Set Variable    ${resp.json()}

    # Register APF
    ${register_user_info_publisher}=    Provider Default Registration

    # Retrieve Security context can setup by parameters if authenticationInfo and authorizationInfo are needed at response.
    # ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}?authenticationInfo=true&authorizationInfo=true
    ${resp}=    Get Request Capif
@@ -161,7 +227,22 @@ Retrieve the Security Context of an API Invoker with invalid apfId
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -190,7 +271,22 @@ Delete the Security Context of an API Invoker
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -200,9 +296,6 @@ Delete the Security Context of an API Invoker

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

    # Register APF
    ${register_user_info_publisher}=    Provider Default Registration

    # Remove Security Context
    ${resp}=    Delete Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
@@ -230,7 +323,22 @@ Delete the Security Context of an API Invoker with Invoker entity role
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -295,9 +403,22 @@ Update the Security Context of an API Invoker
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -312,7 +433,12 @@ Update the Security Context of an API Invoker
    ${security_context}=    Set Variable    ${resp.json()}

    # Update Security Context
    ${request_body}=    Create Service Security Body    http://robot.testing2
    ${request_body}=    Create Service Security Default Body
    ...    http://robot.testing2
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ...    authentication_info=authenticationInfo
    ...    authorization_info=authorizationInfo
    ${resp}=    Post Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}/update
    ...    json=${request_body}
@@ -341,7 +467,22 @@ Update the Security Context of an API Invoker with Provider entity role
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -351,9 +492,6 @@ Update the Security Context of an API Invoker with Provider entity role

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

    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration

    ${resp}=    Post Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}/update
    ...    json=${request_body}
@@ -371,9 +509,21 @@ Update the Security Context of an API Invoker with Provider entity role
Update the Security Context of an API Invoker with AEF entity role and invalid apiInvokerId
    [Tags]    capif_security_api-14
    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Post Request Capif
    ...    /capif-security/v1/trustedInvokers/${API_INVOKER_NOT_VALID}/update
    ...    json=${request_body}
@@ -392,7 +542,22 @@ Update the Security Context of an API Invoker with invalid apiInvokerID
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ${resp}=    Post Request Capif
    ...    /capif-security/v1/trustedInvokers/${API_INVOKER_NOT_VALID}/update
    ...    json=${request_body}
@@ -478,7 +643,24 @@ Revoke the authorization of the API invoker for APIs without valid apfID.
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ...    authorization_info=authorizationInfo
    ...    authentication_info=authenticationInfo
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -490,9 +672,6 @@ Revoke the authorization of the API invoker for APIs without valid apfID.

    ${security_context}=    Set Variable    ${resp.json()}

    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration

    # Revoke Security Context by Invoker
    ${request_body}=    Create Security Notification Body    ${register_user_info_invoker['api_invoker_id']}    1234
    ${resp}=    Post Request Capif
@@ -528,7 +707,25 @@ Revoke the authorization of the API invoker for APIs with invalid apiInvokerId
    # Default Invoker Registration and Onboarding
    ${register_user_info_invoker}    ${url}    ${request_body}=    Invoker Default Onboarding

    ${request_body}=    Create Service Security Body    ${NOTIFICATION_DESTINATION_URL}
    # Register Provider
    ${register_user_info_provider}=    Provider Default Registration

    # Publish Service API
    ${service_api_description_published_1}    ${resource_url}    ${request_body}=    Publish Service Api
    ...    ${register_user_info_provider}
    ...    service_1

    # Store apiId1
    ${service_api_id_1}=    Set Variable    ${service_api_description_published_1['apiId']}

    # Create Security Context
    ${request_body}=    Create Service Security Default Body
    ...    ${NOTIFICATION_DESTINATION_URL}
    ...    aef_id=${register_user_info_provider['aef_id']}
    ...    api_id=${service_api_id_1}
    ...    authentication_info=authenticationInfo
    ...    authorization_info=authorizationInfo
    ...    authorization_info=authorizationInfo
    ${resp}=    Put Request Capif
    ...    /capif-security/v1/trustedInvokers/${register_user_info_invoker['api_invoker_id']}
    ...    json=${request_body}
@@ -540,9 +737,6 @@ Revoke the authorization of the API invoker for APIs with invalid apiInvokerId

    ${security_context}=    Set Variable    ${resp.json()}

    # Register Provider
    ${register_user_info_publisher}=    Provider Default Registration

    ${request_body}=    Create Security Notification Body    ${API_INVOKER_NOT_VALID}    1234
    ${resp}=    Post Request Capif
    ...    /capif-security/v1/trustedInvokers/${API_INVOKER_NOT_VALID}/delete
+98 −9
Original line number Diff line number Diff line
def create_service_security_body(notification_destination, aef_id=None, api_id=None):
def create_service_security_default_body(
        notification_destination,
        supported_features="0",
        interface_details=None,
        aef_id=None,
        api_id=None,
        authentication_info=None,
        authorization_info=None,
        grant_type=None,
        pref_security_methods=["PSK", "PKI", "OAUTH"],
        sel_security_method=None,
        request_websocket_uri=None,
        websocket_uri=None):
    data = {
        "notificationDestination": notification_destination,
        "supportedFeatures": "fffffff",
        "supportedFeatures": supported_features
    }
    security_info = list()
    security_info.append(
        create_security_info(aef_id=aef_id,
                             interface_details=interface_details,
                             api_id=api_id,
                             authentication_info=authentication_info,
                             authorization_info=authorization_info,
                             grant_type=grant_type,
                             pref_security_methods=pref_security_methods,
                             sel_security_method=sel_security_method))
    data['securityInfo'] = security_info
    if request_websocket_uri is not None or websocket_uri is not None:
        data['websockNotifConfig'] = create_web_sock_notif_config(
            request_websocket_uri, websocket_uri)
    return data


def create_service_security_body(notification_destination,
                                 supported_features,
                                 security_info=None,
                                 aef_id=None,
                                 api_id=None,
                                 authentication_info=None,
                                 authorization_info=None):
    data = {
        "notificationDestination": notification_destination,
        "supportedFeatures": supported_features,
        "securityInfo": [{
            "authenticationInfo": "authenticationInfo",
            "authorizationInfo": "authorizationInfo",
@@ -20,7 +60,12 @@ def create_service_security_body(notification_destination, aef_id=None, api_id=N
        "requestTestNotification": True
    }

    if aef_id != None and api_id != None:
    if aef_id is not None and api_id is not None:
        security_info = dict()
        if authentication_info is not None:
            security_info['authenticationInfo'] = authentication_info
        if authorization_info is not None:
            security_info['authorizationInfo'] = authorization_info
        data['securityInfo'].append({
            "authenticationInfo": "authenticationInfo",
            "authorizationInfo": "authorizationInfo",
@@ -32,6 +77,48 @@ def create_service_security_body(notification_destination, aef_id=None, api_id=N
    return data


def create_security_info(
        aef_id=None,
        interface_details=None,
        api_id=None,
        authentication_info=None,
        authorization_info=None,
        grant_type=None,
        pref_security_methods=None,
        sel_security_method=None):
    # aef_id or interface_details must be set.
    # authentication_info, authorization_info, grant_type, sel_security_method
    # only should be present in repsonse from CCF
    data = dict()
    if aef_id is not None:
        data["aefId"] = aef_id
    if interface_details is not None:
        data['interfaceDetails'] = interface_details
    if api_id is not None:
        data['apiId'] = api_id
    if authentication_info is not None:
        data['authenticationInfo'] = authentication_info
    if authorization_info is not None:
        data['authorizationInfo'] = authorization_info
    if grant_type is not None:
        data['grantType'] = grant_type
    if pref_security_methods is not None:
        data['prefSecurityMethods'] = pref_security_methods
    if sel_security_method is not None:
        data['selSecurityMethod'] = sel_security_method

    return data


def create_web_sock_notif_config(request_websocket_uri=None, websocket_uri=None):
    data = dict()
    if request_websocket_uri is not None:
        data['requestWebsocketUri'] = request_websocket_uri
    if websocket_uri is not None:
        data['websocketUri'] = websocket_uri
    return data


def create_service_security_from_discover_response(notification_destination, discover_response):
    data = {
        "notificationDestination": notification_destination,
@@ -43,7 +130,8 @@ def create_service_security_from_discover_response(notification_destination, dis
        },
        "requestTestNotification": True
    }
    service_api_descriptions = discover_response.json()['serviceAPIDescriptions']
    service_api_descriptions = discover_response.json()[
        'serviceAPIDescriptions']
    for service_api_description in service_api_descriptions:
        for aef_profile in service_api_description['aefProfiles']:
            data['securityInfo'].append({
@@ -72,7 +160,6 @@ def create_security_notification_body(api_invoker_id, api_ids, cause="OVERLIMIT_
    if aef_id != None:
        data['aefId'] = aef_id


    return data


@@ -88,9 +175,11 @@ def create_access_token_req_body(client_id, scope, client_secret=None, grant_typ

    return data


def get_api_ids_from_discover_response(discover_response):
    api_ids = []
    service_api_descriptions = discover_response.json()['serviceAPIDescriptions']
    service_api_descriptions = discover_response.json()[
        'serviceAPIDescriptions']
    for service_api_description in service_api_descriptions:
        api_ids.append(service_api_description['apiId'])
    return api_ids