@@ -535,6 +535,275 @@ At this documentation you will have all information and related files and exampl
1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription.
2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched.
## Test Case 18: Patch published (apiStatusMonitoring active) API with apiStatus aef1 and aef2
**Test ID**: ***api_status-18***
**Description**:
This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider (with apiStatusMonitoring active), containing eventDetails, and SERVICE_API_UPDATE after patch with apfId1 and apfId2 in apiStatus array.
**Pre-Conditions**:
* CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority)
* CAPIF provider is correctly registered with 2 aefs.
***Mock Server is up and running to receive requests.**
***Mock Server is clean.**
**Execution Steps**:
1. Register Invoker and Onboard Invoker at CCF.
2. Register Provider at CCF with 2 aefs.
3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report****active** at supported features (binary 1100-> string **C**)
4. Publish Service API at CCF:
1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**)
2. This API includes "API Status" information at **service API Description** with only aefId1.
5. Discover Service APIs by Invoker
1. includes filter by query parameter **aef-id**
6. Patch Published API:
1. apiStatus present with aefId1 and aefId2 in array.
**Information of Test**:
1. Perform [Invoker Onboarding]
2. Perform [Provider Registration] with 2 aefs
3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered:
1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions**
* Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis**
* body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2.
* supportedFeatures **020**
* 2 profiles, one with each aef.
* apiStatus with aefId1 inside array
* Use **APF Certificate**
5. Request Discover Published APIs:
* Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}**
* Param api-invoker-id is mandatory
* Use **Invoker Certificate**
6. Update published Service API:
* Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}**
* Use **APF Certificate**
* body [service api description patch] and realted with aefId1 and aefId2.
* apiStatus present with aefId1 and aefId2.
**Expected Result**:
1. Response to Onboard request must accomplish:
1.**201 Created**
2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with:
* apiInvokerId
* onboardingInformation->apiInvokerCertificate must contain the public key signed.
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}**
2. Response to Event Subscription must accomplish:
1.**201 Created**
2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}**
3. Response Body must follow **EventSubscription** data structure.
3. Response to Publish request must accomplish:
1.**201 Created**
2. Response Body must follow **ServiceAPIDescription** data structure with:
* apiId
* 2 profiles with:
* resourceName resource_1 and aefId1
* resourceName resource_2 and aefId2
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}**
4. Response without **"apiStatus"** parameter.
4. Response to Discover Request By Invoker:
1.**200 OK** response.
2. Response body must follow **DiscoveredAPIs** data structure:
* Check if DiscoveredAPIs contains the API Published previously
* Check if contains the **apiStatus** with aefId1
5. Response to Patch published Service API at CCF:
1.**200 OK**
2. Store response with updated serviceAPIDescription.
6. Mock Server received messages must accomplish:
1.**Two Events have been received**.
2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter.
1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription.
2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched.
## Test Case 19: Patch published (apiStatusMonitoring inactive) API with apiStatus aefId1 and aefId2
**Test ID**: ***api_status-19***
**Description**:
This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider (with apiStatusMonitoring inactive), containing eventDetails, and **NO SERVICE_API_UPDATE** after patch with apfId1 and apfId2 in apiStatus array, because **apiStatusMonitoring** in publish is inactive.
**Pre-Conditions**:
* CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority)
* CAPIF provider is correctly registered with 2 aefs.
***Mock Server is up and running to receive requests.**
***Mock Server is clean.**
**Execution Steps**:
1. Register Invoker and Onboard Invoker at CCF.
2. Register Provider at CCF with 2 aefs.
3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report****active** at supported features (binary 1100-> string **C**)
4. Publish Service API at CCF:
1. Supported Features with apiStatusMonitoring flag active (binary 0 0000 0000 -> string **000**)
2. This API includes "API Status" information at **service API Description** with only aefId1.
5. Discover Service APIs by Invoker
1. includes filter by query parameter **aef-id**
6. Patch Published API:
1. apiStatus present with aefId1 and aefId2 in array.
**Information of Test**:
1. Perform [Invoker Onboarding]
2. Perform [Provider Registration] with 2 aefs
3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered:
1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions**
* Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis**
* body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2.
* supportedFeatures **000**
* 2 profiles, one with each aef.
* apiStatus with aefId1 inside array
* Use **APF Certificate**
5. Request Discover Published APIs:
* Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}**
* Param api-invoker-id is mandatory
* Use **Invoker Certificate**
6. Update published Service API:
* Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}**
* Use **APF Certificate**
* body [service api description patch] and realted with aefId1 and aefId2.
* apiStatus present with aefId1 and aefId2.
**Expected Result**:
1. Response to Onboard request must accomplish:
1.**201 Created**
2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with:
* apiInvokerId
* onboardingInformation->apiInvokerCertificate must contain the public key signed.
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}**
2. Response to Event Subscription must accomplish:
1.**201 Created**
2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}**
3. Response Body must follow **EventSubscription** data structure.
3. Response to Publish request must accomplish:
1.**201 Created**
2. Response Body must follow **ServiceAPIDescription** data structure with:
* apiId
* 2 profiles with:
* resourceName resource_1 and aefId1
* resourceName resource_2 and aefId2
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}**
4. Response without **"apiStatus"** parameter.
4. Response to Discover Request By Invoker:
1.**200 OK** response.
2. Response body must follow **DiscoveredAPIs** data structure:
* Check if DiscoveredAPIs contains the API Published previously
* Check if contains the **apiStatus** with aefId1
5. Response to Patch published Service API at CCF:
1.**200 OK**
2. Store response with updated serviceAPIDescription.
6. Mock Server received messages must accomplish:
1.**Two Events have been received**.
2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter.
1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription.
2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched.
## Test Case 20: Patch published without aefs available API with apiStatus only aef2
**Test ID**: ***api_status-20***
**Description**:
This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_UNAVAILABLE in mockserver when api is published by a provider (with **apiStatusMonitoring** active), containing eventDetails, and SERVICE_API_UPDATE and SERVICE_API_AVAILABLE after patch with apfId1 and apfId2 in apiStatus array, becasue change from unavailable to available and also serviceAPIDescription is updated.
**Pre-Conditions**:
* CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority)
* CAPIF provider is correctly registered with 2 aefs.
***Mock Server is up and running to receive requests.**
***Mock Server is clean.**
**Execution Steps**:
1. Register Invoker and Onboard Invoker at CCF.
2. Register Provider at CCF with 2 aefs.
3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report****active** at supported features (binary 1100-> string **C**)
4. Publish Service API at CCF:
1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**)
2. This API includes "API Status" information at **service API Description** with empty array.
5. Discover Service APIs by Invoker
1. includes filter by query parameter **aef-id**
6. Patch Published API:
1. apiStatus present with aefId1 and aefId2 in array.
**Information of Test**:
1. Perform [Invoker Onboarding]
2. Perform [Provider Registration] with 2 aefs
3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered:
1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions**
* Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis**
* body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2.
* supportedFeatures **020**
* 2 profiles, one with each aef.
* apiStatus empty array
* Use **APF Certificate**
5. Request Discover Published APIs:
* Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}**
* Param api-invoker-id is mandatory
* Use **Invoker Certificate**
6. Update published Service API:
* Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}**
* Use **APF Certificate**
* body [service api description patch] and realted with aefId1 and aefId2.
* apiStatus present with aefId1 and aefId2.
**Expected Result**:
1. Response to Onboard request must accomplish:
1.**201 Created**
2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with:
* apiInvokerId
* onboardingInformation->apiInvokerCertificate must contain the public key signed.
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}**
2. Response to Event Subscription must accomplish:
1.**201 Created**
2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}**
3. Response Body must follow **EventSubscription** data structure.
3. Response to Publish request must accomplish:
1.**201 Created**
2. Response Body must follow **ServiceAPIDescription** data structure with:
* apiId
* 2 profiles with:
* resourceName resource_1 and aefId1
* resourceName resource_2 and aefId2
3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}**
4. Response without **"apiStatus"** parameter.
4. Response to Discover Request By Invoker:
1.**200 OK** response.
2. Response body must follow **DiscoveredAPIs** data structure:
* Check if DiscoveredAPIs contains the API Published previously
* Check if contains the **apiStatus** with aefId1
5. Response to Patch published Service API at CCF:
1.**200 OK**
2. Store response with updated serviceAPIDescription.
6. Mock Server received messages must accomplish:
1.**Two Events have been received**.
2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter.
1. One should be **SERVICE_API_UNAVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription.
2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched.
3. Last one should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription.
[service api description]:../api_publish_service/service_api_description_post_example.json"Service API Description Request"