Create unittests for case changes of cnfvar varnames
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 7 Feb 2019 11:59:17 +0000 (12:59 +0100)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 7 Feb 2019 15:10:53 +0000 (16:10 +0100)
test/test_cnfvar.py

index 3a0f18a..3cdf0fb 100755 (executable)
@@ -377,5 +377,44 @@ class CnfVarUnittest(unittest.TestCase):
             cnfvar.print_cnf(cnf, out=devnull)
 
 
+class CnfVarUnittestVarnameCase(unittest.TestCase):
+    """Tests for verifying that uppercasing/lowercasing of varname works."""
+    # TODO: rethink whether this lower-casing is worth all the effort it causes
+
+    def test_dump_cnf_uppercase(self):
+        """Test dump of cnfvars results in uppercase var names."""
+        cnf = {"cnf": [
+            {"instance": 0, "varname": "dialout_mode",
+              "data": "ONLINE", "number": 1, "comment": None},
+            {"instance": 0, "varname": "dialout_defaultprovider_ref",
+             "data": "1", "number": 2, "comment": None},
+            {"instance": 0, "varname": "hypothetical_parent",
+             "data": "parent value", "number": 3, "comment": None,
+             "children": [
+            {"instance": 0, "varname": "hypothetical_child",
+             "data": "0", "number": 4, "parent": 3, "comment": None},
+            {"instance": 1, "varname": "hypothetical_child",
+             "data": "1", "number": 5, "parent": 3, "comment": None}]}
+        ]}
+        serialization = cnfvar.dump_json_string(cnf)
+        self.assertIn('DIALOUT_MODE', serialization)
+        self.assertIn('DIALOUT_DEFAULTPROVIDER_REF', serialization)
+        self.assertIn('HYPOTHETICAL_CHILD', serialization)
+        self.assertNotIn('dialout_mode', serialization)
+        self.assertNotIn('dialout_defaultprovider_ref', serialization)
+        self.assertNotIn('hypothetical_child', serialization)
+
+    def test_read_cnf_lowercase(self):
+        """Test that after reading, varnames are lowercase."""
+        cnf = cnfvar.read_cnf_json(demo_jsoncnf.encode('latin1'))
+        for parentvar  in cnf['cnf']:
+            self.assertEqual(parentvar['varname'],
+                             parentvar['varname'].lower())
+            if 'children' in parentvar:
+                for childvar in parentvar['children']:
+                    self.assertEqual(parentvar['varname'],
+                                     parentvar['varname'].lower())
+
+
 if __name__ == '__main__':
     unittest.main()