Files
cftemail/tests/test_app_admin.py

102 lines
3.7 KiB
Python

from __future__ import annotations
from cf_temp_email_deploy.app_admin import (
LINUXDO_ACCESS_TOKEN_URL,
LINUXDO_AUTHORIZATION_URL,
LINUXDO_SCOPE,
LINUXDO_USER_INFO_URL,
build_linuxdo_oauth2_setting,
merge_linuxdo_oauth2_settings,
merge_user_settings,
)
def test_merge_user_settings_preserves_existing_fields_and_updates_enable() -> None:
current = {
"enable": True,
"enableMailVerify": True,
"verifyMailSender": "noreply@example.com",
"enableMailAllowList": True,
"mailAllowList": ["allowed@example.com"],
"maxAddressCount": 9,
"enableEmailCheckRegex": True,
"emailCheckRegex": ".*",
}
merged = merge_user_settings(current, False)
assert merged["enable"] is False
assert merged["enableMailVerify"] is True
assert merged["verifyMailSender"] == "noreply@example.com"
assert merged["enableMailAllowList"] is True
assert merged["mailAllowList"] == ["allowed@example.com"]
assert merged["maxAddressCount"] == 9
assert merged["enableEmailCheckRegex"] is True
assert merged["emailCheckRegex"] == ".*"
def test_build_linuxdo_oauth2_setting_matches_expected_fields() -> None:
setting = build_linuxdo_oauth2_setting(
pages_domain="email.example.com",
client_id="linuxdo-client-id",
client_secret="linuxdo-client-secret",
)
assert setting["name"] == "LINUX DO"
assert setting["clientID"] == "linuxdo-client-id"
assert setting["clientSecret"] == "linuxdo-client-secret"
assert setting["authorizationURL"] == LINUXDO_AUTHORIZATION_URL
assert setting["accessTokenURL"] == LINUXDO_ACCESS_TOKEN_URL
assert setting["userInfoURL"] == LINUXDO_USER_INFO_URL
assert setting["redirectURL"] == "https://email.example.com/user/oauth2/callback"
assert setting["scope"] == LINUXDO_SCOPE
assert setting["enableEmailFormat"] is True
assert setting["userEmailReplace"] == "linux_do_$1@oauth.linux.do"
def test_merge_linuxdo_oauth2_settings_appends_when_missing() -> None:
merged = merge_linuxdo_oauth2_settings(
[{"name": "GitHub", "clientID": "github-client"}],
pages_domain="email.example.com",
client_id="linuxdo-client-id",
client_secret="linuxdo-client-secret",
)
assert len(merged) == 2
assert merged[0]["name"] == "GitHub"
assert merged[1]["name"] == "LINUX DO"
assert merged[1]["redirectURL"] == "https://email.example.com/user/oauth2/callback"
def test_merge_linuxdo_oauth2_settings_replaces_existing_and_preserves_selected_fields() -> None:
current = [
{
"name": "linux do",
"clientID": "old-client-id",
"clientSecret": "old-client-secret",
"authorizationURL": LINUXDO_AUTHORIZATION_URL,
"accessTokenURL": LINUXDO_ACCESS_TOKEN_URL,
"userInfoURL": LINUXDO_USER_INFO_URL,
"redirectURL": "https://old.example.com/user/oauth2/callback",
"logoutURL": "https://connect.linux.do/logout",
"enableMailAllowList": True,
"mailAllowList": ["allowed@example.com"],
}
]
merged = merge_linuxdo_oauth2_settings(
current,
pages_domain="email.example.com",
client_id="linuxdo-client-id",
client_secret="linuxdo-client-secret",
)
assert len(merged) == 1
assert merged[0]["name"] == "LINUX DO"
assert merged[0]["clientID"] == "linuxdo-client-id"
assert merged[0]["clientSecret"] == "linuxdo-client-secret"
assert merged[0]["redirectURL"] == "https://email.example.com/user/oauth2/callback"
assert merged[0]["logoutURL"] == "https://connect.linux.do/logout"
assert merged[0]["enableMailAllowList"] is True
assert merged[0]["mailAllowList"] == ["allowed@example.com"]