diff --git a/.evergreen/scripts/oidc_tester.py b/.evergreen/scripts/oidc_tester.py index e4df91f350..b1093f73ec 100644 --- a/.evergreen/scripts/oidc_tester.py +++ b/.evergreen/scripts/oidc_tester.py @@ -13,6 +13,7 @@ K8S_NAMES = ["aks", "gke", "eks"] K8S_REMOTE_NAMES = [f"{n}-remote" for n in K8S_NAMES] +OIDC_APP_NAME = "auth_oidc" def _get_target_dir(sub_test_name: str) -> str: @@ -29,7 +30,14 @@ def _get_target_dir(sub_test_name: str) -> str: return f"{DRIVERS_TOOLS}/.evergreen/{target_dir}" +def _with_appname(uri: str, appname: str) -> str: + """Append ``appName`` so the failpoint's ``appName`` filter matches.""" + separator = "&" if "?" in uri else "?" + return f"{uri}{separator}appName={appname}" + + def setup_oidc(sub_test_name: str) -> dict[str, str] | None: + write_env("OIDC_APP_NAME", OIDC_APP_NAME) target_dir = _get_target_dir(sub_test_name) env = os.environ.copy() @@ -59,12 +67,15 @@ def setup_oidc(sub_test_name: str) -> dict[str, str] | None: elif sub_test_name in ["azure-remote", "gcp-remote"]: source_file = "./secrets-export.sh" if sub_test_name in K8S_REMOTE_NAMES: + write_env( + "MONGODB_URI_SINGLE", _with_appname(os.environ["MONGODB_URI_SINGLE"], OIDC_APP_NAME) + ) return os.environ.copy() if source_file is None: return None config = read_env(source_file) - write_env("MONGODB_URI_SINGLE", config["MONGODB_URI_SINGLE"]) + write_env("MONGODB_URI_SINGLE", _with_appname(config["MONGODB_URI_SINGLE"], OIDC_APP_NAME)) write_env("MONGODB_URI", config["MONGODB_URI"]) write_env("DB_IP", config["MONGODB_URI"]) diff --git a/test/asynchronous/test_auth_oidc.py b/test/asynchronous/test_auth_oidc.py index 4c53c53914..97028f334d 100644 --- a/test/asynchronous/test_auth_oidc.py +++ b/test/asynchronous/test_auth_oidc.py @@ -58,6 +58,7 @@ DOMAIN = os.environ.get("OIDC_DOMAIN", "") TOKEN_DIR = os.environ.get("OIDC_TOKEN_DIR", "") TOKEN_FILE = os.environ.get("OIDC_TOKEN_FILE", "") +APP_NAME = os.environ.get("OIDC_APP_NAME", "auth_oidc") # Generate unified tests. globals().update(generate_test_classes(get_test_path("auth", "unified"), module=__name__)) @@ -104,15 +105,16 @@ def get_token(self, username=None): @asynccontextmanager async def fail_point(self, command_args): - cmd_on = dict(configureFailPoint="failCommand", appName="auth_oidc") + cmd_on = dict(configureFailPoint="failCommand") cmd_on.update(command_args) + cmd_on["data"]["appName"] = APP_NAME client = AsyncMongoClient(self.uri_admin) await client.admin.command(cmd_on) try: yield finally: await client.admin.command( - "configureFailPoint", cmd_on["configureFailPoint"], mode="off", appName="auth_oidc" + "configureFailPoint", cmd_on["configureFailPoint"], mode="off", appName=APP_NAME ) await client.close() diff --git a/test/test_auth_oidc.py b/test/test_auth_oidc.py index 5250e31da1..738fd0f82e 100644 --- a/test/test_auth_oidc.py +++ b/test/test_auth_oidc.py @@ -58,6 +58,7 @@ DOMAIN = os.environ.get("OIDC_DOMAIN", "") TOKEN_DIR = os.environ.get("OIDC_TOKEN_DIR", "") TOKEN_FILE = os.environ.get("OIDC_TOKEN_FILE", "") +APP_NAME = os.environ.get("OIDC_APP_NAME", "auth_oidc") # Generate unified tests. globals().update(generate_test_classes(get_test_path("auth", "unified"), module=__name__)) @@ -104,15 +105,16 @@ def get_token(self, username=None): @contextmanager def fail_point(self, command_args): - cmd_on = dict(configureFailPoint="failCommand", appName="auth_oidc") + cmd_on = dict(configureFailPoint="failCommand") cmd_on.update(command_args) + cmd_on["data"]["appName"] = APP_NAME client = MongoClient(self.uri_admin) client.admin.command(cmd_on) try: yield finally: client.admin.command( - "configureFailPoint", cmd_on["configureFailPoint"], mode="off", appName="auth_oidc" + "configureFailPoint", cmd_on["configureFailPoint"], mode="off", appName=APP_NAME ) client.close()