From 026b4df479876c252d3d5ff6c49d1fdc0dea698d Mon Sep 17 00:00:00 2001
From: Pelayo Torres <pelayo.torresalonso@telefonica.com>
Date: Wed, 13 Nov 2024 11:40:11 +0100
Subject: [PATCH] New Requests

---
 .../postman/CAPIF.postman_collection.json     | 382 +++++++++++++++++-
 ...PIF_ENVIRONMENTS.postman_environment.json} |  14 +-
 doc/testing/postman/Postman-Test.zip          | Bin 21073 -> 12598 bytes
 doc/testing/postman/README.md                 |   2 +-
 4 files changed, 389 insertions(+), 9 deletions(-)
 rename doc/testing/postman/{CAPIF.postman_environment.json => CAPIF_ENVIRONMENTS.postman_environment.json} (94%)

diff --git a/doc/testing/postman/CAPIF.postman_collection.json b/doc/testing/postman/CAPIF.postman_collection.json
index f1ce840..eab0e7b 100644
--- a/doc/testing/postman/CAPIF.postman_collection.json
+++ b/doc/testing/postman/CAPIF.postman_collection.json
@@ -1,10 +1,9 @@
 {
 	"info": {
-		"_postman_id": "5fe9117c-4ab3-4170-b7f0-6ac0e08e3320",
+		"_postman_id": "7b685345-a379-40f5-8740-ad92d38d1750",
 		"name": "CAPIF",
 		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
-		"_exporter_id": "31608242",
-		"_collection_link": "https://red-comet-993867.postman.co/workspace/Team-Workspace~bfc7c442-a60c-4bb1-8730-fdabc2df89b9/collection/31608242-5fe9117c-4ab3-4170-b7f0-6ac0e08e3320?action=share&source=collection_link&creator=31608242"
+		"_exporter_id": "31608242"
 	},
 	"item": [
 		{
@@ -363,7 +362,7 @@
 				],
 				"body": {
 					"mode": "raw",
-					"raw": "\n{\n    \"apiName\": \"hello_api_demo_v6\",\n    \"aefProfiles\": [\n      {\n        \"aefId\": \"{{AEF_ID}}\",\n        \"versions\": [\n          {\n            \"apiVersion\": \"v1\",\n            \"expiry\": \"2021-11-30T10:32:02.004Z\",\n            \"resources\": [\n              {\n                \"resourceName\": \"hello-endpoint\",\n                \"commType\": \"REQUEST_RESPONSE\",\n                \"uri\": \"/hello\",\n                \"custOpName\": \"string\",\n                \"operations\": [\n                  \"POST\"\n                ],\n                \"description\": \"Endpoint to receive a welcome message\"\n              }\n            ],\n            \"custOperations\": [\n              {\n                \"commType\": \"REQUEST_RESPONSE\",\n                \"custOpName\": \"string\",\n                \"operations\": [\n                  \"POST\"\n                ],\n                \"description\": \"string\"\n              }\n            ]\n          }\n        ],\n        \"protocol\": \"HTTP_1_1\",\n        \"dataFormat\": \"JSON\",\n        \"securityMethods\": [\"OAUTH\"],\n        \"interfaceDescriptions\": [\n          {\n            \"ipv4Addr\": \"localhost\",\n            \"port\": 8088,\n            \"securityMethods\": [\"OAUTH\"]\n          }\n        ]\n      }\n    ],\n    \"description\": \"Hello api services\",\n    \"supportedFeatures\": \"fffff\",\n    \"shareableInfo\": {\n      \"isShareable\": true,\n      \"capifProvDoms\": [\n        \"string\"\n      ]\n    },\n    \"serviceAPICategory\": \"string\",\n    \"apiSuppFeats\": \"fffff\",\n    \"pubApiPath\": {\n      \"ccfIds\": [\n        \"string\"\n      ]\n    },\n    \"ccfId\": \"string\",\n    \"apiStatus\": {\n        \"aefIds\": []\n    }\n  }",
+					"raw": "\n{\n    \"apiName\": \"hello_api_demo\",\n    \"aefProfiles\": [\n      {\n        \"aefId\": \"{{AEF_ID}}\",\n        \"versions\": [\n          {\n            \"apiVersion\": \"v1\",\n            \"expiry\": \"2021-11-30T10:32:02.004Z\",\n            \"resources\": [\n              {\n                \"resourceName\": \"hello-endpoint\",\n                \"commType\": \"REQUEST_RESPONSE\",\n                \"uri\": \"/hello\",\n                \"custOpName\": \"string\",\n                \"operations\": [\n                  \"POST\"\n                ],\n                \"description\": \"Endpoint to receive a welcome message\"\n              }\n            ],\n            \"custOperations\": [\n              {\n                \"commType\": \"REQUEST_RESPONSE\",\n                \"custOpName\": \"string\",\n                \"operations\": [\n                  \"POST\"\n                ],\n                \"description\": \"string\"\n              }\n            ]\n          }\n        ],\n        \"protocol\": \"HTTP_1_1\",\n        \"dataFormat\": \"JSON\",\n        \"securityMethods\": [\"OAUTH\"],\n        \"interfaceDescriptions\": [\n          {\n            \"ipv4Addr\": \"localhost\",\n            \"port\": 8088,\n            \"securityMethods\": [\"OAUTH\"]\n          }\n        ]\n      }\n    ],\n    \"description\": \"Hello api services\",\n    \"supportedFeatures\": \"fffff\",\n    \"shareableInfo\": {\n      \"isShareable\": true,\n      \"capifProvDoms\": [\n        \"string\"\n      ]\n    },\n    \"serviceAPICategory\": \"string\",\n    \"apiSuppFeats\": \"fffff\",\n    \"pubApiPath\": {\n      \"ccfIds\": [\n        \"string\"\n      ]\n    },\n    \"ccfId\": \"string\",\n    \"apiStatus\":{\n        \"aefIds\": [\n            \"{{AEF_ID}}\"\n        ]\n    }\n  }",
 					"options": {
 						"raw": {
 							"language": "json"
@@ -1013,6 +1012,381 @@
 				}
 			},
 			"response": []
+		},
+		{
+			"name": "provider_events",
+			"event": [
+				{
+					"listen": "prerequest",
+					"script": {
+						"exec": [
+							"setTimeout(() => {",
+							"                pm.sendRequest({",
+							"                    url: 'http://'+ pm.environment.get(\"NODE_HOSTNAME\") + ':'+ pm.environment.get(\"NODE_PORT\")+'/write_cert',",
+							"                    method: 'POST',",
+							"                    header: 'Content-Type:application/json',",
+							"                    encoding: 'binary',",
+							"                    body: {",
+							"                        mode: 'raw',",
+							"                        raw: {cert: pm.environment.get('AMF_CERT'), key:pm.environment.get('AMF_KEY')}",
+							"                    }",
+							"                }, function (err, response) {",
+							"                    console.log(response)",
+							"                });",
+							"            }, 5000);"
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				},
+				{
+					"listen": "test",
+					"script": {
+						"exec": [
+							"var res = JSON.parse(responseBody);",
+							"if (pm.response.code == 201){",
+							"    ",
+							"    let locationHeader = pm.response.headers.get(\"location\");",
+							"",
+							"    if (locationHeader) {",
+							"        let match = locationHeader.match(/\\/([^\\/]+)$/);",
+							"        ",
+							"        if (match) {",
+							"            pm.environment.set(\"EVENTS_ID\", match[1]);",
+							"        } else {",
+							"            console.log(\"No ID found in the URL\");",
+							"        }",
+							"    } else {",
+							"        console.log(\"The 'location' header is not present in the response\");",
+							"    }",
+							"",
+							"}"
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				}
+			],
+			"request": {
+				"method": "POST",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "{\n    \"events\": [\n        \"SERVICE_API_AVAILABLE\",\n        \"SERVICE_API_UNAVAILABLE\"\n    ],\n    \"notificationDestination\": \"http://host.docker.internal:2222/\"\n}",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/capif-events/v1/{{AMF_ID}}/subscriptions",
+					"protocol": "https",
+					"host": [
+						"{{CAPIF_HOSTNAME}}"
+					],
+					"port": "{{CAPIF_PORT}}",
+					"path": [
+						"capif-events",
+						"v1",
+						"{{AMF_ID}}",
+						"subscriptions"
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "provider_update_events",
+			"event": [
+				{
+					"listen": "prerequest",
+					"script": {
+						"exec": [
+							"setTimeout(() => {",
+							"                pm.sendRequest({",
+							"                    url: 'http://'+ pm.environment.get(\"NODE_HOSTNAME\") + ':'+ pm.environment.get(\"NODE_PORT\")+'/generate_csr',",
+							"                    method: 'POST',",
+							"                    header: 'Content-Type:application/json',",
+							"                    encoding: 'binary',",
+							"                    body: {",
+							"                        mode: 'raw',",
+							"                        raw: {cert: pm.environment.get('AMF_CERT'), key:pm.environment.get('AMF_KEY')}",
+							"                    }",
+							"                }, function (err, response) {",
+							"                    console.log(response)",
+							"                });",
+							"            }, 5000);"
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				}
+			],
+			"protocolProfileBehavior": {
+				"disabledSystemHeaders": {}
+			},
+			"request": {
+				"method": "PUT",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "{\n    \"events\": [\n        \"SERVICE_API_AVAILABLE\",\n        \"SERVICE_API_UNAVAILABLE\"\n    ],\n    \"notificationDestination\": \"http://host.docker.internal:2222/\",\n    \"supportedFeatures\":\"f\"\n}",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/capif-events/v1/{{AMF_ID}}/subscriptions/{{EVENTS_ID}}",
+					"protocol": "https",
+					"host": [
+						"{{CAPIF_HOSTNAME}}"
+					],
+					"port": "{{CAPIF_PORT}}",
+					"path": [
+						"capif-events",
+						"v1",
+						"{{AMF_ID}}",
+						"subscriptions",
+						"{{EVENTS_ID}}"
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "create_log",
+			"event": [
+				{
+					"listen": "prerequest",
+					"script": {
+						"exec": [
+							"setTimeout(() => {",
+							"                pm.sendRequest({",
+							"                    url: 'http://'+ pm.environment.get(\"NODE_HOSTNAME\") + ':'+ pm.environment.get(\"NODE_PORT\")+'/write_cert',",
+							"                    method: 'POST',",
+							"                    header: 'Content-Type:application/json',",
+							"                    encoding: 'binary',",
+							"                    body: {",
+							"                        mode: 'raw',",
+							"                        raw: {cert: pm.environment.get('AEF_CERT'), key:pm.environment.get('AEF_KEY')}",
+							"                    }",
+							"                }, function (err, response) {",
+							"                    console.log(response)",
+							"                });",
+							"            }, 5000);",
+							"",
+							"",
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				},
+				{
+					"listen": "test",
+					"script": {
+						"exec": [
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				}
+			],
+			"request": {
+				"method": "POST",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "{\n    \"aefId\": \"{{AEF_ID}}\",\n    \"apiInvokerId\": \"{{INVOKER_ID}}\",\n    \"logs\":[\n        {\n            \"apiId\": \"{{API_ID}}\",\n            \"apiName\": \"{{API_NAME}}\",\n            \"apiVersion\": \"v1\",\n            \"resourceName\": \"hello-endpoint\",\n            \"uri\": \"/hello\",\n            \"protocol\": \"HTTP_1_1\",\n            \"operation\": \"POST\",\n            \"result\": \"200\",\n            \"invocationTime\": \"2023-03-30T10:30:21.408000+00:00\",\n            \"invocationLatency\": 0,\n            \"inputParameters\": \"string\",\n            \"outputParameters\": \"string\",\n            \"srcInterface\": {\n                \"ipv4Addr\": \"localhost\",\n                \"port\": 8088,\n                \"securityMethods\": [\n                    \"OAUTH\"\n                ]\n            },\n            \"destInterface\": {\n                \"ipv4Addr\": \"localhost\",\n                \"port\": 8089,\n                \"securityMethods\": [\n                    \"OAUTH\"\n                ]\n            },\n            \"fwdInterface\": \"string\"\n        }\n    ]\n}",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/api-invocation-logs/v1/{{AEF_ID}}/logs",
+					"protocol": "https",
+					"host": [
+						"{{CAPIF_HOSTNAME}}"
+					],
+					"port": "{{CAPIF_PORT}}",
+					"path": [
+						"api-invocation-logs",
+						"v1",
+						"{{AEF_ID}}",
+						"logs"
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "get_log",
+			"event": [
+				{
+					"listen": "prerequest",
+					"script": {
+						"exec": [
+							"setTimeout(() => {",
+							"                pm.sendRequest({",
+							"                    url: 'http://'+ pm.environment.get(\"NODE_HOSTNAME\") + ':'+ pm.environment.get(\"NODE_PORT\")+'/write_cert',",
+							"                    method: 'POST',",
+							"                    header: 'Content-Type:application/json',",
+							"                    encoding: 'binary',",
+							"                    body: {",
+							"                        mode: 'raw',",
+							"                        raw: {cert: pm.environment.get('AEF_CERT'), key:pm.environment.get('AEF_KEY')}",
+							"                    }",
+							"                }, function (err, response) {",
+							"                    console.log(response)",
+							"                });",
+							"            }, 5000);",
+							"",
+							"",
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				},
+				{
+					"listen": "test",
+					"script": {
+						"exec": [
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				}
+			],
+			"protocolProfileBehavior": {
+				"disableBodyPruning": true
+			},
+			"request": {
+				"method": "GET",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/logs/v1/apiInvocationLogs?aef-id={{AEF_ID}}&api-invoker-id={{INVOKER_ID}}",
+					"protocol": "https",
+					"host": [
+						"{{CAPIF_HOSTNAME}}"
+					],
+					"port": "{{CAPIF_PORT}}",
+					"path": [
+						"logs",
+						"v1",
+						"apiInvocationLogs"
+					],
+					"query": [
+						{
+							"key": "aef-id",
+							"value": "{{AEF_ID}}"
+						},
+						{
+							"key": "api-invoker-id",
+							"value": "{{INVOKER_ID}}"
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "get_acl",
+			"event": [
+				{
+					"listen": "prerequest",
+					"script": {
+						"exec": [
+							"setTimeout(() => {",
+							"                pm.sendRequest({",
+							"                    url: 'http://'+ pm.environment.get(\"NODE_HOSTNAME\") + ':'+ pm.environment.get(\"NODE_PORT\")+'/write_cert',",
+							"                    method: 'POST',",
+							"                    header: 'Content-Type:application/json',",
+							"                    encoding: 'binary',",
+							"                    body: {",
+							"                        mode: 'raw',",
+							"                        raw: {cert: pm.environment.get('AEF_CERT'), key:pm.environment.get('AEF_KEY')}",
+							"                    }",
+							"                }, function (err, response) {",
+							"                    console.log(response)",
+							"                });",
+							"            }, 5000);",
+							"",
+							"",
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				},
+				{
+					"listen": "test",
+					"script": {
+						"exec": [
+							""
+						],
+						"type": "text/javascript",
+						"packages": {}
+					}
+				}
+			],
+			"protocolProfileBehavior": {
+				"disableBodyPruning": true
+			},
+			"request": {
+				"method": "GET",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/access-control-policy/v1/accessControlPolicyList/{{API_SERVICE_ID}}?aef-id={{AEF_ID}}&api-invoker-id={{INVOKER_ID}}",
+					"protocol": "https",
+					"host": [
+						"{{CAPIF_HOSTNAME}}"
+					],
+					"port": "{{CAPIF_PORT}}",
+					"path": [
+						"access-control-policy",
+						"v1",
+						"accessControlPolicyList",
+						"{{API_SERVICE_ID}}"
+					],
+					"query": [
+						{
+							"key": "aef-id",
+							"value": "{{AEF_ID}}"
+						},
+						{
+							"key": "api-invoker-id",
+							"value": "{{INVOKER_ID}}"
+						}
+					]
+				}
+			},
+			"response": []
 		}
 	]
 }
\ No newline at end of file
diff --git a/doc/testing/postman/CAPIF.postman_environment.json b/doc/testing/postman/CAPIF_ENVIRONMENTS.postman_environment.json
similarity index 94%
rename from doc/testing/postman/CAPIF.postman_environment.json
rename to doc/testing/postman/CAPIF_ENVIRONMENTS.postman_environment.json
index 411e7f6..efc8bdf 100644
--- a/doc/testing/postman/CAPIF.postman_environment.json
+++ b/doc/testing/postman/CAPIF_ENVIRONMENTS.postman_environment.json
@@ -1,6 +1,6 @@
 {
-	"id": "adb492cf-1d02-4a7c-a4a2-00cb54c202f1",
-	"name": "CAPIF ENVIRONMENT",
+	"id": "67e58f03-6bf2-4bcc-8353-c92906412e95",
+	"name": "CAPIF ENVIRONMENTS",
 	"values": [
 		{
 			"key": "CAPIF_HOSTNAME",
@@ -271,9 +271,15 @@
 			"value": "",
 			"type": "any",
 			"enabled": true
+		},
+		{
+			"key": "EVENTS_ID",
+			"value": "",
+			"type": "any",
+			"enabled": true
 		}
 	],
 	"_postman_variable_scope": "environment",
-	"_postman_exported_at": "2024-10-07T09:27:29.742Z",
-	"_postman_exported_using": "Postman/11.12.0"
+	"_postman_exported_at": "2024-11-13T10:34:19.421Z",
+	"_postman_exported_using": "Postman/11.14.1"
 }
\ No newline at end of file
diff --git a/doc/testing/postman/Postman-Test.zip b/doc/testing/postman/Postman-Test.zip
index 7d7d17e155957e2b935378c460d096c89f4cd696..0f3d09d0d19e6156e03c59d4d07fa9c03aaa51b5 100644
GIT binary patch
delta 8538
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
OwZDY{fgl+FJpB*D<-i*N

delta 16842
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

diff --git a/doc/testing/postman/README.md b/doc/testing/postman/README.md
index 6729fb0..7fba2ad 100644
--- a/doc/testing/postman/README.md
+++ b/doc/testing/postman/README.md
@@ -21,7 +21,7 @@ npm i
 node script.js
 ```
 
-3. Import Postman collection and environment variables (<a href="./CAPIF.postman_collection.json" download>CAPIF.postman_collection.json</a> and <a href="./CAPIF.postman_environment.json" download>CAPIF.postman_environment.json</a>)
+3. Import Postman collection and environment variables (<a href="./CAPIF.postman_collection.json" download>CAPIF.postman_collection.json</a> and <a href="./CAPIF_ENVIRONMENTS.postman_environment.json" download>CAPIF.postman_environment.json</a>)
 4. Select CAPIF Environment before start testing.
 5. Install the necessary dependencies from requirements.txt using the following command:
 
-- 
GitLab