installer: restore cell identity prompts and domain setup
Unit Tests / test (push) Successful in 15m39s
Unit Tests / test (push) Successful in 15m39s
Reverts 8d1ef39. The installer must collect cell name, domain mode, and
provider tokens before 'make install' so that DDNS registration,
availability checks, and Caddy TLS can be configured at first boot.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -320,3 +320,60 @@ def test_get_setup_status_preconfigured_returns_installer_values(setup_manager,
|
||||
assert pre['domain_mode'] == 'pic_ngo'
|
||||
assert pre['domain_name'] == 'myhome.pic.ngo'
|
||||
assert 'cloudflare_api_token' not in pre
|
||||
|
||||
|
||||
# ── _build_ddns_config ────────────────────────────────────────────────────────
|
||||
|
||||
from setup_manager import _build_ddns_config
|
||||
|
||||
|
||||
def test_build_ddns_config_pic_ngo():
|
||||
cfg = _build_ddns_config('pic_ngo')
|
||||
assert cfg['provider'] == 'pic_ngo'
|
||||
assert cfg['enabled'] is True
|
||||
|
||||
|
||||
def test_build_ddns_config_cloudflare_includes_token():
|
||||
cfg = _build_ddns_config('cloudflare', cloudflare_api_token='tok123')
|
||||
assert cfg['provider'] == 'cloudflare'
|
||||
assert cfg['api_token'] == 'tok123'
|
||||
|
||||
|
||||
def test_build_ddns_config_duckdns_includes_token_and_subdomain():
|
||||
cfg = _build_ddns_config('duckdns', duckdns_token='duck', duckdns_subdomain='myhome')
|
||||
assert cfg['provider'] == 'duckdns'
|
||||
assert cfg['token'] == 'duck'
|
||||
assert cfg['subdomain'] == 'myhome'
|
||||
|
||||
|
||||
def test_build_ddns_config_lan_disabled():
|
||||
cfg = _build_ddns_config('lan')
|
||||
assert cfg['provider'] == 'none'
|
||||
assert cfg['enabled'] is False
|
||||
|
||||
|
||||
# ── ddns config written on complete_setup ─────────────────────────────────────
|
||||
|
||||
def test_complete_setup_writes_ddns_config_section(
|
||||
setup_manager, mock_config_manager, mock_auth_manager, tmp_path):
|
||||
mock_config_manager.get_identity.return_value = {}
|
||||
with patch.dict(os.environ, {'DATA_DIR': str(tmp_path)}):
|
||||
setup_manager.complete_setup(_valid_payload(domain_mode='lan'))
|
||||
mock_config_manager.set_ddns_config.assert_called_once()
|
||||
ddns_arg = mock_config_manager.set_ddns_config.call_args[0][0]
|
||||
assert ddns_arg['provider'] == 'none'
|
||||
|
||||
|
||||
def test_complete_setup_writes_cloudflare_ddns_config(
|
||||
setup_manager, mock_config_manager, mock_auth_manager, tmp_path):
|
||||
mock_config_manager.get_identity.return_value = {}
|
||||
payload = _valid_payload(
|
||||
domain_mode='cloudflare',
|
||||
domain_name='home.example.com',
|
||||
cloudflare_api_token='cf-token-xyz',
|
||||
)
|
||||
with patch.dict(os.environ, {'DATA_DIR': str(tmp_path)}):
|
||||
setup_manager.complete_setup(payload)
|
||||
ddns_arg = mock_config_manager.set_ddns_config.call_args[0][0]
|
||||
assert ddns_arg['provider'] == 'cloudflare'
|
||||
assert ddns_arg['api_token'] == 'cf-token-xyz'
|
||||
|
||||
Reference in New Issue
Block a user