From a7d3d84db66147a76970aaf1bc092d21a08a04e7 Mon Sep 17 00:00:00 2001 From: Svitlana Melnychuk Date: Thu, 27 Feb 2025 20:59:58 +0200 Subject: [PATCH 1/4] feat: add custom_supported_browsers to update_passport_config() in admin.py --- duo_client/admin.py | 5 ++++- tests/admin/test_passport.py | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/duo_client/admin.py b/duo_client/admin.py index 7c3d316..5a809ee 100644 --- a/duo_client/admin.py +++ b/duo_client/admin.py @@ -3677,7 +3677,7 @@ def get_passport_config(self): response = self.json_api_call("GET", path, {}) return response - def update_passport_config(self, enabled_status, enabled_groups=[], disabled_groups=[]): + def update_passport_config(self, enabled_status, enabled_groups=[], disabled_groups=[], custom_supported_browsers={"macos": [], "windows": [],}): """ Update the current Passport configuration. @@ -3688,6 +3688,8 @@ def update_passport_config(self, enabled_status, enabled_groups=[], disabled_gro list of user group IDs for whom Passport should be enabled disabled_groups (list[str]) - if enabled_status is "enabled-with-exceptions", a list of user group IDs for whom Passport should be disabled + custom_supported_browsers (dict) - a dict of criteria that determines whether + a Windows or macOS browsers should be supported by Passport """ path = "/admin/v2/passport/config" @@ -3698,6 +3700,7 @@ def update_passport_config(self, enabled_status, enabled_groups=[], disabled_gro "enabled_status": enabled_status, "enabled_groups": enabled_groups, "disabled_groups": disabled_groups, + "custom_supported_browsers": custom_supported_browsers, }, ) return response diff --git a/tests/admin/test_passport.py b/tests/admin/test_passport.py index d4c7591..54848d4 100644 --- a/tests/admin/test_passport.py +++ b/tests/admin/test_passport.py @@ -17,9 +17,10 @@ def test_get_passport(self): def test_update_passport(self): """ Test update passport configuration """ - response = self.client.update_passport_config(enabled_status="enabled-for-groups", enabled_groups=["passport-test-group"]) + response = self.client.update_passport_config(enabled_status="enabled-for-groups", enabled_groups=["passport-test-group"], custom_supported_browsers={"macos": [{"team_id": "UBF8T346G9"},],"windows": [{"common_name": "Duo Security LLC"},],}) self.assertEqual(response["uri"], "/admin/v2/passport/config") body = json.loads(response["body"]) self.assertEqual(body["enabled_status"], "enabled-for-groups") self.assertEqual(body["enabled_groups"], ["passport-test-group"]) self.assertEqual(body["disabled_groups"], []) + self.assertEqual(body["custom_supported_browsers"], {"macos":[{"team_id":"UBF8T346G9"}],"windows":[{"common_name":"Duo Security LLC"}]}) From f8af04a146f14e8f0faf176096c723c14890f90c Mon Sep 17 00:00:00 2001 From: Svitlana Melnychuk Date: Mon, 3 Mar 2025 12:29:57 +0200 Subject: [PATCH 2/4] feat: add None as parameter defaults --- duo_client/admin.py | 5 ++++- tests/admin/test_passport.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/duo_client/admin.py b/duo_client/admin.py index 5a809ee..628cf7d 100644 --- a/duo_client/admin.py +++ b/duo_client/admin.py @@ -178,6 +178,7 @@ import time import urllib.parse import warnings +from typing import List, Optional from datetime import datetime, timedelta, timezone from . import Accounts, client @@ -3677,7 +3678,7 @@ def get_passport_config(self): response = self.json_api_call("GET", path, {}) return response - def update_passport_config(self, enabled_status, enabled_groups=[], disabled_groups=[], custom_supported_browsers={"macos": [], "windows": [],}): + def update_passport_config(self, enabled_status, enabled_groups: Optional[List[str]]=None, disabled_groups: Optional[List[str]]=None, custom_supported_browsers=None): """ Update the current Passport configuration. @@ -3691,6 +3692,8 @@ def update_passport_config(self, enabled_status, enabled_groups=[], disabled_gro custom_supported_browsers (dict) - a dict of criteria that determines whether a Windows or macOS browsers should be supported by Passport """ + if custom_supported_browsers == None: + custom_supported_browsers={"macos": [], "windows": [],} path = "/admin/v2/passport/config" response = self.json_api_call( diff --git a/tests/admin/test_passport.py b/tests/admin/test_passport.py index 54848d4..ca6dcf9 100644 --- a/tests/admin/test_passport.py +++ b/tests/admin/test_passport.py @@ -22,5 +22,5 @@ def test_update_passport(self): body = json.loads(response["body"]) self.assertEqual(body["enabled_status"], "enabled-for-groups") self.assertEqual(body["enabled_groups"], ["passport-test-group"]) - self.assertEqual(body["disabled_groups"], []) + self.assertEqual(body["disabled_groups"], None) self.assertEqual(body["custom_supported_browsers"], {"macos":[{"team_id":"UBF8T346G9"}],"windows":[{"common_name":"Duo Security LLC"}]}) From 3381aaaaaad559f30c2cd4f5a2fa2eca127d358c Mon Sep 17 00:00:00 2001 From: Svitlana Melnychuk Date: Mon, 3 Mar 2025 13:57:02 +0200 Subject: [PATCH 3/4] add spaces where needed --- duo_client/admin.py | 2 +- tests/admin/test_passport.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/duo_client/admin.py b/duo_client/admin.py index 628cf7d..75595b6 100644 --- a/duo_client/admin.py +++ b/duo_client/admin.py @@ -3693,7 +3693,7 @@ def update_passport_config(self, enabled_status, enabled_groups: Optional[List[s a Windows or macOS browsers should be supported by Passport """ if custom_supported_browsers == None: - custom_supported_browsers={"macos": [], "windows": [],} + custom_supported_browsers = {"macos": [], "windows": [],} path = "/admin/v2/passport/config" response = self.json_api_call( diff --git a/tests/admin/test_passport.py b/tests/admin/test_passport.py index ca6dcf9..80ed15e 100644 --- a/tests/admin/test_passport.py +++ b/tests/admin/test_passport.py @@ -17,7 +17,7 @@ def test_get_passport(self): def test_update_passport(self): """ Test update passport configuration """ - response = self.client.update_passport_config(enabled_status="enabled-for-groups", enabled_groups=["passport-test-group"], custom_supported_browsers={"macos": [{"team_id": "UBF8T346G9"},],"windows": [{"common_name": "Duo Security LLC"},],}) + response = self.client.update_passport_config(enabled_status="enabled-for-groups", enabled_groups=["passport-test-group"], custom_supported_browsers={"macos": [{"team_id": "UBF8T346G9"},], "windows": [{"common_name": "Duo Security LLC"},],}) self.assertEqual(response["uri"], "/admin/v2/passport/config") body = json.loads(response["body"]) self.assertEqual(body["enabled_status"], "enabled-for-groups") From c64d6624459b0fc8a70ba31a311c6247bf8a1b32 Mon Sep 17 00:00:00 2001 From: Svitlana Melnychuk Date: Mon, 3 Mar 2025 17:08:37 +0200 Subject: [PATCH 4/4] Replace '==' with 'is' for improved comparison consistency --- duo_client/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/duo_client/admin.py b/duo_client/admin.py index 75595b6..d1b4855 100644 --- a/duo_client/admin.py +++ b/duo_client/admin.py @@ -3692,7 +3692,7 @@ def update_passport_config(self, enabled_status, enabled_groups: Optional[List[s custom_supported_browsers (dict) - a dict of criteria that determines whether a Windows or macOS browsers should be supported by Passport """ - if custom_supported_browsers == None: + if custom_supported_browsers is None: custom_supported_browsers = {"macos": [], "windows": [],} path = "/admin/v2/passport/config"