# Test Plan for CAPIF Api Auditing Service
At this documentation you will have all information and related files and examples of test plan for this API.

## Test Case 1: Get CAPIF Log Entry.

**Test ID**: ***capif_api_auditing-1***

**Description**:

  This test case will check that a CAPIF AMF can get log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is pre-authorised (has valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF
  *  Log Entry exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Create Log Entry
  4. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Create Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body]
     - Use **AEF Certificate**

  4. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs?aef-id={aefId}&api-invoker-id={api-invoker-id}**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **200 OK**
     2. Response Body must follow **InvocationLogsRetrieveRes** including **InvocationLog** data structure with:
        * aefId
        * apiInvokerId
        * logs

## Test Case 2: Get CAPIF Log Entry With no Log entry in CAPIF.

**Test ID**: ***capif_api_auditing-2***

**Description**:

  This test case will check that a CAPIF AEF can create log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is pre-authorised (has valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs?aef-id={aefId}&api-invoker-id={api-invoker-id}**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **404 Not Found**
    2. Error Response Body must accomplish with **ProblemDetails** data structure with:
        * status 404
        * title with message "Not Found Log Entry in CAPIF".
        * cause with message "Not Exist Logs with the filters applied".


## Test Case 3: Get CAPIF Log Entry without aef-id and api-invoker-id.

**Test ID**: ***capif_api_auditing-3***

**Description**:

  This test case will check that a CAPIF AEF can create log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is no pre-authorised (has no valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF
  *  Log Entry exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Create Log Entry
  4. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Create Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body]
     - Use **AEF Certificate**

  4. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **400 Bad Request**
     2. Error Response Body must accomplish with **ProblemDetails** data structure with:
        * status 400
        * title with message "Bad Request"
        * detail with message "aef_id and api_invoker_id parameters are mandatory".
        * cause with message "Mandatory parameters missing".


## Test Case 4: Get CAPIF Log Entry with filtter api-version.

**Test ID**: ***capif_api_auditing-4***

**Description**:

  This test case will check that a CAPIF AMF can get log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is pre-authorised (has valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF
  *  Log Entry exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Create Log Entry
  4. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Create Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body]
     - Use **AEF Certificate**

  4. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs?aef-id={aefId}&api-invoker-id={api-invoker-id}&api-version={v1}**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **200 OK**
     2. Response Body must follow **InvocationLogsRetrieveRes** including **InvocationLog** data structure with:
        * aefId
        * apiInvokerId
        * logs


## Test Case 5: Get CAPIF Log Entry with filter api-version but not exist in log entry.

**Test ID**: ***capif_api_auditing-5***

**Description**:

  This test case will check that a CAPIF AMF can get log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is pre-authorised (has valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF
  *  Log Entry exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Create Log Entry
  4. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Create Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body]
     - Use **AEF Certificate**

  4. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs?aef-id={aefId}&api-invoker-id={api-invoker-id}&api-version={v58}**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **404 Not Found**
     2. Error Response Body must accomplish with **ProblemDetails** data structure with:
        * status 404
        * detail with message "Parameters do not match any log entry"
        * cause with message "No logs found".

## Test Case 6: Get CAPIF Multiple Log Entries.

**Test ID**: ***capif_api_auditing-6***

**Description**:

  This test case will check that a CAPIF AMF can get log entry to Logging Service

**Pre-Conditions**:

  *  CAPIF provider is pre-authorised (has valid AMF cert from CAPIF Authority)
  *  Service exist in CAPIF
  *  Invoker exist in CAPIF
  *  Log Entry exist in CAPIF

**Execution Steps**:

  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Create Log Entry
  4. Get Log Entry

**Information of Test**:

  1. Perform [provider onboarding], [invoker onboarding] 

  2. 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 apiName **service_1**
    - Use **APF Certificate**

  3. Create Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body]
     - Use **AEF Certificate**

  4. Create Other Log Entry:
     - Send **POST** to **https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs**
     - body [log entry request body] with apiInvokerId = "other"
     - Use **AEF Certificate**

  5. Get Log:
     1. Send **GET** to **https://{CAPIF_HOSTNAME}/logs/v1/apiInvocationLogs?aef-id={aefId}&api-invoker-id={api-invoker-id}**
     2. Use **AMF Certificate**

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **200 OK**
     2. Response Body must follow **InvocationLogsRetrieveRes** including **InvocationLogs** attribute on data structure with:
        * aefId
        * apiInvokerId
        * logs


[log entry request body]: ../api_logging_service/invocation_log.json "Log Request Body"
[invoker onboarding]: ../common_operations/README.md#onboard-an-invoker "Invoker Onboarding"
[provider onboarding]: ../common_operations/README.md#register-a-provider "Provider Onboarding"
[service api description]: ../api_publish_service/service_api_description_post_example.json  "Service API Description Request"
