Select Git revision
6276aba3 to v2.0.0-release in public with MkDocs 1.6.1 and mike 2.1.3
Jorge Moratinos authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
index.html 37.07 KiB
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="ETSI SDG OCF Documentation page">
<meta name="author" content="OpenCAPIF by ETSI">
<link rel="canonical" href="https://ocf.etsi.org/v2.0.0-release/testing/testplan/api_logging_service/">
<link rel="icon" href="../../../images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>Test Plan for CAPIF Api Logging Service - ETSI SDG OCF Documentation</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../stylesheets/extra.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#test-plan-for-capif-api-logging-service" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="ETSI SDG OCF Documentation" class="md-header__button md-logo" aria-label="ETSI SDG OCF Documentation" data-md-component="logo">
<img src="../../../images/logos/Open CAPIF Logo Screen_B_W Slogan NEG.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
ETSI SDG OCF Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Test Plan for CAPIF Api Logging Service
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://labs.etsi.org/rep/ocf" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
</div>
<div class="md-source__repository">
OCF GitLab
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="ETSI SDG OCF Documentation" class="md-nav__button md-logo" aria-label="ETSI SDG OCF Documentation" data-md-component="logo">
<img src="../../../images/logos/Open CAPIF Logo Screen_B_W Slogan NEG.png" alt="logo">
</a>
ETSI SDG OCF Documentation
</label>
<div class="md-nav__source">
<a href="https://labs.etsi.org/rep/ocf" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
</div>
<div class="md-source__repository">
OCF GitLab
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-ellipsis">
Overview
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Overview
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../releasenotes/" class="md-nav__link">
<span class="md-ellipsis">
Release Notes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis"> Getting Started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../gettingstarted/howtorun/" class="md-nav__link">
<span class="md-ellipsis">
How to Run
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Features
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Features
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../vendor-ext/vendor-ext/" class="md-nav__link">
<span class="md-ellipsis">
Vendor Extensibility
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../api-status/api-status/" class="md-nav__link">
<span class="md-ellipsis">
Api Status
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
SDK
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
SDK
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../sdk/sdk/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis"> Example Clients
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Example Clients
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../example-clients/example-clients/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Testing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Testing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Test Plan
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../robotframework/" class="md-nav__link">
<span class="md-ellipsis">
Robot Framework
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../postman/" class="md-nav__link">
<span class="md-ellipsis">
Postman
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Contribute
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Contribute
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../contribute/documenting/" class="md-nav__link">
<span class="md-ellipsis">
Documenting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../FAQ/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#test-case-1-creates-a-new-individual-capif-log-entry" class="md-nav__link">
<span class="md-ellipsis">
Test Case 1: Creates a new individual CAPIF Log Entry.
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-case-2-creates-a-new-individual-capif-log-entry-with-invalid-aefid" class="md-nav__link">
<span class="md-ellipsis">
Test Case 2: Creates a new individual CAPIF Log Entry with Invalid aefId
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-case-3-creates-a-new-individual-capif-log-entry-with-invalid-serviceapi" class="md-nav__link">
<span class="md-ellipsis">
Test Case 3: Creates a new individual CAPIF Log Entry with Invalid serviceAPI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-case-4-creates-a-new-individual-capif-log-entry-with-invalid-apiinvokerid" class="md-nav__link">
<span class="md-ellipsis">
Test Case 4: Creates a new individual CAPIF Log Entry with Invalid apiInvokerId
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-case-5-creates-a-new-individual-capif-log-entry-with-invalid-aefid-in-body" class="md-nav__link">
<span class="md-ellipsis">
Test Case 5: Creates a new individual CAPIF Log Entry with Invalid aefId in body
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="test-plan-for-capif-api-logging-service">Test Plan for CAPIF Api Logging Service</h1>
<p>At this documentation you will have all information and related files and examples of test plan for this API.</p>
<h2 id="test-case-1-creates-a-new-individual-capif-log-entry">Test Case 1: Creates a new individual CAPIF Log Entry.</h2>
<p><strong>Test ID</strong>: <strong><em>capif_api_logging-1</em></strong></p>
<p><strong>Description</strong>:</p>
<p>This test case will check that a CAPIF AEF can create log entry to Logging Service</p>
<p><strong>Pre-Conditions</strong>:</p>
<ul>
<li>CAPIF provider is pre-authorised (has valid aefId from CAPIF Authority)</li>
<li>Service exist in CAPIF</li>
<li>Invoker exist in CAPIF</li>
</ul>
<p><strong>Execution Steps</strong>:
1. Register Provider and Invoker CCF
2. Publish Service
3. Create Log Entry</p>
<p><strong>Information of Test</strong>:</p>
<ol>
<li>
<p>Perform <a href="../common_operations/#register-a-provider" title="Provider Onboarding">provider onboarding</a> and <a href="../common_operations/#onboard-an-invoker" title="Invoker Onboarding">invoker onboarding</a></p>
</li>
<li>
<p>Publish Service API at CCF:</p>
<ul>
<li>Send <strong>POST</strong> to ccf_publish_url <strong>https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis</strong></li>
<li>body [service api description] with apiName <strong>service_1</strong></li>
<li>Use <strong>APF Certificate</strong></li>
</ul>
</li>
<li>
<p>Log Entry:</p>
<ol>
<li>Send <strong>POST</strong> to <strong>https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs</strong></li>
<li>body <a href="invocation_log.json" title="Log Request Body">log entry request body</a></li><li>Use <strong>AEF Certificate</strong></li>
</ol>
</li>
</ol>
<p><strong>Expected Result</strong>:</p>
<ol>
<li>Response to Logging Service must accomplish:<ol>
<li><strong>201 Created</strong></li>
<li>Response Body must follow <strong>InvocationLog</strong> data structure with:<ul>
<li>aefId</li>
<li>apiInvokerId</li>
<li>logs</li>
</ul>
</li>
<li>Response Header <strong>Location</strong> must be received with URI to new resource created, following this structure: <strong>{apiRoot}/api-invocation-logs/v1/{aefId}/logs/{logId}</strong></li>
</ol>
</li>
</ol>
<h2 id="test-case-2-creates-a-new-individual-capif-log-entry-with-invalid-aefid">Test Case 2: Creates a new individual CAPIF Log Entry with Invalid aefId</h2>
<p><strong>Test ID</strong>: <strong><em>capif_api_logging-2</em></strong></p>
<p><strong>Description</strong>:</p>
<p>This test case will check that a CAPIF subscriber (AEF) cannot create Log Entry without valid aefId</p>
<p><strong>Pre-Conditions</strong>:</p>
<ul>
<li>CAPIF provider is not pre-authorised (has not valid aefId from CAPIF Authority)</li>
<li>Service exist in CAPIF</li>
<li>Invoker exist in CAPIF</li>
</ul>
<p><strong>Execution Steps</strong>:
1. Register Provider and Invoker CCF
2. Publish Service
3. Create Log Entry</p>
<p><strong>Information of Test</strong>:</p>
<ol>
<li>
<p>Perform <a href="../common_operations/#register-a-provider" title="Provider Onboarding">provider onboarding</a> and <a href="../common_operations/#onboard-an-invoker" title="Invoker Onboarding">invoker onboarding</a></p>
</li>
<li>
<p>Publish Service API at CCF:</p>
<ul>
<li>Send <strong>POST</strong> to ccf_publish_url <strong>https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis</strong></li>
<li>body [service api description] with apiName <strong>service_1</strong></li>
<li>Use <strong>APF Certificate</strong></li>
</ul>
</li>
<li>
<p>Log Entry:</p>
<ol>
<li>Send <strong>POST</strong> to <strong>https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{not-valid-aefId}/logs</strong></li>
<li>body <a href="invocation_log.json" title="Log Request Body">log entry request body</a></li>
<li>Use <strong>AEF Certificate</strong></li>
</ol>
</li>
</ol>
<p><strong>Expected Result</strong>:</p>
<ol>
<li>Response to Logging Service must accomplish:<ol>
<li><strong>404 Not Found</strong></li>
<li>Error Response Body must accomplish with <strong>ProblemDetails</strong> data structure with:<ul>
<li>status 404</li>
<li>title with message "Not Found"</li>
<li>detail with message "Exposer not exist".</li>
<li>cause with message "Exposer id not found".</li>
</ul>
</li>
</ol>
</li>
</ol>
<h2 id="test-case-3-creates-a-new-individual-capif-log-entry-with-invalid-serviceapi">Test Case 3: Creates a new individual CAPIF Log Entry with Invalid serviceAPI</h2>
<p><strong>Test ID</strong>: <strong><em>capif_api_logging-3</em></strong></p><p><strong>Description</strong>:</p>
<p>This test case will check that a CAPIF subscriber (AEF) cannot create Log Entry without valid aefId</p>
<p><strong>Pre-Conditions</strong>:</p>
<ul>
<li>CAPIF subscriber is pre-authorised (has valid aefId from CAPIF Authority)</li>
</ul>
<p><strong>Execution Steps</strong>:
1. Register Provider and Invoker CCF
2. Publish Service
3. Create Log Entry</p>
<p><strong>Information of Test</strong>:</p>
<ol>
<li>
<p>Perform <a href="../common_operations/#register-a-provider" title="Provider Onboarding">provider onboarding</a> and <a href="../common_operations/#onboard-an-invoker" title="Invoker Onboarding">invoker onboarding</a></p>
</li>
<li>
<p>Publish Service API at CCF:</p>
<ul>
<li>Send <strong>POST</strong> to ccf_publish_url <strong>https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis</strong></li>
<li>body [service api description] with apiName <strong>service_1</strong></li>
<li>Use <strong>APF Certificate</strong></li>
</ul>
</li>
<li>
<p>Log Entry:</p>
<ol>
<li>Send <strong>POST</strong> to <strong>https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs</strong></li>
<li>body [log entry request body with serviceAPI apiName apiId not valid]</li>
<li>Use <strong>AEF Certificate</strong></li>
</ol>
</li>
</ol>
<p><strong>Expected Result</strong>:</p>
<ol>
<li>Response to Logging Service must accomplish:<ol>
<li><strong>404 Not Found</strong></li>
<li>Error Response Body must accomplish with <strong>ProblemDetails</strong> data structure with:<ul>
<li>status 404</li>
<li>title with message "Not Found"</li>
<li>detail with message "Invoker not exist".</li>
<li>cause with message "Invoker id not found".</li>
</ul>
</li>
</ol>
</li>
</ol>
<h2 id="test-case-4-creates-a-new-individual-capif-log-entry-with-invalid-apiinvokerid">Test Case 4: Creates a new individual CAPIF Log Entry with Invalid apiInvokerId</h2>
<p><strong>Test ID</strong>: <strong><em>capif_api_logging-4</em></strong></p>
<p><strong>Description</strong>:</p>
<p>This test case will check that a CAPIF subscriber (AEF) cannot create Log Entry without valid aefId</p>
<p><strong>Pre-Conditions</strong>:</p>
<ul>
<li>CAPIF subscriber is pre-authorised (has valid aefId from CAPIF Authority)</li>
</ul>
<p><strong>Execution Steps</strong>:
1. Register Provider and Invoker CCF
2. Publish Service
3. Create Log Entry</p>
<p><strong>Information of Test</strong>:</p>
<ol>
<li>
<p>Perform <a href="../common_operations/#register-a-provider" title="Provider Onboarding">provider onboarding</a> and <a href="../common_operations/#onboard-an-invoker" title="Invoker Onboarding">invoker onboarding</a></p>
</li>
<li>
<p>Publish Service API at CCF:</p>
<ul>
<li>Send <strong>POST</strong> to ccf_publish_url <strong>https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis</strong></li>
<li>body [service api description] with apiName <strong>service_1</strong></li>
<li>Use <strong>APF Certificate</strong></li>
</ul></li>
<li>
<p>Log Entry:</p>
<ol>
<li>Send <strong>POST</strong> to <strong>https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs</strong></li>
<li>body [log entry request body with invokerId not valid]</li>
<li>Use <strong>AEF Certificate</strong></li>
</ol>
</li>
</ol>
<p><strong>Expected Result</strong>:</p>
<ol>
<li>
<p>Response to Onboard request must accomplish:</p>
<ol>
<li><strong>201 Created</strong> response.</li>
<li>body returned must accomplish <strong>APIProviderEnrolmentDetails</strong> data structure.</li>
<li>For each <strong>apiProvFuncs</strong>, we must check:<ol>
<li><strong>apiProvFuncId</strong> is set</li>
<li><strong>apiProvCert</strong> under <strong>regInfo</strong> is set properly</li>
</ol>
</li>
<li>Location Header must contain the new resource URL <strong>{apiRoot}/api-provider-management/v1/registrations/{registrationId}</strong></li>
</ol>
</li>
<li>
<p>Response to Logging Service must accomplish:</p>
<ol>
<li><strong>404 Not Found</strong></li>
<li>Error Response Body must accomplish with <strong>ProblemDetails</strong> data structure with:<ul>
<li>status 404</li>
<li>title with message "Not Found"</li>
<li>detail with message "Invoker not exist".</li>
<li>cause with message "Invoker id not found".</li>
</ul>
</li>
</ol>
</li>
<li>
<p>Log Entry are not stored in CAPIF Database</p>
</li>
</ol>
<h2 id="test-case-5-creates-a-new-individual-capif-log-entry-with-invalid-aefid-in-body">Test Case 5: Creates a new individual CAPIF Log Entry with Invalid aefId in body</h2>
<p><strong>Test ID</strong>: <strong><em>capif_api_logging-5</em></strong></p>
<p><strong>Description</strong>:</p>
<p>This test case will check that a CAPIF subscriber (AEF) cannot create Log Entry without valid aefId in body</p>
<p><strong>Pre-Conditions</strong>:</p>
<ul>
<li>CAPIF provider is pre-authorised (has valid apfId from CAPIF Authority)</li>
<li>Service exist in CAPIF</li>
<li>Invoker exist in CAPIF</li>
</ul>
<p><strong>Execution Steps</strong>:
1. Register Provider and Invoker CCF
2. Publish Service
3. Create Log Entry</p>
<p><strong>Information of Test</strong>:</p>
<ol>
<li>
<p>Perform <a href="../common_operations/#register-a-provider" title="Provider Onboarding">provider onboarding</a> and <a href="../common_operations/#onboard-an-invoker" title="Invoker Onboarding">invoker onboarding</a></p>
</li>
<li>
<p>Publish Service API at CCF:</p>
<ul>
<li>Send <strong>POST</strong> to ccf_publish_url <strong>https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis</strong></li>
<li>body [service api description] with apiName <strong>service_1</strong></li>
<li>Use <strong>APF Certificate</strong></li>
</ul>
</li>
<li><p>Log Entry:</p>
<ol>
<li>Send <strong>POST</strong> to <strong>https://{CAPIF_HOSTNAME}/api-invocation-logs/v1/{aefId}/logs</strong></li>
<li>body [log entry request body with bad aefId] </li>
<li>Use <strong>AEF Certificate</strong></li>
</ol>
</li>
</ol>
<p><strong>Expected Result</strong>:</p>
<ol>
<li>Response to Logging Service must accomplish:<ol>
<li><strong>401 Unauthorized</strong></li>
<li>Error Response Body must accomplish with <strong>ProblemDetails</strong> data structure with:<ul>
<li>status 401</li>
<li>title with message "Unauthorized"</li>
<li>detail with message "AEF id not matching in request and body".</li>
<li>cause with message "Not identical AEF id".</li>
</ul>
</li>
</ol>
</li>
</ol>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2019-2024 OpenCAPIF Project
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://ocf.etsi.org/" target="_blank" rel="noopener" title="ocf.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M352 256c0 22.2-1.2 43.6-3.3 64H163.4c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64h185.3c2.2 20.4 3.3 41.8 3.3 64m28.8-64h123.1c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64m112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6 78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7 10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5 11.6 26 20.9 58.2 27 94.7m-209 0H18.6c30-74.1 93.6-130.9 172-151.6-25.5 34.2-45.3 87.7-55.3 151.6M8.1 192h123.1c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64m186.6 254.6c-11.6-26-20.9-58.2-27-94.6h176.6c-6.1 36.4-15.5 68.6-27 94.6-10.5 23.6-22.2 40.7-33.5 51.5-11.2 10.7-20.5 13.9-27.8 13.9s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6-78.4-20.7-142-77.5-172-151.6zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6 25.5-34.2 45.2-87.7 55.3-151.6h116.7z"/></svg>
</a>
<a href="https://labs.etsi.org/rep/ocf" target="_blank" rel="noopener" title="labs.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
</a>
<a href="https://www.linkedin.com/company/opencapif/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</a>
<a href="https://twitter.com/OpenCAPIF" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8l164.9-188.5L26.8 48h145.6l100.5 132.9zm-24.8 373.8h39.1L151.1 88h-42z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.instant", "navigation.instant.progress", "navigation.top", "navigation.footer", "navigation.path", "search", "search.highlight"], "search": "../../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../../../assets/javascripts/bundle.60a45f97.min.js"></script>
</body>
</html>