diff --git a/opencapif_sdk/api_schema_translator.py b/opencapif_sdk/api_schema_translator.py index 7faef309160605fabb1b1fbafc87e9fdc3e90695..a55ae0c34bb8dd20ea3d830283d3ffde6af3d0e9 100644 --- a/opencapif_sdk/api_schema_translator.py +++ b/opencapif_sdk/api_schema_translator.py @@ -34,11 +34,16 @@ class api_schema_translator: self.api_info = self.__load_api_file(self.api_path) self.__validate_api_info() - def build(self, api_name, ip=None, port=None, fqdn=None, ipv6Addr=None): + def build(self, api_name, supported_features, api_supp_features, ip=None, port=None, fqdn=None, ipv6Addr=None): """ Builds the API description and saves it to a JSON file. Supports either IPv4 (ip), IPv6 (ipv6Addr), or FQDN (fqdn). """ + # Validate required fields + if not supported_features or not api_supp_features: + self.logger.error("Both 'supported_features' and 'api_supp_features' are required. Aborting build.") + return + # Validate that at least one of ip, ipv6Addr, or fqdn is provided if not (ip or ipv6Addr or fqdn): self.logger.error("At least one of 'ip', 'ipv6Addr', or 'fqdn' must be provided. Aborting build.") @@ -55,13 +60,13 @@ class api_schema_translator: "apiName": self.api_info["info"].get("title", api_name), "aefProfiles": self.__build_aef_profiles(ip, port, fqdn, ipv6Addr), "description": self.api_info["info"].get("description", "No description provided"), - "supportedFeatures": "fffff", + "supportedFeatures": supported_features, "shareableInfo": { "isShareable": True, "capifProvDoms": ["string"] }, "serviceAPICategory": "string", - "apiSuppFeats": "fffff", + "apiSuppFeats": api_supp_features, "pubApiPath": { "ccfIds": ["string"] }, diff --git a/opencapif_sdk/capif_provider_connector.py b/opencapif_sdk/capif_provider_connector.py index 65f3d593329ab07f0e19118ce5fb1aa7f94fb475..1276713c23422309eed41fd78d02f70383b84d61 100644 --- a/opencapif_sdk/capif_provider_connector.py +++ b/opencapif_sdk/capif_provider_connector.py @@ -193,7 +193,6 @@ class capif_provider_connector: context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE - with socket.create_connection((self.capif_host, self.capif_https_port)) as sock: with context.wrap_socket(sock, server_hostname=self.capif_host) as ssock: cert = ssock.getpeercert(binary_form=True) @@ -1160,7 +1159,7 @@ class capif_provider_connector: self.logger.info("Starting certificate removal process...") # List of possible certificate patterns to remove - cert_patterns = ["APF-", "apf-", "AEF-", "aef-", "AMF", "amf"] + cert_patterns = ["APF-", "apf-", "AEF-", "aef-"] cert_extensions = ["_private_key.key", "_public.csr", ".crt"] # Iterate over the directory and remove matching files diff --git a/setup.py b/setup.py index f082936b3e5bc860335635920559761c882d01e0..9d4f0f57a47dbb4043be6e8622ebdc93d95a7d56 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ with open(os.path.join(this_directory, "README_pipy.md"), encoding="utf-8") as f setup( name="opencapif_sdk", - version="0.1.19", + version="0.1.20", author="JorgeEcheva, dgs-cgm", author_email="jorge.echevarriauribarri.practicas@telefonica.com, daniel.garciasanchez@telefonica.com", description=( diff --git a/test/capif_sdk_config_sample_test.json b/test/capif_sdk_config_sample_test.json index 26caa737c731fbec56aa28e886720aab94cc4607..21f55edc7e43568fa7f5e33319d50ab2d50669fd 100644 --- a/test/capif_sdk_config_sample_test.json +++ b/test/capif_sdk_config_sample_test.json @@ -9,7 +9,7 @@ "invoker": { "invoker_folder": "/Users/IDB0128/Documents/OpenCapif/test_invoker_certificate_folder", "capif_callback_url": "http://localhost:5000", - "supported_features": "fffffff", + "supported_features": "0", "check_authentication_data": { "ip": "", "port": "" @@ -51,7 +51,7 @@ }, "provider": { "provider_folder": "/Users/IDB0128/Documents/OpenCapif/test_provider_certificate_folder", - "supported_features": "fffffff", + "supported_features": "0", "cert_generation": { "csr_common_name": "provider", "csr_organizational_unit": "discovery", diff --git a/test/network_app_provider_api_spec.json b/test/network_app_provider_api_spec.json index 765fa2dc5d7f92c0b48e833089702e28a698e65f..7cc5b3794319955126d81a5c39b658a36119745b 100644 --- a/test/network_app_provider_api_spec.json +++ b/test/network_app_provider_api_spec.json @@ -2,7 +2,7 @@ "apiName": "Testtrece", "aefProfiles": [ { - "aefId": "AEF6b074911c72c9a49c8a3ea7e881b85", + "aefId": "AEF5ab315755935b121309e787620c354", "versions": [ { "apiVersion": "v1", @@ -77,7 +77,7 @@ ] }, { - "aefId": "AEFfaa1b3b961a3a09c71b633fe8327c3", + "aefId": "AEF32cfb4a7b1b8c705217a6bb37b43f2", "versions": [ { "apiVersion": "v1", @@ -169,7 +169,7 @@ } ], "description": "API of dummy Network-App to test", - "supportedFeatures": "fffffff", + "supportedFeatures": "0", "shareableInfo": { "isShareable": true, "capifProvDoms": [ @@ -177,7 +177,7 @@ ] }, "serviceAPICategory": "string", - "apiSuppFeats": "fffff", + "apiSuppFeats": "0", "pubApiPath": { "ccfIds": [ "string" diff --git a/test/network_app_provider_api_spec_3.json b/test/network_app_provider_api_spec_3.json index 825108e5920125c1c150ffb9c8053f7460e8d5de..aa68defe3625f5c8a8f9a56f9e4b3bcce561a7d5 100755 --- a/test/network_app_provider_api_spec_3.json +++ b/test/network_app_provider_api_spec_3.json @@ -2,7 +2,7 @@ "apiName": "Test-three", "aefProfiles": [ { - "aefId": "AEF46db4d6b56d212ab007201ac8224dc", + "aefId": "AEFae4735f83ce9adc2caf460a30cc6dd", "versions": [ { "apiVersion": "v1", @@ -77,7 +77,7 @@ ] }, { - "aefId": "AEF7d3d9ec715697bd6dc5974e5d78081", + "aefId": "AEF6b4030a99398cadd25c89307cc6e04", "versions": [ { "apiVersion": "v1", @@ -169,7 +169,7 @@ } ], "description": "API of dummy Network-App to test", - "supportedFeatures": "fffffff", + "supportedFeatures": "0", "shareableInfo": { "isShareable": true, "capifProvDoms": [ @@ -177,7 +177,7 @@ ] }, "serviceAPICategory": "string", - "apiSuppFeats": "fffff", + "apiSuppFeats": "0", "pubApiPath": { "ccfIds": [ "string" diff --git a/test/test1.json b/test/test1.json index 6bd5aacc97b0ae83ecd009b01c9329bf19c4fd10..aa13df999ca80299c2e4eeb4c44a0a1b71c5b30a 100644 --- a/test/test1.json +++ b/test/test1.json @@ -2,7 +2,7 @@ "apiName": "API of dummy Network-App to test", "aefProfiles": [ { - "aefId": "AEF74df7938fe9b102e1014ec3b0058d6", + "aefId": "AEF31918dcf7bd894c86af1faf271a2d7", "versions": [ { "apiVersion": "v1", @@ -144,7 +144,7 @@ } ], "description": "API of dummy Network-App to test", - "supportedFeatures": "fffff", + "supportedFeatures": "0", "shareableInfo": { "isShareable": true, "capifProvDoms": [ @@ -152,7 +152,7 @@ ] }, "serviceAPICategory": "string", - "apiSuppFeats": "fffff", + "apiSuppFeats": "0", "pubApiPath": { "ccfIds": [ "string" diff --git a/test/test_main.py b/test/test_main.py index 6e4087634b99b8ab54f0a3b4614f7414cf1cc1ff..6d5dc3c1bce83924adfe8344d231d5b9a7d7f668 100644 --- a/test/test_main.py +++ b/test/test_main.py @@ -41,7 +41,7 @@ def test_provider_publish(test_provider_update): AEF1 = provider.provider_capif_ids['AEF-1'] translator = api_schema_translator("./test1.yaml") - translator.build("test1",ip="0.0.0.0",port=9090) + translator.build("test1",ip="0.0.0.0",port=9090,supported_features="0",api_supp_features="0") provider.api_description_path="./test1.json" # Update configuration file provider.publish_req['publisher_apf_id'] = APF1 @@ -80,7 +80,7 @@ def test_logs(test_provider_publish,tokens): capif_log.create_logs(aefId=AEF1,jwt=token) -def test_invoker_discover(invoker_setup): +def test_invoker_discover(invoker_setup,test_provider_publish): discoverer = service_discoverer(config_file=capif_sdk_config_path) discoverer.discover() discoverer.get_tokens()