changeset 692:db764da37cd2

Add a test with a "real-world" config structure with regard to references and jails
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 11 Jun 2023 16:47:29 +0200
parents 4643f801379e
children 2848e0212a3d
files tests/data/jail-root-ref.yml tests/test.py
diffstat 2 files changed, 38 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/tests/data/jail-root-ref.yml	Sat Jun 10 22:33:11 2023 +0200
+++ b/tests/data/jail-root-ref.yml	Sun Jun 11 16:47:29 2023 +0200
@@ -22,4 +22,27 @@
 
 the-root:
   ref1: '{{ref:#target1.tree1}}'
-  ref2: '{{ref:#target2.tree2}}'  
+  ref2: '{{ref:#target2.tree2}}'
+
+
+realworld:
+  keysets:
+    access-sign:
+      - name: key-1
+        type: something1
+        data: !!null
+      - name: key-2
+        type: something2
+        data:
+
+    job-sign: '{{ref:#realworld.keysets.access-sign}}'
+
+  token:
+    access:
+      nbf: -2
+      exp: 7200
+      sign: '{{ref:#realworld.keysets.access-sign}}'
+    job:
+      nbf: -2
+      exp: 600
+      sign: '{{ref:#realworld.keysets.job-sign}}'
--- a/tests/test.py	Sat Jun 10 22:33:11 2023 +0200
+++ b/tests/test.py	Sun Jun 11 16:47:29 2023 +0200
@@ -2022,6 +2022,20 @@
         self.assertEqual("v6", jcfg2.getvarl_s("k6"))
         self.assertEqual("v3", jcfg2.getvarl_s("ks"))
 
+    def test_jails_and_refs_tree(self):
+        cfg = configmix.load(os.path.join(
+            TESTDATADIR, "jail-root-ref.yml"))
+        for flavour in ("access", "job"):
+            tokcfg = cfg.jailed(rootpath=("realworld", "token", flavour))
+            self.assertEqual(-2, tokcfg.getintvar_s("nbf"))
+            for idx, keysetcfg in enumerate(
+                    tokcfg.jailed(rootpath=("sign",)).iter_jailed()):
+                self.assertEqual("key-%d" % (idx+1,),
+                                 keysetcfg.getvarl_s("name"))
+                self.assertEqual("something%d" % (idx+1,),
+                                 keysetcfg.getvarl_s("type"))
+                self.assertIsNone(keysetcfg.getvarl_s("data"))
+
 
 class _TParserMixin:
     def test_quote_and_unquote_empty(self):