From 87bcddb3c05d412fd7802e39e65b32c3e6c3dfc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel=20Adorna=20Ruiz?= Date: Fri, 21 Nov 2025 16:03:10 +0100 Subject: [PATCH] Add tests for helper /getInvokers and /getProviders --- tests/features/Helper/helper.robot | 947 ++++++++++++++++++++- tests/libraries/common/bodyRequests.py | 13 +- tests/libraries/common/types.json | 92 +- tests/resources/common/basicRequests.robot | 2 + 4 files changed, 1047 insertions(+), 7 deletions(-) diff --git a/tests/features/Helper/helper.robot b/tests/features/Helper/helper.robot index b9f8300d..ca29e879 100644 --- a/tests/features/Helper/helper.robot +++ b/tests/features/Helper/helper.robot @@ -3,6 +3,7 @@ Resource /opt/robot-tests/tests/resources/common.resource Library /opt/robot-tests/tests/libraries/bodyRequests.py Library XML Library String +Library DateTime Resource /opt/robot-tests/tests/resources/common/basicRequests.robot Resource ../../resources/common.resource Resource ../../resources/common/basicRequests.robot @@ -26,4 +27,948 @@ Obtain ccfId Log CCF ID obtained: ${ccfId} Should Match Regexp ${ccfId} ^CCF[a-zA-Z0-9]+ - \ No newline at end of file + +Register invokers and filter by user uuid + [Tags] helper_2 + # Register Network App + ${register_user_infos}= Create List + ${created_invokers_per_user}= Create Dictionary + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + Set To Dictionary ${created_invokers_per_user} ${register_user_info['uuid']} 1 + END + + FOR ${user_info} IN @{register_user_infos} + + ${uuid}= Set Variable ${user_info['uuid']} + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=uuid=${uuid} + ... username=${SUPERADMIN_USERNAME} + ... access_token=${user_info['access_token']} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + + Length Should Be ${resp.json()['invokers']} ${created_invokers_per_user['${uuid}']} + FOR ${invoker} IN @{resp.json()['invokers']} + Should Be Equal ${invoker['uuid']} ${uuid} + END + END + +Register invokers and filter by invalid user uuid + [Tags] helper_3 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + END + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=uuid=an_invalid_uuid + ... username=${SUPERADMIN_USERNAME} + ... access_token=${register_user_infos[0]['access_token']} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + + Length Should Be ${resp.json()['invokers']} 0 + +Register invokers and filter by invoker id + [Tags] helper_4 + # Register Network App + ${register_user_infos}= Create List + ${invoker_ids}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + Append To List ${invoker_ids} ${resp.json()['apiInvokerId']} + END + + FOR ${invoker_id} IN @{invoker_ids} + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=api_invoker_id=${invoker_id} + ... username=${SUPERADMIN_USERNAME} + ... access_token=${register_user_infos[0]['access_token']} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + Length Should Be ${resp.json()['invokers']} 1 + Should Be Equal ${resp.json()['invokers'][0]['api_invoker_id']} ${invoker_id} + END + +Register invokers and filter by invalid invoker id + [Tags] helper_5 + # Register Network App + ${register_user_infos}= Create List + ${invoker_ids}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + Append To List ${invoker_ids} ${resp.json()['apiInvokerId']} + END + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=api_invoker_id=invalid_invoker_id + ... username=${SUPERADMIN_USERNAME} + ... access_token=${register_user_infos[0]['access_token']} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + Length Should Be ${resp.json()['invokers']} 0 + +Register invokers and request using pagination + [Tags] helper_6 + + # Register Network App + ${register_user_infos}= Create List + ${all_invoker_ids}= Create List + FOR ${i} IN RANGE 30 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + Append To List ${all_invoker_ids} ${resp.json()['apiInvokerId']} + END + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=2&page=1 + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + Length Should Be ${resp.json()['invokers']} 2 + + ${invoker_ids_retrieved}= Create List + FOR ${i} IN RANGE ${resp.json()['totalPages']} + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=2&page=${i+1} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + Length Should Be ${resp.json()['invokers']} 2 + FOR ${invoker} IN @{resp.json()['invokers']} + Append To List ${invoker_ids_retrieved} ${invoker['api_invoker_id']} + END + END + + Sort List ${all_invoker_ids} + Sort List ${invoker_ids_retrieved} + Should Be Equal ${all_invoker_ids} ${invoker_ids_retrieved} + +Register invokers and request using invalid pagination + [Tags] helper_7 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 30 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + END + Log ${register_user_infos} + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=-1 + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Should Be Equal As Integers ${resp.status_code} 400 + Should Be Equal ${resp.json()['message']} The value of the page_size parameter must be greater than 0 + +Register invokers and filter by sort_order + [Tags] helper_8 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + END + + FOR ${order} IN asc desc + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=sort_order=${order} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + + ${total_users}= Get Length ${register_user_infos} + ${expected_total_invokers}= Evaluate ${total_users} * 1 + Length Should Be ${resp.json()['invokers']} ${expected_total_invokers} + ${timestamps}= Create List + FOR ${invoker} IN @{resp.json()['invokers']} + Log Invoker onboarding date: ${invoker['onboarding_date']} + ${timestamp}= Convert Date ${invoker['onboarding_date']} + ... date_format=%a, %d %b %Y %H:%M:%S GMT + ... result_format=timestamp + Append To List ${timestamps} ${timestamp} + END + IF '${order}' == 'asc' + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}) + ELSE + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}, reverse=True) + END + Should Be Equal ${timestamps} ${expected_sorted_timestamps} + Should Be Equal ${resp.json()['sortOrder']} ${order} + Should Be Equal ${resp.json()['total']} ${expected_total_invokers} + END + +Register invokers and filter by invalid sort_order + [Tags] helper_9 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth + ... username=${INVOKER_USERNAME}_${i} role=${INVOKER_ROLE} + Append To List ${register_user_infos} ${register_user_info} + + # Send Onboarding Request + ${request_body}= Create Onboarding Notification Body + ... http://${CAPIF_CALLBACK_IP}:${CAPIF_CALLBACK_PORT}/netapp_callback + ... ${register_user_info['csr_request']} + ... ${INVOKER_USERNAME}_${i} + ... invoker_${i}_0 + ${resp}= Post Request Capif + ... ${register_user_info['ccf_onboarding_url']} + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIInvokerEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${INVOKER_USERNAME}_${i} + Check Location Header ${resp} ${LOCATION_INVOKER_RESOURCE_REGEX} + # Store dummy signed certificate + Store In File ${INVOKER_USERNAME}_${i}.crt ${resp.json()['onboardingInformation']['apiInvokerCertificate']} + END + + ${resp}= Get Request Capif + ... /helper/getInvokers + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=sort_order=invalid_order + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 InvokersResponse + + ${total_users}= Get Length ${register_user_infos} + ${expected_total_invokers}= Evaluate ${total_users} * 1 + Length Should Be ${resp.json()['invokers']} ${expected_total_invokers} + ${timestamps}= Create List + FOR ${invoker} IN @{resp.json()['invokers']} + Log Invoker onboarding date: ${invoker['onboarding_date']} + ${timestamp}= Convert Date ${invoker['onboarding_date']} + ... date_format=%a, %d %b %Y %H:%M:%S GMT + ... result_format=timestamp + Append To List ${timestamps} ${timestamp} + END + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}) + Should Be Equal ${timestamps} ${expected_sorted_timestamps} + Should Be Equal ${resp.json()['total']} ${expected_total_invokers} + +###################################### + +Register providers and filter by user uuid + [Tags] helper_10 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + FOR ${user_info} IN @{register_user_infos} + ${uuid}= Set Variable ${user_info['uuid']} + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=uuid=${uuid} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + + Length Should Be ${resp.json()['providers']} 1 + Should Be Equal ${resp.json()['providers'][0]['uuid']} ${uuid} + END + +Register providers and filter by invalid user uuid + [Tags] helper_11 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=uuid=invalid_uuid + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + + Length Should Be ${resp.json()['providers']} 0 + +Register providers and filter by provider id + [Tags] helper_12 + # Register Network App + ${register_user_infos}= Create List + ${provider_ids}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + Append To List ${provider_ids} ${resp.json()['apiProvDomId']} + END + + FOR ${provider_id} IN @{provider_ids} + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=api_prov_dom_id=${provider_id} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + + Length Should Be ${resp.json()['providers']} 1 + Should Be Equal ${resp.json()['providers'][0]['api_prov_dom_id']} ${provider_id} + END + +Register providers and filter by invalid provider id + [Tags] helper_13 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=api_prov_dom_id=invalid_provider_id + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + Length Should Be ${resp.json()['providers']} 0 + +Register providers and request using pagination + [Tags] helper_14 + + # Register Network App + ${register_user_infos}= Create List + ${all_provider_ids}= Create List + FOR ${i} IN RANGE 30 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + Append To List ${all_provider_ids} ${resp.json()['apiProvDomId']} + END + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=2&page=1 + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + Length Should Be ${resp.json()['providers']} 2 + + ${provider_ids_retrieved}= Create List + FOR ${i} IN RANGE ${resp.json()['totalPages']} + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=2&page=${i+1} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + Length Should Be ${resp.json()['providers']} 2 + FOR ${provider} IN @{resp.json()['providers']} + Append To List ${provider_ids_retrieved} ${provider['api_prov_dom_id']} + END + END + + Sort List ${all_provider_ids} + Sort List ${provider_ids_retrieved} + Should Be Equal ${all_provider_ids} ${provider_ids_retrieved} + +Register providers and request using invalid pagination + [Tags] helper_15 + + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 30 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=page_size=-1&page=1 + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Should Be Equal As Integers ${resp.status_code} 400 + Should Be Equal ${resp.json()['message']} The value of the page_size parameter must be greater than 0 + +Register providers and filter by sort_order + [Tags] helper_16 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 30 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + FOR ${order} IN asc desc + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=sort_order=${order} + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + + ${total_users}= Get Length ${register_user_infos} + ${expected_total_providers}= Evaluate ${total_users} * 1 + Length Should Be ${resp.json()['providers']} ${expected_total_providers} + ${timestamps}= Create List + FOR ${provider} IN @{resp.json()['providers']} + Log Provider onboarding date: ${provider['onboarding_date']} + ${timestamp}= Convert Date ${provider['onboarding_date']} + ... date_format=%a, %d %b %Y %H:%M:%S GMT + ... result_format=timestamp + Append To List ${timestamps} ${timestamp} + END + IF '${order}' == 'asc' + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}) + ELSE + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}, reverse=True) + END + Should Be Equal ${timestamps} ${expected_sorted_timestamps} + Should Be Equal ${resp.json()['sortOrder']} ${order} + Should Be Equal ${resp.json()['total']} ${expected_total_providers} + END + +Register providers and filter by invalid sort_order + [Tags] helper_17 + # Register Network App + ${register_user_infos}= Create List + FOR ${i} IN RANGE 5 + ${register_user_info}= Register User At Jwt Auth Provider + ... username=${PROVIDER_USERNAME}_${i} + Append To List ${register_user_infos} ${register_user_info} + + # Create provider Registration Body + ${apf_func_details}= Create Api Provider Function Details + ... ${register_user_info['apf_username']} + ... ${register_user_info['apf_csr_request']} + ... APF + ${aef_func_details}= Create Api Provider Function Details + ... ${register_user_info['aef_username']} + ... ${register_user_info['aef_csr_request']} + ... AEF + ${amf_func_details}= Create Api Provider Function Details + ... ${register_user_info['amf_username']} + ... ${register_user_info['amf_csr_request']} + ... AMF + ${api_prov_funcs}= Create List ${apf_func_details} ${aef_func_details} ${amf_func_details} + + # Send Onboarding Request + ${request_body}= Create Api Provider Enrolment Details Body + ... ${register_user_info['access_token']} + ... ${api_prov_funcs} + + ${resp}= Post Request Capif + ... /api-provider-management/v1/registrations + ... json=${request_body} + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... access_token=${register_user_info['access_token']} + # Check Results + Check Response Variable Type And Values ${resp} 201 APIProviderEnrolmentDetails + ${url}= Parse Url ${resp.headers['Location']} + Call Method ${CAPIF_USERS} update_capif_users_dicts ${url.path} ${register_user_info['amf_username']} + Check Location Header ${resp} ${LOCATION_PROVIDER_RESOURCE_REGEX} + + FOR ${prov} IN @{resp.json()['apiProvFuncs']} + Store In File ${prov['apiProvFuncInfo']}.crt ${prov['regInfo']['apiProvCert']} + END + END + + ${resp}= Get Request Capif + ... /helper/getProviders + ... server=${CAPIF_HTTPS_URL} + ... verify=ca.crt + ... params=sort_order=invalid_order + ... username=${SUPERADMIN_USERNAME} + + # Check Results + Check Response Variable Type And Values ${resp} 200 ProvidersResponse + + ${total_users}= Get Length ${register_user_infos} + ${expected_total_providers}= Evaluate ${total_users} * 1 + Length Should Be ${resp.json()['providers']} ${expected_total_providers} + ${timestamps}= Create List + FOR ${provider} IN @{resp.json()['providers']} + Log Provider onboarding date: ${provider['onboarding_date']} + ${timestamp}= Convert Date ${provider['onboarding_date']} + ... date_format=%a, %d %b %Y %H:%M:%S GMT + ... result_format=timestamp + Append To List ${timestamps} ${timestamp} + END + ${expected_sorted_timestamps}= Evaluate sorted(${timestamps}) + Should Be Equal ${timestamps} ${expected_sorted_timestamps} + Should Be Equal ${resp.json()['total']} ${expected_total_providers} diff --git a/tests/libraries/common/bodyRequests.py b/tests/libraries/common/bodyRequests.py index 87228cfa..d0ea6210 100644 --- a/tests/libraries/common/bodyRequests.py +++ b/tests/libraries/common/bodyRequests.py @@ -11,29 +11,32 @@ def check_variable(input, data_type): print(input) print(type(input)) print(data_type) + allowed_types = [t.strip() for t in data_type.split("|")] + if "None" in allowed_types and input is None: + return True if isinstance(input, list): for one in input: check_variable(one, data_type) return True - if data_type == "string": + if "string" in allowed_types: if isinstance(input, str): return True else: raise Exception("variable is not string type") - elif data_type == "integer": + elif "integer" in allowed_types: if isinstance(input, int): return True else: raise Exception("variable is not integer type") - elif data_type == "boolean": + elif "boolean" in allowed_types: if isinstance(input, boolean): return True else: raise Exception("variable is not integer type") - elif data_type == "URI": + elif "URI" in allowed_types: check_uri(input, data_type) return True - elif data_type == "URI_reference": + elif "URI_reference" in allowed_types: check_uri(input, data_type) return True elif data_type not in capif_types.keys(): diff --git a/tests/libraries/common/types.json b/tests/libraries/common/types.json index 076d833f..cc4577c4 100644 --- a/tests/libraries/common/types.json +++ b/tests/libraries/common/types.json @@ -729,6 +729,96 @@ "startTime": "string", "stopTime": "string" } + }, + "InvokersResponse": { + "mandatory_attributes": {}, + "optional_attributes": { + "invokers": "InvokersResponseAPIInvokerEnrolmentDetails", + "long": "integer", + "sortOrder": "string | None", + "total": "integer", + "totalPages": "integer", + "message": "string" + } + }, + "InvokersResponseAPIInvokerEnrolmentDetails": { + "mandatory_attributes": { + "api_invoker_id": "string", + "onboarding_information": "InvokersResponseOnboardingInformation", + "api_invoker_information": "string", + "notification_destination": "URI", + "uuid": "string" + }, + "optional_attributes": { + "request_test_notification": "boolean", + "websock_notif_config": "InvokersResponseWebsockNotifConfig", + "api_invoker_information": "string", + "supported_features": "SupportedFeatures", + "api_list": "ServiceAPIDescription | None", + "exp_time": "string | None", + "onboarding_date": "string", + "username": "string", + "api_invoker_certificate": "string" + } + }, + "InvokersResponseOnboardingInformation": { + "mandatory_attributes": { + "api_invoker_public_key": "string" + }, + "optional_attributes": { + "api_invoker_certificate": "string", + "onboarding_secret": "string" + } + }, + "InvokersResponseWebsockNotifConfig": { + "mandatory_attributes": {}, + "optional_attributes": { + "websocket_uri": "URI_reference", + "request_websocket_uri": "boolean" + } + }, + "ProvidersResponse": { + "mandatory_attributes": {}, + "optional_attributes": { + "providers": "ProvidersResponseAPIProviderEnrolmentDetails", + "long": "integer", + "sortOrder": "string | None", + "total": "integer", + "totalPages": "integer", + "message": "string" + } + }, + "ProvidersResponseAPIProviderEnrolmentDetails": { + "mandatory_attributes": { + "reg_sec": "string", + "api_prov_dom_id": "string" + }, + "optional_attributes": { + "api_prov_funcs": "ProvidersResponseAPIProviderFunctionDetails", + "api_prov_dom_info": "string", + "supp_feat": "SupportedFeatures", + "fail_reason": "string", + "api_prov_name": "string | None", + "onboarding_date": "string", + "username": "string", + "uuid": "string" + } + }, + "ProvidersResponseAPIProviderFunctionDetails": { + "mandatory_attributes": { + "reg_info": "ProvidersResponseRegistrationInformation", + "api_prov_func_role": "ApiProviderFuncRole", + "api_prov_func_id": "string" + }, + "optional_attributes": { + "api_prov_func_info": "string" + } + }, + "ProvidersResponseRegistrationInformation": { + "mandatory_attributes": { + "api_prov_pub_key": "string", + "api_prov_cert": "string" + }, + "optional_attributes": {} } - } diff --git a/tests/resources/common/basicRequests.robot b/tests/resources/common/basicRequests.robot index b1b350e2..77470e62 100644 --- a/tests/resources/common/basicRequests.robot +++ b/tests/resources/common/basicRequests.robot @@ -188,6 +188,7 @@ Get Request Capif ... ${verify}=${FALSE} ... ${cert}=${NONE} ... ${username}=${NONE} + ... ${params}=${NONE} ${headers}= Create CAPIF Session ${server} ${access_token} @@ -202,6 +203,7 @@ Get Request Capif ... expected_status=any ... verify=${verify} ... cert=${cert} + ... params=${params} RETURN ${resp} Get CA Vault -- GitLab