This commit is contained in:
2026-10-23 20:28:35 -04:00
parent 082fa31535
commit d19aef28eb
4 changed files with 130 additions and 24 deletions
+20 -10
View File
@@ -8,31 +8,41 @@ from kubernetes_validate import validate
from ansible.parsing.dataloader import DataLoader
from ansible.template import Templar
# Resolve the site's actual workflow variables with fixture credentials only;
# verify both Matrix-only migration and opt-in website integration.
# Resolve the site's actual workflow with fixture credentials only.
defaults = yaml.safe_load(Path('defaults/main.yml').read_text())
site = yaml.safe_load(Path('playbooks/deploy-eom.yml').read_text())[0]['vars']
for website_enabled in (False, True):
for fixture_run in (1,):
variables = {
**defaults, **site,
'dex_admin_password': 'fixture-db',
'openldap_readonly_password': 'fixture-ldap',
'matrix_dex_oidc_client_id': 'matrix-fixture',
'matrix_dex_oidc_client_secret': 'fixture-matrix',
'www_dex_client_secret': 'fixture-www',
'gitea_dex_client_secret': 'fixture-gitea',
'discourse_dex_client_secret': 'fixture-discourse',
'peertube_dex_client_secret': 'fixture-peertube',
'mastodon_dex_client_secret': 'fixture-mastodon',
'nextcloud_dex_client_secret': 'fixture-nextcloud',
}
if website_enabled:
variables['www_dex_client_secret'] = 'fixture-www'
resolved = Templar(loader=DataLoader(), variables=variables).template(site)
assert resolved['dex_issuer'] == 'https://dex.eom.dev/'
assert resolved['dex_postgres_password'] == 'fixture-db'
assert resolved['dex_ldap_group_user_attribute'] == 'cn'
assert resolved['dex_theme_enabled'] is True
assert resolved['dex_postgres_manage'] is False
assert bool(resolved['dex_static_clients']) == website_enabled
assert bool(resolved['dex_additional_connectors']) == website_enabled
if website_enabled:
assert resolved['dex_static_clients'][0]['secret'] == 'fixture-www'
assert resolved['dex_additional_connectors'][0]['config']['userSearch']['idAttr'] == 'entryUUID'
clients = {client['id']: client for client in resolved['dex_static_clients']}
assert len(clients) == len(resolved['dex_static_clients']) == 7
assert resolved['dex_matrix_client_enabled'] is False
assert clients['matrix-fixture']['redirectURIs'] == ['https://mas.eom.dev/upstream/callback/01K96AQEZKKABW34PY3R6BVNJ4']
assert clients['www-membership']['secret'] == 'fixture-www'
assert clients['gitea']['redirectURIs'] == ['https://gitea.eom.dev/user/oauth2/dex/callback']
assert clients['discourse']['redirectURIs'] == ['https://discourse.eom.dev/auth/oidc/callback']
assert clients['peertube']['redirectURIs'] == ['https://peertube.eom.dev/plugins/auth-openid-connect/router/code-cb']
assert clients['mastodon']['redirectURIs'] == ['https://mastodon.eom.dev/auth/auth/openid_connect/callback']
assert clients['nextcloud']['redirectURIs'] == ['https://nextcloud.eom.dev/index.php/apps/user_oidc/code']
assert all(client['secret'] and len(client['redirectURIs']) == 1 for client in clients.values())
assert resolved['dex_additional_connectors'][0]['config']['userSearch']['idAttr'] == 'entryUUID'
values = yaml.safe_load(Path('/tmp/dex-values.yml').read_text())
config = values['config']