fix(collaboration): configure federation from existing deployment settings

This commit is contained in:
2026-10-02 16:58:57 +02:00
parent d7382e7319
commit 09a002d600
11 changed files with 146 additions and 15 deletions

View File

@@ -420,6 +420,40 @@ class UpdateTests(unittest.TestCase):
self.assertLess(next(i for i, a in enumerate(calls) if 'pull' in a), next(i for i, a in enumerate(calls) if 'stop' in a))
self.assertLess(next(i for i, a in enumerate(calls) if 'pg_restore' in a), next(i for i, a in enumerate(calls) if 'migrate' in a))
def use_pre_federation_installation(self, extra_env=b''):
keys = (b'FEDEO_PUBLIC_URL', b'FEDEO_FEDERATION_URL', b'FEDEO_FEDERATION_ENABLED')
self.original_env = b''.join(line for line in self.original_env.splitlines(True)
if not line.startswith(keys)) + extra_env
self.original_compose = b''.join(line for line in self.original_compose.splitlines(True)
if not line.lstrip().startswith(keys))
(self.root / '.env').write_bytes(self.original_env)
(self.root / 'docker-compose.yml').write_bytes(self.original_compose)
def test_update_adds_federation_compose_defaults_without_requiring_new_env_settings(self):
self.use_pre_federation_installation()
result = self.run_update()
self.assertEqual(result['status'], 'succeeded')
env = self.updater.candidate['services']['backend']['environment']
self.assertEqual(env['FEDEO_FEDERATION_ENABLED'], 'auto')
self.assertEqual(env['API_BASE_URL'], 'https://app.example.com/backend')
self.assertEqual(env['FEDEO_FEDERATION_URL'], '')
self.assertEqual(env['FEDEO_PUBLIC_URL'], '')
self.assertEqual((self.root / '.env').read_bytes(), u.set_version(self.original_env, '3.1.0'))
self.assertIn(b'FEDEO_FEDERATION_ENABLED', (self.root / 'docker-compose.yml').read_bytes())
def test_update_preserves_explicit_federation_opt_out_and_url_overrides(self):
self.use_pre_federation_installation(
b'\nFEDEO_FEDERATION_ENABLED=false\n'
b'FEDEO_FEDERATION_URL=https://gateway.example/backend\n'
b'FEDEO_PUBLIC_URL=https://portal.example\n')
result = self.run_update()
self.assertEqual(result['status'], 'succeeded')
env = self.updater.candidate['services']['backend']['environment']
self.assertEqual(env['FEDEO_FEDERATION_ENABLED'], 'false')
self.assertEqual(env['FEDEO_FEDERATION_URL'], 'https://gateway.example/backend')
self.assertEqual(env['FEDEO_PUBLIC_URL'], 'https://portal.example')
self.assertEqual((self.root / '.env').read_bytes(), u.set_version(self.original_env, '3.1.0'))
def test_check_only_creates_a_plan_and_ignores_unpublished_releases(self):
result = self.updater.execute('check')
self.assertEqual(result['version'], '3.1.0')