Commit 5437b2b1 authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

All event filter tests decribed

parent 975a162d
Loading
Loading
Loading
Loading
+224 −116
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ At this documentation you will have all information and related files and exampl
      2. Only one api will be obtained, store apiId at api_id.
5. Subscribe to events:
      1. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE.***
      2. EventFilter: ***apiId, apiId, apiId.***
      2. EventFilter: ***[apiId], [apiId], [apiId].***
      3. supportedFeatures: ***C***
6. Update service_1 api:
      1. apiStatus with ***aefIds*** present on ***Provider 1***.
@@ -92,19 +92,19 @@ Mock Server received messages must accomplish:
      2. Only one api will be obtained, store apiId at api_id.
5. Subscribe to events:
      1. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE.***
      2. EventFilter: ***aefIds, empty, empty.***
      2. EventFilter: ***[aefIds], [empty], [empty].***
      3. supportedFeatures: ***C***
6. Subscribe to events:
      1. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE.***
      2. EventFilter: ***empty, aefIds, empty.***
      2. EventFilter: ***[empty], [aefIds], [empty].***
      3. supportedFeatures: ***C***
7. Subscribe to events:
      1. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE.***
      2. EventFilter: ***empty, empty, aefIds.***
      2. EventFilter: ***[empty], [empty], [aefIds].***
      3. supportedFeatures: ***C***
8. Subscribe to events:
      1. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE.***
      2. EventFilter: ***empty, empty, apiInvokerIds.***
      2. EventFilter: ***[empty], [empty], [apiInvokerIds].***
      3. supportedFeatures: ***C***

**Expected Results**:
@@ -171,7 +171,7 @@ We will receive one error after each Event subscription:
4. Register and onboard ***Invoker 2***
5. Subscribe provider to events:
      1. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      2. EventFilter: ***empty, apiInvokerId1, apiInvokerId2.***
      2. EventFilter: ***[empty], [apiInvokerId1], [apiInvokerId2].***
      3. supportedFeatures: ***C***
6. Update Invoker 1:
      1. Setup new notificationDestination at invoker.
@@ -216,21 +216,25 @@ Mock Server received messages must accomplish:
2. Register and onboard ***Invoker 1***
3. Register and onboard ***Invoker 2***
4. Subscribe provider to events:
      1. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      2. EventFilter: ***aefIds, empty, empty.***
      3. supportedFeatures: ***C***
      1. Subscription 1
      2. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      3. EventFilter: ***[aefIds], [empty], [empty].***
      4. supportedFeatures: ***C***
5. Subscribe provider to events:
      1. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      2. EventFilter: ***empty, aefIds, empty.***
      3. supportedFeatures: ***C***
      1. Subscription 2
      2. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      3. EventFilter: ***[empty], [aefIds], [empty].***
      4. supportedFeatures: ***C***
6. Subscribe provider to events:
      1. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      2. EventFilter: ***empty, empty, aefIds.***
      3. supportedFeatures: ***C***
      1. Subscription 3
      2. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      3. EventFilter: ***[empty], [empty], [aefIds].***
      4. supportedFeatures: ***C***
7. Subscribe provider to events:
      1. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      2. EventFilter: ***empty, empty, apiIds.***
      3. supportedFeatures: ***C***
      1. Subscription 4
      2. Events: ***API_INVOKER_ONBOARDED, API_INVOKER_OFFBOARDED, API_INVOKER_UPDATED***
      3. EventFilter: ***[empty], [empty], [apiIds].***
      4. supportedFeatures: ***C***

**Expected Results**:

@@ -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:
      * Store apiId2
      * Store aefId2
3. Register and onboard ***Invoker 1***
      * apiInvokerId1
4. Register and onboard ***Invoker 2***
      * apiInvokerId2
6. Subscribe provider 1 to events:
      1. Subscription 1
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
7. Subscribe provider 1 to events:
      1. Subscription 2
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
8. Subscribe provider 1 to events:
      1. Subscription 3
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
9.  Subscribe provider 1 to events:
      1. Subscription 4
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
10. Subscribe provider 1 to events:
      1. Subscription 5
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
11. Subscribe provider 1 to events:
      1. Subscription 6
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
12. Subscribe provider 1 to events:
      1.  Subscription 7
      2. Events: ***SERVICE_API_INVOCATION_SUCCESS, SERVICE_API_INVOCATION_FAILURE.***
      3. EventFilter: ***[apiId1], [apiId1].***
      4. supportedFeatures: ***C***
13. Send Log entry by provider1:
      1. apiNames: [service_1]
      2. apiIds: [apiId1]
      3. aefId: aefId1
      4. apiInvokerId: apiInvokerId1
      5. results: [200, 400]
      6. Store body to **request_body_log_1**
14. Send Log entry by provider2:
      1. apiNames: [service_2]
      2. apiIds: [apiId2]
      3. aefId: aefId2
      4. apiInvokerId: apiInvokerId1
      5. results: [200]
      6. Store body to **request_body_log_2**
15. Send Log entry by provider2:
      1. apiNames: [service_2]
      2. apiIds: [apiId2]
      3. aefId: aefId2
      4. apiInvokerId: apiInvokerId2
      5. results: [200]
      6. Store body to **request_body_log_3**
16. Send Log entry by provider1:
      1. apiNames: [service_1]
      2. apiIds: [apiId1]
      3. aefId: aefId1
      4. apiInvokerId: apiInvokerId2
      5. results: [400]
      6. Store body to **request_body_log_4**

**Expected Results**:

1. **Thirteen Events have been received** for 7 different subscriptions.
2. Validate received events follow **EventNotification** data structure
3. **Subcription 1**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_1**
      2. **SERVICE_API_INVOCATION_FAILURE**:
         1. EventDetail include invocationLogs with **request_body_log_1**
      3. **SERVICE_API_INVOCATION_FAILURE**:
         1. EventDetail include invocationLogs with **request_body_log_4**
4. **Subcription 2**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_2**
      2. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_3**
5. **Subcription 3**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_1**
      2. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_1**
      3. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_2**
6. **Subcription 4**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_2**
      2. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_3**
7. **Subcription 5**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_3**
8. **Subcription 6**:
      1. **SERVICE_API_INVOCATION_FAILURE**:
         1. EventDetail include invocationLogs with **request_body_log_4**
9. **Subcription 7**:
      1. **SERVICE_API_INVOCATION_SUCCESS**:
         1. EventDetail include invocationLogs with **request_body_log_3**

---
## Test Case 8: Event Filter present with Enhanced_event_report feature not active.
@@ -329,113 +520,30 @@ Mock Server received messages must accomplish:

**Description**:

   This test will check event subscription by Invoker with eventFilter attribute but without Enhanced_event_report feature active.

**Pre-Conditions**:

   * Invoker is previously registered and onboarded.

**Execution Steps**:

1. Register and onboard ***Invoker***
2. Subscribe to events:
      2. Events: ***SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, SERVICE_API_UPDATE***
      3. EventFilter: ***[empty], [empty], [empty].***
      4. supportedFeatures: ***0***

**Expected Results**:

---

**UNDER DEVELOPMENT**
---
## 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**.
   6. Update Published API:
      1. apiStatus present with empty aefIds array.
      2. apiStatusMonitoring feature active (binary 0 0010 0000 -> string **20**)

**Information of Test**:

   1. Perform [Invoker Onboarding]
   2. Perform [Provider Registration] with 2 aefs
   3. Publish Service API at CCF:
     * 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**
   4. 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**
   5. 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**
       2. body [event subscription request body] with:
          1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']**
          2. supportedFeatures: binary 1100 -> string **C**
          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 }]***

---