以 IaC 管理 Incus 接入与 Ayatori 双环境基础容器
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import unittest
|
||||
|
||||
from reconcile_authelia import merge
|
||||
|
||||
|
||||
class MergeTests(unittest.TestCase):
|
||||
def test_preserves_unrelated_state_and_converges(self):
|
||||
before = {'configMap': {'identity_providers': {'oidc': {
|
||||
'clients': [{'client_id': 'hydra', 'client_secret': 'test-only'}],
|
||||
'claims_policies': {'existing': {'id_token': ['email']}},
|
||||
'authorization_policies': {'existing': {'default_policy': 'two_factor'}},
|
||||
}}}}
|
||||
desired = {'clients': [{'client_id': 'incus', 'public': True}],
|
||||
'authorization_policies': {'incus_admin': {'default_policy': 'deny'}}}
|
||||
after = merge(before, desired)
|
||||
oidc = after['configMap']['identity_providers']['oidc']
|
||||
self.assertEqual(oidc['clients'][0], before['configMap']['identity_providers']['oidc']['clients'][0])
|
||||
self.assertIn('existing', oidc['claims_policies'])
|
||||
self.assertIn('existing', oidc['authorization_policies'])
|
||||
self.assertEqual(len(before['configMap']['identity_providers']['oidc']['clients']), 1)
|
||||
self.assertEqual(merge(after, desired), after)
|
||||
desired['clients'][0]['public'] = False
|
||||
self.assertFalse(merge(after, desired)['configMap']['identity_providers']['oidc']['clients'][1]['public'])
|
||||
|
||||
def test_rejects_duplicate_identity(self):
|
||||
before = {'configMap': {'identity_providers': {'oidc': {'clients': [{'client_id': 'incus'}, {'client_id': 'incus'}]}}}}
|
||||
with self.assertRaises(ValueError):
|
||||
merge(before, {'clients': [{'client_id': 'incus'}], 'authorization_policies': {}})
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user