# 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

**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

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

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **200 OK**
     2. Response Body must follow **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

**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

  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

**Execution Steps**:
  1. Register Provider and Invoker CCF
  2. Publish Service
  3. Get Log Entry

**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

**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

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

**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

**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

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

**Expected Result**:

  1. Response to Logging Service must accomplish:
     1. **200 OK**
     2. Response Body must follow **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-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

**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

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

**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".



[log entry request body]: ../api_logging_service/invocation_log.json "Log Request Body"

[invoker onboarding]: ../common_operations/README.md#register-an-invoker "Invoker Onboarding"

[provider onboarding]: ../common_operations/README.md#register-a-provider "Provider Onboarding"
