# Test Plan for CAPIF Api Provider Management
At this documentation you will have all information and related files and examples of test plan for this API.
## Test Case 1: Register Api Provider
**Test ID**: ***capif_api_provider_management-1***
**Description**:
This test case will check that Api Provider can be registered con CCF
**Pre-Conditions**:
* Provider is pre-authorised (has valid certificate from CAPIF Authority)
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
**Execution Steps**:
1. Create private and public key for provider and each function to register.
2. Register Provider.
**Expected Result**:
1. Register Provider at Provider Management:
1. **201 Created** response.
2. body returned must accomplish **APIProviderEnrolmentDetails** data structure.
3. For each **apiProvFuncs**, we must check:
1. **apiProvFuncId** is set
2. **apiProvCert** under **regInfo** is set properly
5. Location Header must contain the new resource URL *{apiRoot}/api-provider-management/v1/registrations/{registrationId}*
## Test Case 2: Register Api Provider Already registered
**Test ID**: ***capif_api_provider_management-2***
**Description**:
This test case will check that a Api Provider previously registered cannot be re-registered
**Pre-Conditions**:
* Api Provider was registered previously and there is a {registerId} for his Api Provider in the DB
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Re-Register Provider:
* Same regSec than Previous registration
**Execution Steps**:
1. Create private and public key for provider and each function to register.
2. Register Provider.
3. Re-Register Provider.
**Expected Result**:
1. Re-Register Provider:
1. **403 Forbidden** response.
2. body returned must accomplish **ProblemDetails** data structure, with:
* status 403
* title with message "Forbidden"
* detail with message "Provider already registered".
* cause with message "Identical provider reg sec".
## Test Case 3: Update Registered Api Provider
**Test ID**: ***capif_api_provider_management-3***
**Description**:
This test case will check that a Registered Api Provider can be updated
**Pre-Conditions**:
* Api Provider was registered previously and there is a {registerId} for his Api Provider in the DB
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Get Resource URL from Location
5. Update Provider:
* Send PUT to Resource URL returned at registration *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{registrationId}*
* body [provider request body] with apiProvDomInfo set to ROBOT_TESTING_MOD
* Use AMF Certificate.
**Execution Steps**:
1. Create private and public key for provider and each function to register.
2. Register Provider
3. Update Provider
**Expected Result**:
1. Register Provider:
1. **201 Created** response.
2. body returned must accomplish **APIProviderEnrolmentDetails** data structure.
3. Location Header must contain the new resource URL *{apiRoot}/api-provider-management/v1/registrations/{registrationId}*
2. Update Provider:
1. **200 OK** response.
2. body returned must accomplish **APIProviderEnrolmentDetails** data structure, with:
* apiProvDomInfo set to ROBOT_TESTING_MOD
## Test Case 4: Update Not Registered Api Provider
**Test ID**: ***capif_api_provider_management-4***
**Description**:
This test case will check that a Non-Registered Api Provider cannot be updated
**Pre-Conditions**:
* Api Provider was not registered previously
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Update Not Registered Provider:
* Send PUT *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{API_PROVIDER_NOT_REGISTERED}*
* body [provider request body]
* Use AMF Certificate.
**Execution Steps**:
1. Register Provider at CCF
3. Update Not Registered Provider
**Expected Result**:
1. Update Not Registered Provider:
1. **404 Not Found** response.
2. body returned must accomplish **ProblemDetails** data structure, with:
* status 404
* title with message "Not Found"
* detail with message "Not Exist Provider Enrolment Details".
* cause with message "Not found registrations to send this api provider details".
## Test Case 5: Partially Update Registered Api Provider
**Test ID**: ***capif_api_provider_management-5***
**Description**:
This test case will check that a Registered Api Provider can be partially updated
**Pre-Conditions**:
* Api Provider was registered previously and there is a {registerId} for his Api Provider in the DB
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Partial update provider:
* Send PATCH *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{registrationId}*
* body [provider request patch body]
* Use AMF Certificate.
**Execution Steps**:
1. Register Provider at CCF
2. Register Provider
3. Partial update provider
**Expected Result**:
1. Partial update provider at Provider Management:
1. **200 OK** response.
2. body returned must accomplish **APIProviderEnrolmentDetails** data structure, with:
* apiProvDomInfo with "ROBOT_TESTING_MOD"
## Test Case 6: Partially Update Not Registered Api Provider
**Test ID**: ***capif_api_provider_management-6***
**Description**:
This test case will check that a Non-Registered Api Provider cannot be partially updated
**Pre-Conditions**:
* Api Provider was not registered previously
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Partial update Provider:
* Send PATCH *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{API_API_PROVIDER_NOT_REGISTERED}*
* body [provider request patch body]
* Use AMF Certificate.
**Execution Steps**:
1. Register Provider at CCF
2. Register Provider
3. Partial update provider
**Expected Result**:
1. Partial update provider:
1. **404 Not Found** response.
2. body returned must accomplish **ProblemDetails** data structure, with:
* status 404
* title with message "Not Found"
* detail with message "Not Exist Provider Enrolment Details".
* cause with message "Not found registrations to send this api provider details".
## Test Case 7: Delete Registered Api Provider
**Test ID**: ***capif_api_provider_management-7***
**Description**:
This test case will check that a Registered Api Provider can be deleted
**Pre-Conditions**:
* Api Provider was registered previously
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Delete registered provider:
* Send DELETE *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{registrationId}*
* Use AMF Certificate.
**Execution Steps**:
1. Register Provider at CCF
2. Register Provider
3. Delete Provider
**Expected Result**:
1. Delete Provider:
1. **204 No Content** response.
## Test Case 8: Delete Not Registered Api Provider
**Test ID**: ***capif_api_provider_management-8***
**Description**:
This test case will check that a Non-Registered Api Provider cannot be deleted
**Pre-Conditions**:
* Api Provider was not registered previously
**Information of Test**:
1. Create public and private key at provider for provider itself and each function (apf, aef and amf)
2. Register of Provider at CCF:
* Send POST to *http://{CAPIF_HOSTNAME}:{CAPIF_HTTP_PORT}/register*
* body [provider register body]
3. Obtain Access Token:
* Send POST to *http://{CAPIF_HOSTNAME}/getauth*
* Body [provider getauth body]
4. Register Provider:
* Send POST *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations*
* body [provider request body]
* Authentication Bearer with access_token
* Store each cert in a file with according name.
5. Delete registered provider at Provider Management:
* Send DELETE *https://{CAPIF_HOSTNAME}/api-provider-management/v1/registrations/{API_PROVIDER_NOT_REGISTERED}*
* Use AMF Certificate.
**Execution Steps**:
1. Register Provider at CCF
2. Delete Provider
**Expected Result**:
1. Delete Provider:
1. **404 Not Found** response.
2. body returned must accomplish **ProblemDetails** data structure, with:
* status 404
* title with message "Not Found"
* detail with message "Not Exist Provider Enrolment Details".
* cause with message "Not found registrations to send this api provider details".
[provider register body]: ./provider_details_post_example.json "API Provider Enrolment Request"
[provider request body]: ./provider_details_post_example.json "API Provider Enrolment Request"
[provider request patch body]: ./provider_details_enrolment_details_patch_example.json "API Provider Enrolment Patch Request"
[provider getauth body]: ./provider_getauth_example.json "Get Auth Example"