示例#1
0
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "saved-query", "get"]
        result1 = runner.invoke(cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)

        name = json1[0]["name"]

        args2 = [cmd, "count-by-saved-query", "--name", name]

        result2 = runner.invoke(cli=cli.cli, args=args2)

        exit_code2 = result2.exit_code
        stdout2 = result2.stdout
        stderr2 = result2.stderr

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.INT)
示例#2
0
    def test_get_json(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = ["adapters", "get"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)

        args2 = [
            "adapters", "cnx", "get", "--rows", "-", "--export-format", "json"
        ]
        result2 = runner.invoke(cli=cli.cli, args=args2, input=stdout1)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.LIST)
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [
            cmd, "get", "--query", "(adapters > size(0))", "--max-rows", "1"
        ]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        args2 = [
            cmd, "labels", "add", "--label", "badwolf1", "--label", "badwolf2"
        ]
        result2 = runner.invoke(cli=cli.cli, args=args2, input=result1.stdout)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.INT)
        assert json2 == 1

        args3 = [
            cmd, "labels", "remove", "--label", "badwolf1", "--label",
            "badwolf2"
        ]
        result3 = runner.invoke(cli=cli.cli, args=args3, input=result1.stdout)

        stderr3 = result3.stderr
        stdout3 = result3.stdout
        exit_code3 = result3.exit_code

        assert stdout3
        assert stderr3
        assert exit_code3 == 0

        json3 = tools.json_load(stdout3)
        assert isinstance(json3, tools.INT)
        assert json3 == 1
示例#4
0
    def test_query_file(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        qf_contents = '(adapters == "aws_adapter")'
        qf_file = "qf.txt"

        args1 = [
            cmd,
            "get",
            "--query-file",
            qf_file,
            "--export-format",
            "json",
            "--max-rows",
            "1",
        ]

        with runner.isolated_filesystem():
            with open(qf_file, "w") as f:
                f.write(qf_contents)

            result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)
示例#5
0
    def test_get_csv(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = ["adapters", "get"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)

        args2 = [
            "adapters", "cnx", "get", "--rows", "-", "--export-format", "csv"
        ]
        result2 = runner.invoke(cli=cli.cli, args=args2, input=stdout1)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        csv_cols2 = [
            "adapter_name", "node_name", "id", "uuid", "status_raw", "error"
        ]
        utils.check_csv_cols(stdout2, csv_cols2)
示例#6
0
    def test_check_csv(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = ["adapters", "get", "-n", "active_directory"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        exit_code1 = result1.exit_code

        assert result1.stdout
        assert stderr1
        assert exit_code1 == 0

        assert isinstance(tools.json_load(result1.stdout), tools.LIST)

        args3 = [
            "-nw", "adapters", "cnx", "check", "-r", "-", "-ne", "-xt", "csv"
        ]
        result3 = runner.invoke(cli=cli.cli, args=args3, input=result1.stdout)

        stderr3 = result3.stderr
        stdout3 = result3.stdout
        # exit_code3 = result3.exit_code

        assert stdout3
        assert stderr3

        csv_cols3 = [
            "adapter_name", "node_name", "id", "uuid", "status_raw", "error"
        ]
        utils.check_csv_cols(stdout3, csv_cols3)
示例#7
0
    def test_json(self, request, monkeypatch, get_by):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [
            "users",
            get_by,
            "--value",
            ".*",
            "--value-regex",
            "--export-format",
            "json",
            "--max-rows",
            "1",
        ]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)
示例#8
0
    def test_delete_error(self, request, monkeypatch):
        """Pass."""
        delete_me = {
            "adapter_name": "badwolf",
            "adapter_name_raw": "badwolf",
            "config_raw": {},
            "node_id": "badwolf",
            "node_name": "badwolf",
            "id": "badwolf",
            "uuid": "badwolf",
            "status": "badwolf",
            "error": "badwolf",
        }
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [
            "adapters", "cnx", "delete", "--rows", "-", "--force", "--wait",
            "0"
        ]
        result1 = runner.invoke(cli=cli.cli,
                                args=args1,
                                input=tools.json_dump(delete_me))
        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 1

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)
示例#9
0
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [
            cmd,
            "get",
            "--query",
            "(adapters > size(0))",
            "--export-format",
            "json",
            "--max-rows",
            "1",
        ]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)
示例#10
0
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "fields", "--export-format", "json"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "labels", "get"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, tools.LIST)
示例#12
0
    def test_adapter_re(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "fields", "--adapter-re", "generic"]
        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)
        assert list(json1) == ["generic"]
示例#13
0
    def test_json(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "count", "--query", "(adapters > size(0))"]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(result1.stdout)
        assert isinstance(json1, tools.INT)
示例#14
0
    def test_adapter_fields_re(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        args1 = [cmd, "fields", "--adapter-re", "generic", "--field-re", "name"]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)
        for k, v in json1.items():
            assert k == "generic"
            for i in v:
                assert "name" in i
示例#15
0
 def test_load_error_true(self):
     """Simple test."""
     x = "xxx"
     with pytest.raises(Exception):
         json_load(obj=x, error=True)
示例#16
0
 def test_load(self):
     """Simple test."""
     x = "{}"
     y = json_load(obj=x)
     assert y == {}
示例#17
0
 def test_load_error_false(self):
     """Simple test."""
     x = "xxx"
     y = json_load(obj=x, error=False)
     assert y == "xxx"
    def test_json_cf(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)
        name = "badwolf"
        query = "(adapters > size(0))"
        field = "labels"
        cfilter = "generic:{}=a".format(field)

        args1 = [
            cmd,
            "saved-query",
            "add",
            "--name",
            name,
            "--query",
            query,
            "--sort-field",
            field,
            "--column-filter",
            cfilter,
        ]

        result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)
        assert json1["name"] == name

        args2 = [cmd, "saved-query", "get-by-name", "--value", name]

        result2 = runner.invoke(cli=cli.cli, args=args2)

        exit_code2 = result2.exit_code
        stdout2 = result2.stdout
        stderr2 = result2.stderr

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, dict)
        assert json2["name"] == name

        args3 = [cmd, "saved-query", "delete", "--wait", "0", "-n", name]

        result3 = runner.invoke(cli=cli.cli, args=args3)

        exit_code3 = result3.exit_code
        stdout3 = result3.stdout
        stderr3 = result3.stderr
        assert not stdout3.strip()
        assert stderr3
        assert exit_code3 == 0

        assert not result3.stdout
    def test_query_file(self, request, monkeypatch, cmd):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)
        name = "badwolf"
        field = "labels"
        cfilter = "generic:{}=a".format(field)

        qf_contents = '(adapters == "aws_adapter")'
        qf_file = "qf.txt"

        args1 = [
            cmd,
            "saved-query",
            "add",
            "--name",
            name,
            "--query-file",
            qf_file,
            "--sort-field",
            field,
            "--column-filter",
            cfilter,
        ]

        with runner.isolated_filesystem():
            with open(qf_file, "w") as f:
                f.write(qf_contents)

            result1 = runner.invoke(cli=cli.cli, args=args1)

        exit_code1 = result1.exit_code
        stdout1 = result1.stdout
        stderr1 = result1.stderr

        assert stdout1
        assert stderr1
        assert exit_code1 == 0

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)
        assert json1["name"] == name

        args2 = [cmd, "saved-query", "get-by-name", "--value", name]

        result2 = runner.invoke(cli=cli.cli, args=args2)

        exit_code2 = result2.exit_code
        stdout2 = result2.stdout
        stderr2 = result2.stderr

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, dict)
        assert json2["name"] == name

        args3 = [cmd, "saved-query", "delete", "--wait", "0", "-n", name]

        result3 = runner.invoke(cli=cli.cli, args=args3)

        exit_code3 = result3.exit_code
        stdout3 = result3.stdout
        stderr3 = result3.stderr
        assert not stdout3.strip()
        assert stderr3
        assert exit_code3 == 0

        assert not result3.stdout
示例#20
0
    def test_add_check_discover_delete_csv_err(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        csv_file = "badwolf.csv"
        csv_contents = "xx,yy\nbadwolf9131,badwolf\n"
        """
echo "x" > /tmp/input.csv
axonshell a c a -a csv -c user_id=input.csv -c csv=/tmp/input.csv -npo | \
axonshell a c c -r - -ne | \
axonshell a c di -r - -ne | \
axonshell a c de -r - -f -w 0
        """
        with runner.isolated_filesystem():
            with open(csv_file, "w") as f:
                f.write(csv_contents)

            csv_path = tools.path(csv_file)
            args1 = [
                "adapters",
                "cnx",
                "add",
                "--adapter",
                "csv",
                "--config",
                "user_id={}".format(csv_file),
                "--config",
                "csv={}".format(csv_path),
                "--no-prompt-opt",
            ]
            result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 1

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)

        args2 = ["adapters", "cnx", "check", "--rows", "-"]
        result2 = runner.invoke(cli=cli.cli, args=args2, input=stdout1)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 1

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.LIST)

        args3 = ["adapters", "cnx", "discover", "--rows", "-"]
        result3 = runner.invoke(cli=cli.cli, args=args3, input=stdout2)

        stderr3 = result3.stderr
        stdout3 = result3.stdout
        exit_code3 = result3.exit_code

        assert stdout3
        assert stderr3
        assert exit_code3 == 1

        json3 = tools.json_load(stdout3)
        assert isinstance(json3, tools.LIST)

        args4 = [
            "adapters", "cnx", "delete", "--rows", "-", "--force", "--wait",
            "0"
        ]
        result4 = runner.invoke(cli=cli.cli, args=args4, input=stdout3)

        stderr4 = result4.stderr
        stdout4 = result4.stdout
        exit_code4 = result4.exit_code

        assert stdout4
        assert stderr4
        assert exit_code4 == 0

        json4 = tools.json_load(stdout4)
        assert isinstance(json4, tools.LIST)
示例#21
0
    def test_add_delete_ad_config_args(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        csv_file = "badwolf.csv"
        csv_contents = "id,hostname\nbadwolf9131,badwolf\n"

        #
        configs = {
            "dc_name": "badwolf",
            "user": "******",
            "password": "******",
            "dns_server_address": "badwolf",
            "alternative_dns_suffix": "badwolf",
            "use_ssl": "Unencrypted",
            "ca_file": csv_file,
            "cert_file": csv_file,
            "private_key": csv_file,
            "fetch_disabled_devices": "y",
            "fetch_disabled_users": "y",
            "is_ad_gc": "y",
            "ldap_ou_whitelist": "badwolf1,badwolf2",
        }

        with runner.isolated_filesystem():
            with open(csv_file, "w") as f:
                f.write(csv_contents)

            args1 = ["adapters", "cnx", "add", "--adapter", "active_directory"]
            for k, v in configs.items():
                args1.append("--config")
                args1.append("{}={}".format(k, v))

            result1 = runner.invoke(cli=cli.cli, args=args1)

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 1

        json1 = tools.json_load(stdout1)
        assert isinstance(json1, dict)

        args2 = [
            "adapters", "cnx", "delete", "--rows", "-", "--force", "--wait",
            "0"
        ]
        result2 = runner.invoke(cli=cli.cli, args=args2, input=stdout1)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.LIST)
示例#22
0
    def test_add_delete_ad_config_prompt_skips(self, request, monkeypatch):
        """Pass."""
        runner = utils.load_clirunner(request, monkeypatch)

        skips = ["ca_file", "cert_file", "private_key"]

        configs = [
            "badwolf",  # dc_name
            "badwolf",  # user
            "badwolf",  # password
            "badwolf",  # dns_server_address
            "badwolf",  # alternative_dns_suffix
            "Unencrypted",  # use_ssl
            # csv_file,  # ca_file
            # csv_file,  # cert_file
            # csv_file,  # private_key
            "y",  # fetch_disabled_devices
            "y",  # fetch_disabled_users
            "y",  # is_ad_gc
            "badwolf1,badwolf2",  # ldap_ou_whitelist
        ]

        args1 = ["adapters", "cnx", "add", "--adapter", "active_directory"]
        for s in skips:
            args1 += ["--skip", s]

        result1 = runner.invoke(cli=cli.cli,
                                args=args1,
                                input="\n".join(configs))

        stderr1 = result1.stderr
        stdout1 = result1.stdout
        exit_code1 = result1.exit_code

        assert stdout1
        assert stderr1
        assert exit_code1 == 1

        json_start_idx = stdout1.index("{")
        stdout1_stripped = stdout1[json_start_idx:]

        json1 = tools.json_load(stdout1_stripped)
        assert isinstance(json1, dict)

        args2 = [
            "adapters",
            "cnx",
            "delete",
            "--rows",
            "-",
            "--force",
            "--wait",
            "0",
            "--no-error",
        ]
        result2 = runner.invoke(cli=cli.cli,
                                args=args2,
                                input=stdout1_stripped)

        stderr2 = result2.stderr
        stdout2 = result2.stdout
        exit_code2 = result2.exit_code

        assert stdout2
        assert stderr2
        assert exit_code2 == 0

        json2 = tools.json_load(stdout2)
        assert isinstance(json2, tools.LIST)