from ariadne.services import nextcloud_mail_models as models def test_extract_attr_variants() -> None: assert models._extract_attr("not-attrs", "mailu_email") == "" assert models._extract_attr({"mailu_email": ["", " "]}, "mailu_email") == "" assert models._extract_attr({"mailu_email": " alice@bstein.dev "}, "mailu_email") == "alice@bstein.dev" def test_resolve_mailu_email_uses_matching_keycloak_email() -> None: user = {"email": " Alice@BSTEIN.DEV ", "attributes": {}} assert models._resolve_mailu_email("alice", user) == "Alice@BSTEIN.DEV" def test_parse_mail_export_skips_blank_lines() -> None: output = """ Account 7: - E-mail: alice@bstein.dev """ assert models._parse_mail_export(output) == [("7", "alice@bstein.dev")] def test_display_name_joins_first_and_last() -> None: assert models.display_name({"firstName": " Alice ", "lastName": " Atlas "}) == "Alice Atlas"