agnes-the-ai-analyst/tests/test_username_generation.py
Petr f635195c80 Add multi-domain support and full-email username generation
- Support comma-separated domains in auth.allowed_domain config
- Use full email as system username (user@domain.com -> user_domain_com)
  to avoid collisions with reserved names and across domains
- Update both auth providers (google, email) for multi-domain display
- Add tests for username generation and update email auth tests
2026-03-10 10:50:01 +01:00

51 lines
1.9 KiB
Python

"""Tests for username generation from email addresses."""
import pytest
from webapp.user_service import get_username_from_email, RESERVED_USERNAMES
class TestGetUsernameFromEmail:
"""Test email-to-username conversion."""
def test_basic_email(self):
assert get_username_from_email("admin@test.com") == "admin_test_com"
def test_email_with_dots(self):
assert get_username_from_email("john.doe@acme.com") == "john_doe_acme_com"
def test_different_domains_produce_different_usernames(self):
"""Same local part, different domains -> unique usernames."""
u1 = get_username_from_email("pavel@test.com")
u2 = get_username_from_email("pavel@groupon.com")
u3 = get_username_from_email("pavel@keboola.com")
assert u1 == "pavel_test_com"
assert u2 == "pavel_groupon_com"
assert u3 == "pavel_keboola_com"
assert len({u1, u2, u3}) == 3 # all unique
def test_email_normalized_to_lowercase(self):
assert get_username_from_email("Admin@Test.COM") == "admin_test_com"
def test_empty_email(self):
assert get_username_from_email("") == ""
def test_no_at_sign(self):
assert get_username_from_email("notanemail") == ""
def test_none_email(self):
assert get_username_from_email(None) == ""
def test_reserved_names_avoided(self):
"""Usernames from emails should NOT collide with reserved names."""
# admin@anything.com -> admin_anything_com (not 'admin')
username = get_username_from_email("admin@company.com")
assert username not in RESERVED_USERNAMES
assert username == "admin_company_com"
def test_test_email_not_reserved(self):
username = get_username_from_email("test@company.com")
assert username not in RESERVED_USERNAMES
def test_subdomain_email(self):
assert get_username_from_email("user@mail.acme.co.uk") == "user_mail_acme_co_uk"