@@ -275,15 +279,73 @@ Mock Server received messages must accomplish:
**Description**:
This test case will check subcription to ACCESS_CONTROL_POLICY_UPDATE event by one provider.
**Pre-Conditions**:
* Two Providers are previously registered and published APIs
* Two invoker are previously registered.
***Mock Server is up and running to receive requests.**
***Mock Server is clean.**
**Execution Steps**:
1. Register ***Provider 1*** and publish ***service_1*** api:
* Store apiId1
2. Register ***Provider 2*** and publish ***service_2*** api:
* Store apiId2
3. Register and onboard ***Invoker 1***
* apiInvokerId1
4. Register and onboard ***Invoker 2***
* apiInvokerId2
6. Subscribe to events:
1. Subscription1
2. Events: ***ACCESS_CONTROL_POLICY_UPDATE***
3. EventFilter: ***[apiId1].***
4. supportedFeatures: ***C***
7. Subscribe to events:
1. Subscription2
2. Events: ***ACCESS_CONTROL_POLICY_UPDATE***
3. EventFilter: ***[apiInvokerId1].***
4. supportedFeatures: ***C***
7. Subscribe to events:
1. Subscription3
2. Events: ***ACCESS_CONTROL_POLICY_UPDATE***
3. EventFilter: ***[apiInvokerId2] and [apiId2].***
4. supportedFeatures: ***C***
8. Create Security Context Between Invoker 1 and provider 1 exposed API.
1. Store acl_provider_1
9. Create Security Context Between Invoker 2 and provider 1 exposed API.
1. Store acl_provider_1 (array will contain 2 values)
10. Create Security Context Between Invoker 1 and provider 2 exposed API.
1. Store acl_provider_2 (array will contain 2 values)
11. Create Security Context Between Invoker 2 and provider 2 exposed API.
1. Store acl_provider_2 (array will contain 2 values)
**Expected Results**:
1.**Eight Events have been received** for 3 different subscriptions.
2. Validate received events follow **EventNotification** data structure
3.**Subcription 1**:
1.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId1 and apiInvokerPolicies with Security Context between invoker 1 and provider 1 (acl_provider_1[0])
2.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId1 and apiInvokerPolicies with Security Context between invoker 2 and provider 1 (acl_provider_1[1])
3.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId2 and apiInvokerPolicies with Security Context between invoker 1 and provider 2 (acl_provider_2[0])
4.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId1 and apiInvokerPolicies with Security Context between invoker 2 and provider 2 (acl_provider_2[1])
4.**Subcription 2**:
1.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId1 and apiInvokerPolicies with Security Context between invoker 1 and provider 1 (acl_provider_1[0])
2.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId1 and apiInvokerPolicies with Security Context between invoker 1 and provider 1 (acl_provider_1[0])
3.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId2 and apiInvokerPolicies with Security Context between invoker 1 and provider 2 (acl_provider_2[0])
5.**Subcription 3**:
1.**ACCESS_CONTROL_POLICY_UPDATE**:
1. EventDetail include accCtrlPolList with apiId2 and apiInvokerPolicies with Security Context between invoker 2 and provider 2 (acl_provider_2[1])
---
## Test Case 6: Provider subscribed to ACCESS_CONTROL_POLICY_UPDATE event filtered by aefId
@@ -293,15 +355,31 @@ Mock Server received messages must accomplish:
**Description**:
This test will check ACCESS_CONTROL_POLICY_UPDATE event subscription by Provider with not valid filters.
**Pre-Conditions**:
* One Provider is previously registered.
**Execution Steps**:
1. Register ***Provider 1***.
2. Subscribe to events:
1. Subscription1
2. Events: ***ACCESS_CONTROL_POLICY_UPDATE***
3. EventFilter: ***[aef_ids].***
4. supportedFeatures: ***C***
**Expected Results**:
1. Response to subscription:
1.***400 Bad Request***
2. ProblemDetails Body with:
1. title: ***Bad Request***
2. status: ***400***
3. detail: ***Bad Param***
4. cause: ***Invalid eventFilter for event ACCESS_CONTROL_POLICY_UPDATE***
5. invalidParams: ***[{ param:eventFilter, reason: The eventFilter aef_ids for event ACCESS_CONTROL_POLICY_UPDATE are not applicable }]***
---
## Test Case 7: Provider subscribed to SERVICE_API_INVOCATION_SUCCESS and SERVICE_API_INVOCATION_FAILURE filtered by apiId, invokerId, aefId and all of them
@@ -311,15 +389,128 @@ Mock Server received messages must accomplish:
**Description**:
This test will check all possible filters options allowed for SERVICE_API_INVOCATION_SUCCESS and SERVICE_API_INVOCATION_FAILURE.
**Pre-Conditions**:
* Two Providers are previously registered and published APIs
* Two invoker are previously registered.
***Mock Server is up and running to receive requests.**
***Mock Server is clean.**
**Execution Steps**:
1. Register ***Provider 1*** and publish ***service_1*** api:
* Store apiId1
* Store aefId1
2. Register ***Provider 2*** and publish ***service_2*** api:
## Test Case 1: Service API Available filtered by apiIds
**Test ID**: ***event_filter-1***
**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, containing eventDetails, SERVICE_API_UPDATE and SERVICE_API_UNAVAILABLE after update apiStatus to empty aefIds array with **ApiStatusMonitoring** active.
**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. 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.
4. Discover Service APIs by Invoker
1. includes filter by query parameter **aef-id**
5. Invoker Subscribes to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report****active** at supported features (binary 1100-> string **C**). Filter by published **apiId**.
3. eventFilters set to [eventFilters:[{apiIds:['{API_ID}']},{apiIds:['{API_ID}']},{apiIds:['{API_ID}']}]]
3. Use **Invoker Certificate**
6. Update published Service API:
* Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}**
* Use **APF Certificate**
* body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2.
* supportedFeatures **20**
* 2 profiles, one with each aef.
* apiStatus present with empty aefIds array.
**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 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 Update published Service API at CCF:
1.**200 OK**
2. Store response with updated serviceAPIDescription.
6. Mock Server received messages must accomplish:
1.**Two Event have been received**.
2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter.
1. One should be **SERVICE_API_AVAILABLE**.
2. One should be **SERVICE_API_UPDATE**.
3. One should be **SERVICE_API_UNAVAILABLE**.
1. Response to subscription:
1.***400 Bad Request***
2. ProblemDetails Body with:
1. title: ***Bad Request***
2. status: ***400***
3. detail: ***Bad Param***
4. cause: ***Event filters provided but EnhancedEventReport is not enabled***
5. invalidParams: ***[{ param:eventFilter, reason: EnhancedEventReport is not enabled }]***