From 878bc69fabacdda1d5be8c3601918e892d44226f Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 17 Oct 2023 16:29:22 +0200 Subject: [PATCH 01/13] initial for [sc-147685] --- code-env/python/spec/requirements.txt | 3 +- .../sharepoint-online-append-list/recipe.json | 11 +++ .../app-certificate/parameter-set.json | 68 +++++++++++++++++++ .../sharepoint-online_lists/connector.json | 11 +++ .../fs-provider.json | 11 +++ python-lib/dss_constants.py | 11 ++- python-lib/sharepoint_client.py | 45 ++++++++++++ 7 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 parameter-sets/app-certificate/parameter-set.json diff --git a/code-env/python/spec/requirements.txt b/code-env/python/spec/requirements.txt index a0b6fa1..73f342d 100644 --- a/code-env/python/spec/requirements.txt +++ b/code-env/python/spec/requirements.txt @@ -1 +1,2 @@ -sharepy==1.3.0 \ No newline at end of file +sharepy==1.3.0 +msal==1.23.0 \ No newline at end of file diff --git a/custom-recipes/sharepoint-online-append-list/recipe.json b/custom-recipes/sharepoint-online-append-list/recipe.json index 68d07c5..1cb86cd 100644 --- a/custom-recipes/sharepoint-online-append-list/recipe.json +++ b/custom-recipes/sharepoint-online-append-list/recipe.json @@ -44,6 +44,10 @@ { "value": "site-app-permissions", "label": "Site App Permissions" + }, + { + "value": "app-certificate", + "label": "Azure App (certificate)" } ] }, @@ -68,6 +72,13 @@ "parameterSetId": "site-app-permissions", "visibilityCondition": "model.auth_type == 'site-app-permissions'" }, + { + "name": "app_certificate", + "label": "Azure App (certificate)", + "type": "PRESET", + "parameterSetId": "app-certificate", + "visibilityCondition": "model.auth_type == 'app-certificate'" + }, { "name": "sharepoint_list_title", "label": "List title", diff --git a/parameter-sets/app-certificate/parameter-set.json b/parameter-sets/app-certificate/parameter-set.json new file mode 100644 index 0000000..1584576 --- /dev/null +++ b/parameter-sets/app-certificate/parameter-set.json @@ -0,0 +1,68 @@ +{ + "meta": { + "label": "Azure App (certificate)", + "description": "", + "icon": "icon-cloud" + }, + "defaultDefinableInline": true, + "defaultDefinableAtProjectLevel": true, + "pluginParams": [], + "params": [ + { + "name": "sharepoint_tenant", + "label": "Tenant", + "type": "STRING", + "description": "As in .sharepoint.com. Please refer to plugin doc.", + "mandatory": true + }, + { + "name": "sharepoint_site", + "label": "Site path", + "type": "STRING", + "description": "sites/site_name/subsite...", + "mandatory": true + }, + { + "name": "sharepoint_root", + "label": "Root directory", + "type": "STRING", + "description": "", + "defaultValue": "Shared Documents" + }, + { + "name": "tenant_id", + "label": "Tenant ID", + "type": "STRING", + "description": "", + "mandatory": true + }, + { + "name": "client_id", + "label": "Client ID", + "type": "STRING", + "description": "", + "mandatory": true + }, + { + "name": "client_certificate_thumbprint", + "label": "Client certificate thumbprint", + "type": "STRING", + "description": "", + "mandatory": true + }, + { + "name": "client_certificate", + "label": "Client certificate (private key)", + "type": "PASSWORD", + "description": "Base64-encoded, starting with '-----BEGIN PRIVATE KEY-----'", + "mandatory": true + }, + { + "name": "passphrase", + "label": "Certificate passphrase", + "type": "PASSWORD", + "description": "If required by private key", + "mandatory": false + } + ] +} \ No newline at end of file diff --git a/python-connectors/sharepoint-online_lists/connector.json b/python-connectors/sharepoint-online_lists/connector.json index 8c6b4da..af3efdc 100644 --- a/python-connectors/sharepoint-online_lists/connector.json +++ b/python-connectors/sharepoint-online_lists/connector.json @@ -23,6 +23,10 @@ { "value": "site-app-permissions", "label": "Site App Permissions" + }, + { + "value": "app-certificate", + "label": "Azure App (certificate)" } ] }, @@ -47,6 +51,13 @@ "parameterSetId": "site-app-permissions", "visibilityCondition": "model.auth_type == 'site-app-permissions'" }, + { + "name": "app_certificate", + "label": "Azure App (certificate)", + "type": "PRESET", + "parameterSetId": "app-certificate", + "visibilityCondition": "model.auth_type == 'app-certificate'" + }, { "name": "sharepoint_list_title", "label": "List title", diff --git a/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json b/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json index 9d0aaba..f507087 100644 --- a/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json +++ b/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json @@ -21,6 +21,10 @@ { "value": "site-app-permissions", "label": "Site App Permissions" + }, + { + "value": "app-certificate", + "label": "Azure App (certificate)" } ] }, @@ -45,6 +49,13 @@ "parameterSetId": "site-app-permissions", "visibilityCondition": "model.auth_type == 'site-app-permissions'" }, + { + "name": "app_certificate", + "label": "Azure App (certificate)", + "type": "PRESET", + "parameterSetId": "app-certificate", + "visibilityCondition": "model.auth_type == 'app-certificate'" + }, { "name": "advanced_parameters", "label": "Show advanced parameters", diff --git a/python-lib/dss_constants.py b/python-lib/dss_constants.py index bbb910e..c8663ed 100644 --- a/python-lib/dss_constants.py +++ b/python-lib/dss_constants.py @@ -1,6 +1,15 @@ class DSSConstants(object): + APP_CERTIFICATE_DETAILS = { + "sharepoint_tenant": "The tenant name is missing", + "sharepoint_site": "The site name is missing", + "tenant_id": "The tenant ID is missing. See documentation on how to obtain this information", + "client_id": "The client ID is missing", + "client_certificate_thumbprint": "The client certificate thumbprint is missing", + "client_certificate": "The client certificate is missing" + } APPLICATION_JSON = "application/json;odata=verbose" APPLICATION_JSON_NOMETADATA = "application/json;odata=nometadata" + AUTH_APP_CERTIFICATE = "app-certificate" AUTH_LOGIN = "login" AUTH_OAUTH = "oauth" AUTH_SITE_APP = "site-app-permissions" @@ -29,7 +38,7 @@ class DSSConstants(object): } PATH = 'path' PLUGIN_VERSION = "1.0.15-beta.1" - SECRET_PARAMETERS_KEYS = ["Authorization", "sharepoint_username", "sharepoint_password", "client_secret"] + SECRET_PARAMETERS_KEYS = ["Authorization", "sharepoint_username", "sharepoint_password", "client_secret", "client_certificate", "passphrase"] SITE_APP_DETAILS = { "sharepoint_tenant": "The tenant name is missing", "sharepoint_site": "The site name is missing", diff --git a/python-lib/sharepoint_client.py b/python-lib/sharepoint_client.py index 2b0ab75..7dea899 100644 --- a/python-lib/sharepoint_client.py +++ b/python-lib/sharepoint_client.py @@ -108,6 +108,29 @@ def __init__(self, config): max_retries=SharePointConstants.MAX_RETRIES, base_retry_timer_sec=SharePointConstants.WAIT_TIME_BEFORE_RETRY_SEC ) + elif config.get('auth_type') == DSSConstants.AUTH_APP_CERTIFICATE: + logger.info("SharePointClient:app-certificate") + login_details = config.get('app_certificate') + self.assert_login_details(DSSConstants.APP_CERTIFICATE_DETAILS, login_details) + self.setup_sharepoint_online_url(login_details) + self.setup_login_details(login_details) + self.apply_paths_overwrite(config) + self.tenant_id = login_details.get("tenant_id") + self.client_certificate = self.format_private_key(login_details.get("client_certificate")) + self.client_certificate_thumbprint = login_details.get("client_certificate_thumbprint") + self.passphrase = login_details.get("passphrase") + self.client_id = login_details.get("client_id") + self.sharepoint_access_token = self.get_certificate_app_access_token() + self.session.update_settings(session=SharePointSession( + None, + None, + self.sharepoint_url, + self.sharepoint_site, + sharepoint_access_token=self.sharepoint_access_token + ), + max_retries=SharePointConstants.MAX_RETRIES, + base_retry_timer_sec=SharePointConstants.WAIT_TIME_BEFORE_RETRY_SEC + ) else: raise SharePointClientError("The type of authentication is not selected") self.sharepoint_list_title = config.get("sharepoint_list_title") @@ -819,6 +842,28 @@ def get_site_app_access_token(self): json_response = response.json() return json_response.get("access_token") + @staticmethod + def format_private_key(private_key): + """Formats the private key as the secret parameter replaces newlines with spaces.""" + private_key = private_key.replace("-----BEGIN PRIVATE KEY-----", "") + private_key = private_key.replace("-----END PRIVATE KEY-----", "") + private_key = "\n".join(["-----BEGIN PRIVATE KEY-----", *private_key.split(), "-----END PRIVATE KEY-----"]) + return private_key + + def get_certificate_app_access_token(self): + import msal + app = msal.ConfidentialClientApplication( + self.client_id, + authority=f"https://login.microsoftonline.com/{self.tenant_id}", + client_credential={ + "thumbprint": self.client_certificate_thumbprint, + "private_key": self.client_certificate, + "passphrase": self.passphrase, + }, + ) + json_response = app.acquire_token_for_client(scopes=[f"{self.sharepoint_origin}/.default"]) + return json_response.get("access_token") + def get_view_id(self, list_title, view_title): if not list_title: return None From 68faf928ae71b854a9a13d70b3dcda37cde498f1 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 24 Oct 2023 11:48:19 +0200 Subject: [PATCH 02/13] Update Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef5606c..9b2adc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## [Version 1.0.15](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.0.15) - Feature release - 2023-07-24 - Adding an **Append to list** recipe +- Adding app certificate login ## [Version 1.0.14](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.0.14) - Bugfix release - 2023-04-18 From b41da4778e2a1368bb9205ba49c801eeec5a0cd1 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 24 Oct 2023 11:48:31 +0200 Subject: [PATCH 03/13] update beta version --- python-lib/dss_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-lib/dss_constants.py b/python-lib/dss_constants.py index c8663ed..f32f2d3 100644 --- a/python-lib/dss_constants.py +++ b/python-lib/dss_constants.py @@ -37,7 +37,7 @@ class DSSConstants(object): "sharepoint_oauth": "The access token is missing" } PATH = 'path' - PLUGIN_VERSION = "1.0.15-beta.1" + PLUGIN_VERSION = "1.0.15-beta.2" SECRET_PARAMETERS_KEYS = ["Authorization", "sharepoint_username", "sharepoint_password", "client_secret", "client_certificate", "passphrase"] SITE_APP_DETAILS = { "sharepoint_tenant": "The tenant name is missing", From fc0d17879cdc3d0285077b55f1c5a6f7b64bd8d3 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 4 Jun 2024 18:37:33 +0200 Subject: [PATCH 04/13] add handling of "encrypted" in the cert header + handling of various thumbprint formats --- python-lib/common.py | 23 +++++++++++++++++++++++ python-lib/sharepoint_client.py | 14 +++----------- python-lib/sharepoint_constants.py | 4 ++++ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/python-lib/common.py b/python-lib/common.py index c99a7f8..312debf 100644 --- a/python-lib/common.py +++ b/python-lib/common.py @@ -115,6 +115,29 @@ def merge_paths(first_path, second_path): return joined_path.strip("/") +def format_private_key(private_key): + """Formats the private key as the secret parameter replaces newlines with spaces.""" + private_key = private_key.strip(" ") + if private_key.startswith(SharePointConstants.CLEAR_KEY_START): + start_marker = SharePointConstants.CLEAR_KEY_START + end_marker = SharePointConstants.CLEAR_KEY_END + else: + start_marker = SharePointConstants.ENCRYPTED_KEY_START + end_marker = SharePointConstants.ENCRYPTED_KEY_END + private_key = private_key.replace(start_marker, "") + private_key = private_key.replace(end_marker, "") + private_key = "\n".join([start_marker, *private_key.split(), end_marker]) + return private_key + + +def format_certificate_thumbprint(certificate_thumbprint): + if ":" in certificate_thumbprint: + certificate_thumbprint = certificate_thumbprint.replace(":", "") + elif " " in certificate_thumbprint: + certificate_thumbprint = certificate_thumbprint.replace(" ", "") + return certificate_thumbprint + + class ItemsLimit(): def __init__(self, records_limit=-1): self.has_no_limit = (records_limit == -1) diff --git a/python-lib/sharepoint_client.py b/python-lib/sharepoint_client.py index 7dea899..c75e8ad 100644 --- a/python-lib/sharepoint_client.py +++ b/python-lib/sharepoint_client.py @@ -17,7 +17,7 @@ from common import ( is_email_address, get_value_from_path, parse_url, get_value_from_paths, is_request_performed, ItemsLimit, - is_empty_path, merge_paths + is_empty_path, merge_paths, format_private_key, format_certificate_thumbprint ) from safe_logger import SafeLogger @@ -116,8 +116,8 @@ def __init__(self, config): self.setup_login_details(login_details) self.apply_paths_overwrite(config) self.tenant_id = login_details.get("tenant_id") - self.client_certificate = self.format_private_key(login_details.get("client_certificate")) - self.client_certificate_thumbprint = login_details.get("client_certificate_thumbprint") + self.client_certificate = format_private_key(login_details.get("client_certificate")) + self.client_certificate_thumbprint = format_certificate_thumbprint(login_details.get("client_certificate_thumbprint")) self.passphrase = login_details.get("passphrase") self.client_id = login_details.get("client_id") self.sharepoint_access_token = self.get_certificate_app_access_token() @@ -842,14 +842,6 @@ def get_site_app_access_token(self): json_response = response.json() return json_response.get("access_token") - @staticmethod - def format_private_key(private_key): - """Formats the private key as the secret parameter replaces newlines with spaces.""" - private_key = private_key.replace("-----BEGIN PRIVATE KEY-----", "") - private_key = private_key.replace("-----END PRIVATE KEY-----", "") - private_key = "\n".join(["-----BEGIN PRIVATE KEY-----", *private_key.split(), "-----END PRIVATE KEY-----"]) - return private_key - def get_certificate_app_access_token(self): import msal app = msal.ConfidentialClientApplication( diff --git a/python-lib/sharepoint_constants.py b/python-lib/sharepoint_constants.py index eae6b41..69a7022 100644 --- a/python-lib/sharepoint_constants.py +++ b/python-lib/sharepoint_constants.py @@ -1,9 +1,13 @@ class SharePointConstants(object): + CLEAR_KEY_END = "-----END PRIVATE KEY-----" + CLEAR_KEY_START = "-----BEGIN PRIVATE KEY-----" COLUMNS = 'columns' COMMENT_COLUMN = 'comment' DATE_FORMAT = "%Y-%m-%d %H:%M:%S" DEFAULT_VIEW_ENDPOINT = "DefaultView/ViewFields" DEFAULT_WAIT_BEFORE_RETRY = 60 + ENCRYPTED_KEY_END = "-----END ENCRYPTED PRIVATE KEY-----" + ENCRYPTED_KEY_START = "-----BEGIN ENCRYPTED PRIVATE KEY-----" ENTITY_PROPERTY_NAME = 'EntityPropertyName' ERROR_CONTAINER = 'error' EXPENDABLES_FIELDS = {"Author": "Title", "Editor": "Title"} From b5a670a70d6595d1db41a26d0549d59f60fdbc9e Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 4 Jun 2024 19:25:35 +0200 Subject: [PATCH 05/13] Add integration tests --- tests/python/integration/test_scenario.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/python/integration/test_scenario.py b/tests/python/integration/test_scenario.py index 4c7eb0d..9b56293 100644 --- a/tests/python/integration/test_scenario.py +++ b/tests/python/integration/test_scenario.py @@ -41,3 +41,11 @@ def test_run_sharepoint_online_append_to_list_recipe(user_dss_clients): def test_run_sharepoint_online_write_file_in_path_w_ro_parent(user_dss_clients): dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="SC169288_WRITE_FILE_WITH_RO_PARENT_FOLDER") + + +def test_run_sharepoint_online_(user_dss_clients): + dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="CERTIFICATEAUTH") + + +def test_run_sharepoint_online_(user_dss_clients): + dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="ENCRYPTEDCERTIFICATEAUTH") From 56ebfed6de158dc38ef6f5bbaf5418701d3d73ea Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 4 Jun 2024 19:33:04 +0200 Subject: [PATCH 06/13] v1.1.3-b1 --- plugin.json | 2 +- python-lib/dss_constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.json b/plugin.json index 6fa43d2..ffead09 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "id": "sharepoint-online", - "version": "1.1.2", + "version": "1.1.3", "meta": { "label": "SharePoint Online", "description": "Read and write data from/to your SharePoint Online account", diff --git a/python-lib/dss_constants.py b/python-lib/dss_constants.py index 54e6bb0..8617e47 100644 --- a/python-lib/dss_constants.py +++ b/python-lib/dss_constants.py @@ -37,7 +37,7 @@ class DSSConstants(object): "sharepoint_oauth": "The access token is missing" } PATH = 'path' - PLUGIN_VERSION = "1.1.2" + PLUGIN_VERSION = "1.1.3-beta.1" SECRET_PARAMETERS_KEYS = ["Authorization", "sharepoint_username", "sharepoint_password", "client_secret", "client_certificate", "passphrase"] SITE_APP_DETAILS = { "sharepoint_tenant": "The tenant name is missing", From 1b02febdcfa25e14344a653b703c5420c8f79e78 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Tue, 4 Jun 2024 19:33:15 +0200 Subject: [PATCH 07/13] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a17f68f..7f92d76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [Version 1.1.3](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.1.3) - Feature release - 2024-06-04 + +- Add login with Azure AD app certificate + ## [Version 1.1.2](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.1.2) - Bugfix release - 2024-05-28 - Fix path creation inside read-only parent directory From 0c6213a2dd9b84683c08e0a7f59f24410ac2a0a5 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 11:39:55 +0200 Subject: [PATCH 08/13] Removing beta tag --- python-lib/dss_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-lib/dss_constants.py b/python-lib/dss_constants.py index 8617e47..d6dc8b8 100644 --- a/python-lib/dss_constants.py +++ b/python-lib/dss_constants.py @@ -37,7 +37,7 @@ class DSSConstants(object): "sharepoint_oauth": "The access token is missing" } PATH = 'path' - PLUGIN_VERSION = "1.1.3-beta.1" + PLUGIN_VERSION = "1.1.3" SECRET_PARAMETERS_KEYS = ["Authorization", "sharepoint_username", "sharepoint_password", "client_secret", "client_certificate", "passphrase"] SITE_APP_DETAILS = { "sharepoint_tenant": "The tenant name is missing", From ec49c7b55f2de3393d14964eb0ae05c6d3c190c4 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 11:40:06 +0200 Subject: [PATCH 09/13] Adding contributors list --- CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) create mode 100644 CONTRIBUTORS diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 0000000..e0304d6 --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1 @@ +Richard Kroegel From 19c70ea2717b6799975ea66bcebca473bd6de97e Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 14:04:01 +0200 Subject: [PATCH 10/13] UI rewording --- parameter-sets/app-certificate/parameter-set.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parameter-sets/app-certificate/parameter-set.json b/parameter-sets/app-certificate/parameter-set.json index 1584576..0c9ba87 100644 --- a/parameter-sets/app-certificate/parameter-set.json +++ b/parameter-sets/app-certificate/parameter-set.json @@ -1,6 +1,6 @@ { "meta": { - "label": "Azure App (certificate)", + "label": "Certificates", "description": "", "icon": "icon-cloud" }, From 4b92ada6f057a2314f308f29995d9a44a75a009b Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 14:14:18 +0200 Subject: [PATCH 11/13] More UX --- custom-recipes/sharepoint-online-append-list/recipe.json | 4 ++-- python-connectors/sharepoint-online_lists/connector.json | 4 ++-- .../sharepoint-online_shared-documents/fs-provider.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/custom-recipes/sharepoint-online-append-list/recipe.json b/custom-recipes/sharepoint-online-append-list/recipe.json index 2368132..18a5740 100644 --- a/custom-recipes/sharepoint-online-append-list/recipe.json +++ b/custom-recipes/sharepoint-online-append-list/recipe.json @@ -47,7 +47,7 @@ }, { "value": "app-certificate", - "label": "Azure App (certificate)" + "label": "Certificates" } ] }, @@ -74,7 +74,7 @@ }, { "name": "app_certificate", - "label": "Azure App (certificate)", + "label": "Certificates", "type": "PRESET", "parameterSetId": "app-certificate", "visibilityCondition": "model.auth_type == 'app-certificate'" diff --git a/python-connectors/sharepoint-online_lists/connector.json b/python-connectors/sharepoint-online_lists/connector.json index af3efdc..d25181f 100644 --- a/python-connectors/sharepoint-online_lists/connector.json +++ b/python-connectors/sharepoint-online_lists/connector.json @@ -26,7 +26,7 @@ }, { "value": "app-certificate", - "label": "Azure App (certificate)" + "label": "Certificates" } ] }, @@ -53,7 +53,7 @@ }, { "name": "app_certificate", - "label": "Azure App (certificate)", + "label": "Certificates", "type": "PRESET", "parameterSetId": "app-certificate", "visibilityCondition": "model.auth_type == 'app-certificate'" diff --git a/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json b/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json index f507087..8179acc 100644 --- a/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json +++ b/python-fs-providers/sharepoint-online_shared-documents/fs-provider.json @@ -24,7 +24,7 @@ }, { "value": "app-certificate", - "label": "Azure App (certificate)" + "label": "Certificates" } ] }, @@ -51,7 +51,7 @@ }, { "name": "app_certificate", - "label": "Azure App (certificate)", + "label": "Certificates", "type": "PRESET", "parameterSetId": "app-certificate", "visibilityCondition": "model.auth_type == 'app-certificate'" From 90f641a854eaf0228a43478e985176a0b4055886 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 14:27:27 +0200 Subject: [PATCH 12/13] Fix tests naming --- tests/python/integration/test_scenario.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/python/integration/test_scenario.py b/tests/python/integration/test_scenario.py index 9b56293..3a31655 100644 --- a/tests/python/integration/test_scenario.py +++ b/tests/python/integration/test_scenario.py @@ -43,9 +43,9 @@ def test_run_sharepoint_online_write_file_in_path_w_ro_parent(user_dss_clients): dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="SC169288_WRITE_FILE_WITH_RO_PARENT_FOLDER") -def test_run_sharepoint_online_(user_dss_clients): +def test_run_sharepoint_online_certificate_auth(user_dss_clients): dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="CERTIFICATEAUTH") -def test_run_sharepoint_online_(user_dss_clients): +def test_run_sharepoint_online_encrypted_certificate_auth(user_dss_clients): dss_scenario.run(user_dss_clients, project_key=TEST_PROJECT_KEY, scenario_id="ENCRYPTEDCERTIFICATEAUTH") From 143393f9fe11636164ded3a6bea9f1bb41e1fee1 Mon Sep 17 00:00:00 2001 From: Alexandre Bourret Date: Thu, 6 Jun 2024 17:13:09 +0200 Subject: [PATCH 13/13] changelog fix --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f92d76..43853aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,6 @@ ## [Version 1.0.15](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.0.15) - Feature release - 2023-11-10 - Adding an **Append to list** recipe -- Adding app certificate login ## [Version 1.0.14](https://github.com/dataiku/dss-plugin-sharepoint-online/releases/tag/v1.0.14) - Bugfix release - 2023-04-18