Convert the old cnfvar module into a cnfvar string parsing module
[pyi2ncommon] / test / test_cnfvar_old.py
diff --git a/test/test_cnfvar_old.py b/test/test_cnfvar_old.py
deleted file mode 100755 (executable)
index 8efe0a3..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-#!/usr/bin/env python
-# This Python file uses the following encoding: utf-8
-
-# The software in this package is distributed under the GNU General
-# Public License version 2 (with a special exception described below).
-#
-# A copy of GNU General Public License (GPL) is included in this distribution,
-# in the file COPYING.GPL.
-#
-# As a special exception, if other files instantiate templates or use macros
-# or inline functions from this file, or you compile this file and link it
-# with other works to produce a work based on this file, this file
-# does not by itself cause the resulting work to be covered
-# by the GNU General Public License.
-#
-# However the source code for this file must still be made available
-# in accordance with section (3) of the GNU General Public License.
-#
-# This exception does not invalidate any other reasons why a work based
-# on this file might be covered by the GNU General Public License.
-#
-# Copyright (c) 2016-2018 Intra2net AG <info@intra2net.com>
-
-import os
-import unittest
-
-from src import cnfvar_old
-
-#
-#                                  test data
-#
-
-# model cnf tree
-demo_cnfvar = {"cnf": [
-    {
-        "varname": "MY_FAVORITE_CNF_VAR",
-        "instance": 1337,
-        "number": 42,
-        "data": "string conf content",
-        "comment": ""
-    },
-    {
-        "varname": "SOME_NESTED_CNF_VAR",
-        "instance": 0,
-        "number": 23,
-        "data": "999",
-        "comment": "",
-        "children": [
-            {
-                "varname": "SOME_CHILD_VAR",
-                "instance": 1,
-                "number": 24,
-                "data": "2014",
-                "parent": 23,
-                "comment": ""
-            }
-        ]
-    },
-]}
-
-# duplicate line number
-demo_invalid_cnfvar = {"cnf": [
-    {
-        "varname": "SOME_PARTICULARLY_TASTY_CNF_VAR",
-        "instance": 1337,
-        "number": 23,
-        "data": "classic wingers",
-        "comment": ""
-    },
-    {
-        "varname": "EXTRAORDINARILY_FANCY_CNF_VAR",
-        "instance": 1,
-        "number": 42,
-        "data": "ab mentions",
-        "comment": ""
-    },
-    {
-        "varname": "ANOTHER_POPULAR_CNF_VAR",
-        "instance": 0,
-        "number": 42,
-        "data": "notches",
-        "comment": ""
-    }
-]}
-
-demo_jsoncnf = """
-{
-    "cnf" : [
-        {
-            "children" : [
-                {
-                    "comment" : "",
-                    "data" : "1",
-                    "instance" : 0,
-                    "number" : 2,
-                    "parent" : 1,
-                    "varname" : "FIREWALL_SERVICEGROUP_PREDEFINED_ID"
-                },
-                {
-                    "children" : [
-                        {
-                            "comment" : "",
-                            "data" : "",
-                            "instance" : 0,
-                            "number" : 4,
-                            "parent" : 3,
-                            "varname" : "FIREWALL_SERVICEGROUP_TYPE_COMMENT"
-                        },
-                        {
-                            "comment" : "",
-                            "data" : "80",
-                            "instance" : 0,
-                            "number" : 5,
-                            "parent" : 3,
-                            "varname" : "FIREWALL_SERVICEGROUP_TYPE_TCPUDP_DST_PORT"
-                        }
-                    ],
-                    "comment" : "",
-                    "data" : "TCP",
-                    "instance" : 0,
-                    "number" : 3,
-                    "parent" : 1,
-                    "varname" : "FIREWALL_SERVICEGROUP_TYPE"
-                }
-            ],
-            "comment" : "",
-            "data" : "http",
-            "instance" : 1,
-            "number" : 1,
-            "varname" : "FIREWALL_SERVICEGROUP"
-        },
-        {
-            "children" : [
-                {
-                    "comment" : "",
-                    "data" : "2",
-                    "instance" : 0,
-                    "number" : 7,
-                    "parent" : 6,
-                    "varname" : "FIREWALL_SERVICEGROUP_PREDEFINED_ID"
-                },
-                {
-                    "children" : [
-                        {
-                            "comment" : "",
-                            "data" : "",
-                            "instance" : 0,
-                            "number" : 9,
-                            "parent" : 8,
-                            "varname" : "FIREWALL_SERVICEGROUP_TYPE_COMMENT"
-                        },
-                        {
-                            "comment" : "",
-                            "data" : "443",
-                            "instance" : 0,
-                            "number" : 10,
-                            "parent" : 8,
-                            "varname" : "FIREWALL_SERVICEGROUP_TYPE_TCPUDP_DST_PORT"
-                        }
-                    ],
-                    "comment" : "",
-                    "data" : "TCP",
-                    "instance" : 0,
-                    "number" : 8,
-                    "parent" : 6,
-                    "varname" : "FIREWALL_SERVICEGROUP_TYPE"
-                }
-            ],
-            "comment" : "",
-            "data" : "https",
-            "instance" : 2,
-            "number" : 6,
-            "varname" : "FIREWALL_SERVICEGROUP"
-        }
-    ]
-}
-"""
-
-demo_jsoncnf_bytes = demo_jsoncnf.encode ("latin-1")
-
-demo_nonascii = r"""
-{ "cnf" : [
-    {
-        "children" : [
-            {
-                "comment" : "",
-                "data" : "0",
-                "instance" : 0,
-                "number" : 2,
-                "parent" : 1,
-                "varname" : "USER_DISABLED"
-            },
-            {
-                "comment" : "",
-                "data" : "Administrator",
-                "instance" : 0,
-                "number" : 3,
-                "parent" : 1,
-                "varname" : "USER_FULLNAME"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Kalender",
-                "instance" : 0,
-                "number" : 4,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_CALENDAR"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Kontakte",
-                "instance" : 0,
-                "number" : 5,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_CONTACTS"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Entwürfe",
-                "instance" : 0,
-                "number" : 6,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_DRAFTS"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Notizen",
-                "instance" : 0,
-                "number" : 7,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_NOTES"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Gesendete Elemente",
-                "instance" : 0,
-                "number" : 8,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_OUTBOX"
-            },
-            {
-                "comment" : "",
-                "data" : "INBOX/Aufgaben",
-                "instance" : 0,
-                "number" : 9,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_TASKS"
-            },
-
-            {
-                "comment" : "",
-                "data" : "INBOX/Gelöschte Elemente",
-                "instance" : 0,
-                "number" : 10,
-                "parent" : 1,
-                "varname" : "USER_GROUPWARE_FOLDER_TRASH"
-            },
-            {
-                "comment" : "",
-                "data" : "1",
-                "instance" : 0,
-                "number" : 11,
-                "parent" : 1,
-                "varname" : "USER_GROUP_MEMBER_REF"
-            },
-            {
-                "comment" : "",
-                "data" : "2",
-                "instance" : 1,
-                "number" : 12,
-                "parent" : 1,
-                "varname" : "USER_GROUP_MEMBER_REF"
-            },
-            {
-                "comment" : "",
-                "data" : "",
-                "instance" : 0,
-                "number" : 13,
-                "parent" : 1,
-                "varname" : "USER_LOCALE"
-            },
-            {
-                "comment" : "",
-                "data" : "idkfa",
-                "instance" : 0,
-                "number" : 14,
-                "parent" : 1,
-                "varname" : "USER_PASSWORD"
-            },
-            {
-                "comment" : "",
-                "data" : "30",
-                "instance" : 0,
-                "number" : 15,
-                "parent" : 1,
-                "varname" : "USER_TRASH_DELETEDAYS"
-            }
-        ],
-        "comment" : "",
-        "data" : "admin",
-        "instance" : 1,
-        "number" : 1,
-        "varname" : "USER"
-    }
-]}
-"""
-
-demo_latin1crap = demo_nonascii.encode('latin1')
-
-demo_cnf_group = """
-1 GROUP,1: "Administratoren"
-2    (1) GROUP_ACCESS_GO_ONLINE_ALLOWED,0: "1"
-3    (1) GROUP_EMAILFILTER_BAN_FILTERLIST_REF,0: "-1"
-4    (1) GROUP_EMAIL_RELAY_RIGHTS,0: "RELAY_FROM_INTRANET"
-5    (1) GROUP_PROXY_PROFILE_REF,0: "1"
-"""
-
-demo_cnf_group_bytes = demo_cnf_group.encode ("latin-1")
-
-demo_cnf_filter = b"""
-1 EMAILFILTER_BAN_FILTERLIST,1: "Vordefiniert: Alles verboten"
-2    (1) EMAILFILTER_BAN_FILTERLIST_ENCRYPTED,0: "BLOCK"
-3    (1) EMAILFILTER_BAN_FILTERLIST_EXTENSIONS,0: ""
-4    (1) EMAILFILTER_BAN_FILTERLIST_MIMETYPES,0: ""
-5       (4) EMAILFILTER_BAN_FILTERLIST_MIMETYPES_NAME,0: "text/plain"
-6       (4) EMAILFILTER_BAN_FILTERLIST_MIMETYPES_NAME,1: "text/html"
-7    (1) EMAILFILTER_BAN_FILTERLIST_MODE,0: "ALLOW"
-8    (1) EMAILFILTER_BAN_FILTERLIST_PREDEFINED_ID,0: "1"
-"""
-
-demo_cnf_comments = b"""
-1 EMAILFILTER_BAN_FILTERLIST,1: "Vordefiniert: Alles verboten"
-2    (1) EMAILFILTER_BAN_FILTERLIST_ENCRYPTED,0: "BLOCK"
-3    (1) EMAILFILTER_BAN_FILTERLIST_EXTENSIONS,0: ""
-4    (1) EMAILFILTER_BAN_FILTERLIST_MIMETYPES,0: "" # foo
-5       (4) EMAILFILTER_BAN_FILTERLIST_MIMETYPES_NAME,0: "text/plain"#bar
-6       (4) EMAILFILTER_BAN_FILTERLIST_MIMETYPES_NAME,1: "text/html"
-7    (1) EMAILFILTER_BAN_FILTERLIST_MODE,0: "ALLOW"     # baz
-8    (1) EMAILFILTER_BAN_FILTERLIST_PREDEFINED_ID,0: "1"
-"""
-
-demo_cnf_escaped_quotes = """
-1 HERE_BE_QUOTES,0: "\""
-2 HERE_BE_QUOTES,1: "foo\"bar\"\"\"baz"
-3 HERE_BE_QUOTES,2: "unquo\\\"table"
-4 HERE_BE_QUOTES,3: "unquo\\\\\"\"table"
-"""
-
-demo_json_escaped_quotes = """
-{ "cnf": [ { "number"   : 1,
-             "varname"  : "HERE_BE_QUOTES",
-             "instance" : 0,
-             "data"     : "\\"" },
-           { "number"   : 2,
-             "varname"  : "HERE_BE_QUOTES",
-             "instance" : 1,
-             "data"     : "foo\\"bar\\"\\"\\"baz" },
-           { "number"   : 3,
-             "varname"  : "HERE_BE_QUOTES",
-             "instance" : 2,
-             "data"     : "unquo\\\\\\"table" },
-           { "number"   : 4,
-             "varname"  : "HERE_BE_QUOTES",
-             "instance" : 3,
-             "data"     : "unquo\\\\\\\\\\"\\"table" } ] }
-"""
-
-#
-#                                 test class
-#
-
-class CnfVarUnittest(unittest.TestCase):
-
-    def test_print_cnf(self):
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf(demo_cnfvar, out=devnull)
-
-    def test_parse_cnf_simple_str(self):
-        cnf = cnfvar_old.read_cnf(demo_cnf_group)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(cnf, out=devnull)
-
-    def test_parse_cnf_simple_bytes(self):
-        cnf = cnfvar_old.read_cnf(demo_cnf_group_bytes)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(cnf, out=devnull)
-
-    def test_parse_cnf_nested(self):
-        cnf = cnfvar_old.read_cnf(demo_cnf_filter)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(cnf, out=devnull)
-
-    def test_parse_cnf_comments(self):
-        cnf = cnfvar_old.read_cnf(demo_cnf_comments)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(cnf, out=devnull)
-
-    def test_print_cnf_garbage(self):
-        try:
-            with open(os.devnull, "w") as devnull:
-                cnfvar_old.print_cnf(demo_invalid_cnfvar, out=devnull)
-        except cnfvar_old.InvalidCNF:
-            print ("Caught the duplicate line, bravo!")
-
-    def test_read_json_str(self):
-        cnf = cnfvar_old.read_cnf_json(demo_jsoncnf)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf(cnf, out=devnull)
-
-    def test_read_json_bytes(self):
-        cnf = cnfvar_old.read_cnf_json(demo_jsoncnf_bytes)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf(cnf, out=devnull)
-
-    def test_read_json_nonascii(self):
-        cnf = cnfvar_old.read_cnf_json(demo_nonascii)
-        with open(os.devnull, "wb") as devnull:
-            cnfvar_old.print_cnf(cnf, out=devnull)
-
-    def test_read_json_latin1(self):
-        cnf = cnfvar_old.read_cnf_json(demo_latin1crap)
-        with open(os.devnull, "wb") as devnull:
-            cnfvar_old.print_cnf(cnf, out=devnull)
-
-    def test_parse_cnf_quotes(self):
-        cnf = cnfvar_old.read_cnf(demo_cnf_escaped_quotes)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(cnf, out=devnull)
-
-    def test_parse_json_quotes(self):
-        cnf = cnfvar_old.read_cnf_json(demo_json_escaped_quotes)
-        with open(os.devnull, "w") as devnull:
-            cnfvar_old.print_cnf_json(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_old.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_old.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()