@@ -1525,6 +1525,11 @@ def test_frontend_managed_aliases_use_clean_domain(monkeypatch):
15251525 monkeypatch .setattr (frontend_router .SETTINGS , "alias_managed_enabled" , True )
15261526 monkeypatch .setattr (frontend_router .SETTINGS , "alias_domain" , "inboxanchor.com" )
15271527 monkeypatch .setattr (frontend_router .SETTINGS , "alias_resolver_secret" , "resolver-secret" )
1528+ monkeypatch .setattr (
1529+ frontend_router .SETTINGS ,
1530+ "alias_resolver_base_url" ,
1531+ "https://api.inboxanchor.com" ,
1532+ )
15281533 monkeypatch .setattr (frontend_router .SETTINGS , "alias_inbound_ready" , True )
15291534
15301535 signup = client .post (
@@ -1557,6 +1562,8 @@ def test_frontend_managed_aliases_use_clean_domain(monkeypatch):
15571562 assert listed_payload ["managed_enabled" ] is True
15581563 assert listed_payload ["managed_ready" ] is True
15591564 assert listed_payload ["managed_resolver_configured" ] is True
1565+ assert listed_payload ["managed_resolver_base_url" ] == "https://api.inboxanchor.com"
1566+ assert listed_payload ["managed_public_backend_ready" ] is True
15601567 assert listed_payload ["managed_inbound_ready" ] is True
15611568 assert listed_payload ["managed_blockers" ] == []
15621569 assert listed_payload ["domain" ] == "inboxanchor.com"
@@ -1568,6 +1575,7 @@ def test_frontend_managed_alias_generation_requires_live_inbound(monkeypatch):
15681575 monkeypatch .setattr (frontend_router .SETTINGS , "alias_managed_enabled" , True )
15691576 monkeypatch .setattr (frontend_router .SETTINGS , "alias_domain" , "inboxanchor.com" )
15701577 monkeypatch .setattr (frontend_router .SETTINGS , "alias_resolver_secret" , "" )
1578+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_resolver_base_url" , "http://127.0.0.1:8010" )
15711579 monkeypatch .setattr (frontend_router .SETTINGS , "alias_inbound_ready" , False )
15721580
15731581 signup = client .post (
@@ -1586,6 +1594,8 @@ def test_frontend_managed_alias_generation_requires_live_inbound(monkeypatch):
15861594 assert listed_payload ["managed_enabled" ] is True
15871595 assert listed_payload ["managed_ready" ] is False
15881596 assert listed_payload ["managed_resolver_configured" ] is False
1597+ assert listed_payload ["managed_resolver_base_url" ] == "http://127.0.0.1:8010"
1598+ assert listed_payload ["managed_public_backend_ready" ] is False
15891599 assert listed_payload ["managed_inbound_ready" ] is False
15901600 assert listed_payload ["managed_blockers" ]
15911601
@@ -1599,6 +1609,49 @@ def test_frontend_managed_alias_generation_requires_live_inbound(monkeypatch):
15991609 assert "managed aliases are configured but not live yet" in generated .json ()["detail" ].lower ()
16001610
16011611
1612+ def test_frontend_alias_generation_falls_back_to_plus_when_managed_path_is_not_live (monkeypatch ):
1613+ from inboxanchor .api .v1 .routers import frontend as frontend_router
1614+
1615+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_managed_enabled" , True )
1616+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_domain" , "inboxanchor.com" )
1617+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_resolver_secret" , "" )
1618+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_resolver_base_url" , "http://127.0.0.1:8010" )
1619+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_inbound_ready" , False )
1620+ monkeypatch .setattr (frontend_router .SETTINGS , "alias_allow_plus_fallback" , True )
1621+
1622+ signup = client .post (
1623+ "/auth/signup" ,
1624+ json = {
1625+ "full_name" : "Fallback Alias Operator" ,
1626+ "email" : "fallback-managed-owner@example.com" ,
1627+ "password" : "fallback-managed-pass" ,
1628+ },
1629+ )
1630+ token = signup .json ()["token" ]
1631+ client .put (
1632+ "/providers/gmail/connection" ,
1633+ json = {
1634+ "status" : "connected" ,
1635+ "account_hint" : "fallback-owner@gmail.com" ,
1636+ "sync_enabled" : True ,
1637+ "dry_run_only" : False ,
1638+ "notes" : "Connected for alias fallback tests." ,
1639+ },
1640+ )
1641+
1642+ generated = client .post (
1643+ "/aliases/generate" ,
1644+ headers = {"Authorization" : f"Bearer { token } " },
1645+ json = {"label" : "travel" , "purpose" : "airlines" },
1646+ )
1647+
1648+ assert generated .status_code == 200
1649+ payload = generated .json ()
1650+ assert payload ["alias_type" ] == "plus"
1651+ assert "+ia-travel" in payload ["alias_address" ]
1652+ assert "Managed InboxAnchor aliases are not live yet" in payload ["note" ]
1653+
1654+
16021655def test_frontend_alias_resolve_returns_forwarding_payload (monkeypatch ):
16031656 from inboxanchor .api .v1 .routers import frontend as frontend_router
16041657
@@ -1609,6 +1662,11 @@ def test_frontend_alias_resolve_returns_forwarding_payload(monkeypatch):
16091662 "alias_resolver_secret" ,
16101663 "resolver-secret" ,
16111664 )
1665+ monkeypatch .setattr (
1666+ frontend_router .SETTINGS ,
1667+ "alias_resolver_base_url" ,
1668+ "https://api.inboxanchor.com" ,
1669+ )
16121670 monkeypatch .setattr (frontend_router .SETTINGS , "alias_inbound_ready" , True )
16131671
16141672 signup = client .post (
0 commit comments