Esempio n. 1
0
    def test_conffileproxy_invalid_arg(self):
        bad_conf = """
        [dangling stanza
        attr = 1
        bad file =  very true"""
        twd = TestWorkDir()
        badfile = twd.write_file("bad_conf.conf", bad_conf)
        with ksconf_cli:

            # A command that uses ConfFileType() with mode="load"
            base_cmd = ["rest-export"]

            ko = ksconf_cli(*base_cmd +
                            [twd.get_path("a_non_existent_file.conf")])
            self.assertIn(ko.returncode,
                          (EXIT_CODE_USER_QUIT, EXIT_CODE_NO_SUCH_FILE))
            self.assertRegex(
                ko.stderr,
                r".*\b(can't open '[^']+\.conf'|invalid ConfFileType).*")

            ko = ksconf_cli(*base_cmd + [badfile])
            self.assertIn(ko.returncode,
                          (EXIT_CODE_USER_QUIT, EXIT_CODE_NO_SUCH_FILE))
            self.assertRegex(ko.stderr,
                             ".*(failed to parse|invalid ConfFileType).*")

            with FakeStdin(bad_conf):
                ko = ksconf_cli(*base_cmd + ["-"])
                self.assertIn(ko.returncode,
                              (EXIT_CODE_USER_QUIT, EXIT_CODE_NO_SUCH_FILE))
                self.assertRegex(ko.stderr,
                                 ".*(failed to parse|invalid ConfFileType).*")
Esempio n. 2
0
 def test_promote_batch_simple_keep(self):
     twd = self.sample_data01()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", "--keep-empty", self.conf_local,
                    self.conf_default)
         self.assertEqual(os.stat(self.conf_local).st_size,
                          0)  # "Local file should be blanked")
         self.assert_data01(twd)
     del twd
Esempio n. 3
0
 def test_promote_batch_simple(self):
     twd = self.sample_data01()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", self.conf_local,
                    self.conf_default)
         self.assertFalse(os.path.isfile(
             self.conf_local))  # "Local file should be blanked")
         self.assert_data01(twd)
     del twd
Esempio n. 4
0
 def test_promote_to_dir(self):
     twd = self.sample_data01()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", self.conf_local,
                    twd.get_path("default"))
         self.assertTrue(os.path.isfile(self.conf_default),
                         "Default file should be created.")
         self.assertFalse(os.path.isfile(self.conf_local),
                          "Default file should be created.")
         self.assert_data01(twd)
Esempio n. 5
0
 def test_sort_inplace_returncodes(self):
     """ Inplace sorting long and short args """
     with ksconf_cli:
         ko = ksconf_cli("sort", "-i", self.conf_bogus)
         self.assertEqual(ko.returncode, EXIT_CODE_SORT_APPLIED)
         self.assertRegex(ko.stderr, "^Replaced file")
     # Sort the second time, no there should be NO updates
     with ksconf_cli:
         ko = ksconf_cli("sort", "--inplace", self.conf_bogus)
         self.assertEqual(ko.returncode, EXIT_CODE_SUCCESS)
         self.assertRegex(ko.stderr, "^Nothing to update")
Esempio n. 6
0
 def test_sort_mixed_quiet(self):
     # Not yet implemented.  Currently relying on the shell to do this.
     with ksconf_cli:
         ko = ksconf_cli("sort", "-i", "--quiet", *self.all_confs)
         self.assertEqual(ko.returncode, EXIT_CODE_BAD_CONF_FILE)
         self.assertRegex(ko.stderr, r"Error [^\r\n]+?[/\\]badfile\.conf")
         self.assertNotRegex(ko.stderr, r"Skipping [^\r\n]+?[/\\]transforms\.conf")
         self.assertRegex(ko.stderr, r"[\r\n]Replaced file [^\r\n]+?\.conf")
     # No there should be NO output
     with ksconf_cli:
         ko = ksconf_cli("sort", "-i", "--quiet", self.conf_bogus, self.no_sort)
         self.assertEqual(ko.returncode, EXIT_CODE_SUCCESS)
         self.assertNotRegex(ko.stderr, r"Error [^\r\n]+?\.conf")
         self.assertNotRegex(ko.stderr, r"[\r\n]Skipping [^\r\n]+?[/\\]transforms.conf")
         self.assertNotRegex(ko.stderr, r"[\r\n]Replaced file [^\r\n]+?\.conf")
Esempio n. 7
0
 def _modsec01_upgrade(self, twd, app_tgz):
     """ Upgade app install with auto commit. """
     tgz = static_data(app_tgz)
     with ksconf_cli:
         kco = ksconf_cli("unarchive", tgz, "--dest", twd.get_path("apps"),
                          "--git-mode=commit", "--no-edit")
         self.assertIn("About to upgrade", kco.stdout)
Esempio n. 8
0
 def test_promote_same_file_abrt(self):
     twd = TestWorkDir()
     dummy = twd.write_conf("dummy.conf", dummy_config)
     with ksconf_cli:
         # Expect this to fail
         ko = ksconf_cli("promote", "--batch", dummy, dummy)
         self.assertEqual(ko.returncode, EXIT_CODE_FAILED_SAFETY_CHECK)
         self.assertRegex(ko.stderr, "same file")
Esempio n. 9
0
 def test_promote_glob_stanzas(self):
     twd = self.sample_data02()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", "--match=wildcard", "--stanza",
                    "Stanza*", self.conf_local, self.conf_default)
         self.assertFalse(os.path.isfile(self.conf_local))
         d = twd.read_conf("default/test.conf")
         stanza1 = d["Stanza1"]
         self.assertEqual(stanza1["a"], "3")
         self.assertEqual(stanza1["b"], "6")
         self.assertEqual(stanza1["c"], "8")
         stanza2 = d["Stanza2"]
         self.assertEqual(stanza2["x"], "1")
         self.assertEqual(stanza2["y"], "2")
         stanza3 = d["Stanza3"]
         self.assertEqual(stanza3["z"], "0")
     del twd
Esempio n. 10
0
 def test_sort_mixed(self):
     # Not yet implemented.  Currently relying on the shell to do this.
     with ksconf_cli:
         ko = ksconf_cli("sort", "-i", *self.all_confs)
         self.assertEqual(ko.returncode, EXIT_CODE_BAD_CONF_FILE)
         self.assertRegex(ko.stderr,
                          r"Error [^\r\n]+? file [^\r\n]+?[/\\]badfile\.conf[^\r\n]+ \[BAD_STANZA")
         self.assertRegex(ko.stderr, r"Skipping no-sort file [^ ]+[/\\]transforms\.conf")
Esempio n. 11
0
 def test_promote_list_invert_stanzas(self):
     twd = self.sample_data02()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", "--invert-match", "--stanza",
                    "Stanza2", self.conf_local, self.conf_default)
         d = twd.read_conf("default/test.conf")
         stanza1 = d["Stanza1"]
         self.assertEqual(stanza1["a"], "3")
         self.assertEqual(stanza1["b"], "6")
         self.assertEqual(stanza1["c"], "8")
         self.assertNotIn("Stanza2", d)
         stanza3 = d["Stanza3"]
         self.assertEqual(stanza3["z"], "0")
         l = d = twd.read_conf("local/test.conf")
         stanza2 = l["Stanza2"]
         self.assertEqual(stanza2["x"], "1")
         self.assertEqual(stanza2["y"], "2")
     del twd
Esempio n. 12
0
 def test_sort_stdout(self):
     # Not yet implemented.  Currently relying on the shell to do this.
     with ksconf_cli:
         ko = ksconf_cli("sort", self.conf_bogus, self.no_sort)
         self.assertEqual(ko.returncode, EXIT_CODE_SUCCESS)
         self.assertRegex(ko.stdout, r"-----+ [^\r\n]+[/\\]bogus\.conf")
         self.assertRegex(ko.stdout, r"[\r\n]-----+ [^\r\n]+[/\\]transforms\.conf")
         self.assertRegex(ko.stdout, r"[\r\n]DEST_KEY = [^\r\n]+[\r\n]FORMAT =",
                          "transforms.conf should be sorted even with KSCONF-NO-SORT directive for non-inplace mode")
Esempio n. 13
0
 def test_promote_summary(self):
     twd = self.sample_data01()
     with ksconf_cli:
         ko = ksconf_cli("promote", "--summary", self.conf_local,
                         self.conf_default)
         self.assertEqual(ko.returncode, EXIT_CODE_SUCCESS)
         self.assertRegex(
             ko.stderr, r"\s*[License usage trend by sourcetype]\s+3 keys")
     del twd
Esempio n. 14
0
 def test_zip_file(self):
     # Note:  Very minimal .zip testing since using the ZIP format is rare but does happen.
     # Sometimes a user will grab a zip file from a GitHub download, so we cope if we can.
     twd = TestWorkDir(
     )  # No git, keeping it as simple as possible (also, test that code path)
     zfile = static_data("apps/technology-add-on-for-rsa-securid_01.zip")
     with ksconf_cli:
         kco = ksconf_cli("unarchive", zfile, "--dest", twd.makedir("apps"))
         self.assertIn("About to install", kco.stdout)
         self.assertIn("RSA Securid Splunk Addon", kco.stdout)
         self.assertRegex(kco.stdout, "without version control support")
Esempio n. 15
0
 def test_promote_new_file(self):
     twd = TestWorkDir()
     dummy_local = twd.write_conf("local/dummy.conf", dummy_config)
     dummy_default = twd.get_path("default/dummy.conf")
     twd.makedir("default")
     with ksconf_cli:
         # Expect this to fail
         ko = ksconf_cli("promote", "--batch", dummy_local, dummy_default)
         self.assertEqual(ko.returncode, EXIT_CODE_SUCCESS)
         self.assertRegex(ko.stdout,
                          "Moving source file [^\r\n]+ to the target")
Esempio n. 16
0
 def test_promote_list_add_new_stanza_ignore_case(self):
     twd = self.sample_data02()
     with ksconf_cli:
         ksconf_cli("promote", "--batch", "--ignore-case", "--stanza",
                    "sTaNzA2", self.conf_local, self.conf_default)
         d = twd.read_conf("default/test.conf")
         stanza1 = d["Stanza1"]
         self.assertEqual(stanza1["a"], "2")
         self.assertNotIn("b", stanza1)
         self.assertEqual(stanza1["c"], "8")
         stanza2 = d["Stanza2"]
         self.assertEqual(stanza2["x"], "1")
         self.assertEqual(stanza2["y"], "2")
         stanza3 = d["Stanza3"]
         self.assertEqual(stanza3["z"], "0")
         l = twd.read_conf("local/test.conf")
         stanza1_local = l["Stanza1"]
         self.assertEqual(stanza1_local["a"], "3")
         self.assertEqual(stanza1_local["b"], "6")
         self.assertNotIn("Stanza2", l)
     del twd
Esempio n. 17
0
 def _modsec01_install_11(self, twd):
     """ Fresh app install a manual commit. """
     apps = twd.makedir("apps")
     tgz = static_data("apps/modsecurity-add-on-for-splunk_11.tgz")
     with ksconf_cli:
         kco = ksconf_cli("unarchive", tgz, "--dest", apps,
                          "--git-mode=stage")
         self.assertIn("About to install", kco.stdout)
         self.assertIn("ModSecurity Add-on", kco.stdout,
                       "Should display app name during install")
     twd.write_file(".gitignore", "*.bak")
     twd.git("add", "apps/Splunk_TA_modsecurity", ".gitignore")
     twd.git("commit", "-m", "Add custom file.")
     twd.write_file("Junk.bak", "# An ignored file.")
Esempio n. 18
0
    def _modsec01_untracked_files(self, twd):
        twd.write_file("apps/Splunk_TA_modsecurity/untracked_file", "content")
        twd.write_file("apps/Splunk_TA_modsecurity/ignored.bak",
                       "Ignored file")
        with ksconf_cli:
            kco = ksconf_cli(
                "unarchive",
                static_data("apps/modsecurity-add-on-for-splunk_12.tgz"),
                "--dest", twd.get_path("apps"), "--git-sanity-check=ignored",
                "--git-mode=commit", "--no-edit")
            self.assertEqual(kco.returncode, EXIT_CODE_FAILED_SAFETY_CHECK)
            git_ls_files(twd._path, "cached")  # Bump code coverage
            # Rollback upgrade and try again
            twd.git("reset", "--hard", "HEAD")
            # Remove offending files
            twd.remove_file("apps/Splunk_TA_modsecurity/untracked_file")
            twd.remove_file("apps/Splunk_TA_modsecurity/ignored.bak")

            kco = ksconf_cli(
                "unarchive",
                static_data("apps/modsecurity-add-on-for-splunk_12.tgz"),
                "--dest", twd.get_path("apps"), "--git-sanity-check",
                "ignored", "--git-mode=commit", "--no-edit")
            self.assertEqual(kco.returncode, EXIT_CODE_SUCCESS)
Esempio n. 19
0
    def test_promote_empty_stanza(self):
        twd = TestWorkDir()
        conf_default = twd.write_file(
            "default/test.conf", r"""
        [Stanza1]
        a = 2
        c = 8
        [Stanza3]
        z = 0
        """)
        conf_local = twd.write_file(
            "local/test.conf", r"""
        [Stanza1]

        [Stanza3]
        z = 2
        """)
        with ksconf_cli:
            ksconf_cli("promote", "--batch", conf_local, conf_default)
            d = twd.read_conf("default/test.conf")
            self.assertFalse(os.path.isfile(conf_local))
            self.assertEqual(d["Stanza1"]["a"], "2")
            self.assertEqual(d["Stanza1"]["c"], "8")
            self.assertEqual(d["Stanza3"]["z"], "2")
Esempio n. 20
0
 def test_modsec_install_defaultd(self):
     twd = TestWorkDir(git_repo=True)
     app_archives = [
         "apps/modsecurity-add-on-for-splunk_11.tgz",
         "apps/modsecurity-add-on-for-splunk_12.tgz",
         "apps/modsecurity-add-on-for-splunk_14.tgz",
     ]
     apps = twd.makedir("apps")
     for app in app_archives:
         tgz = static_data(app)
         with ksconf_cli:
             kco = ksconf_cli("unarchive", tgz, "--dest", apps,
                              "--git-mode=commit", "--no-edit",
                              "--default-dir", "default.d/10-official",
                              "--exclude", "README/inputs.conf.spec")
             self.assertEqual(kco.returncode, EXIT_CODE_SUCCESS)
             self.assertRegex(kco.stdout, "with git support")
Esempio n. 21
0
 def test_bad_file(self):
     with ksconf_cli:
         ko = ksconf_cli("sort", self.conf_bad)
         self.assertEqual(ko.returncode, EXIT_CODE_BAD_CONF_FILE)
Esempio n. 22
0
 def test_help(self):
     out = ksconf_cli("--help")
     with ksconf_cli:
         self.assertIn("Kintyre Splunk CONFig tool", out.stdout)
         self.assertIn("usage: ", out.stdout)
         self.assertEqual(out.returncode, EXIT_CODE_SUCCESS)