102 lines
3.7 KiB
Python
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"]
|