예제 #1
0
    def test_01_invalid_pkg_invoke_args(self):
        """Test invalid pkg_invoke args is handled correctly."""

        pkgs = ["foo"]
        opts = {"list_installed_newest": True, "list_all": True}
        os.environ["PKG_IMAGE"] = self.img_path()
        retjson = self.__call_cmd(None, pkgs, opts)
        self.assert_("errors" in retjson)
        self.assert_("Sub-command" in retjson["errors"][0]["reason"])

        invalidpargs = {"invalid": -1}
        retjson = self.__call_cmd("list", invalidpargs, opts)
        self.assert_("errors" in retjson)
        self.assert_("pargs_json is invalid" in retjson["errors"][0]["reason"])

        invalidpargs = {"invalid": -1}
        retjson = self.__call_cmd("publisher", invalidpargs, opts)
        self.assert_("errors" in retjson)
        self.assert_("pargs_json is invalid" in retjson["errors"][0]["reason"])

        invalidpargs = "+1+1random"
        retjson = cli_api._pkg_invoke(subcommand="list",
                                      pargs_json=invalidpargs,
                                      opts_json=json.dumps(opts))
        self.assert_("errors" in retjson)
        self.assert_("pargs_json is invalid" in retjson["errors"][0]["reason"])

        invalidopts = "+1+1random"
        retjson = cli_api._pkg_invoke(subcommand="list",
                                      pargs_json=json.dumps([]),
                                      opts_json=invalidopts)
        self.assert_("errors" in retjson)
        self.assert_("opts_json is invalid" in retjson["errors"][0]["reason"])
예제 #2
0
파일: rad_pkg.py 프로젝트: ripudamank2/pkg5
def rad_pkg(subcommand, pargs_json=None, opts_json=None, pkg_image=None,
    prog_event_handler=None, prog_delay=PROG_DELAY):
        """Perform pkg operation.

        subcommand: a string type pkg subcommand.

        pargs_json: a JSON blob containing a list of pargs.

        opts_json: a JSON blob containing a dictionary of pkg
        subcommand options.

        pkg_image: a string type alternate image path.
        """

        ret_json = None

        rad_prog_tracker = __init_prog_tracker(prog_event_handler, prog_delay)
        try:
                ret_json = entry._pkg_invoke(subcommand=subcommand,
                    pargs_json=pargs_json, opts_json=opts_json,
                    pkg_image=pkg_image, prog_delay=prog_delay,
                    opts_mapping=opts_mapping, prog_tracker=rad_prog_tracker)
                return ret_json
        except Exception as ex:
                if not ret_json:
                        ret_json = {"status": UNANTICIPATED, "errors": [{"reason":
                            str(ex)}]}
                return ret_json
예제 #3
0
    def test_02_valid_pkg_invoke_args(self):
        """Test valid arguments for pkg json."""

        self.image_create(self.rurl1, prefix="test1")
        os.environ["PKG_IMAGE"] = self.img_path()
        pkgs = ["foo"]
        opts = {"list_newest": True}

        self.pkg("install pkg://test1/foo")
        retjson = cli_api._pkg_invoke(subcommand="list",
                                      pargs_json=None,
                                      opts_json=json.dumps(opts))
        self.assert_("errors" not in retjson)

        retjson = cli_api._pkg_invoke(subcommand="list",
                                      pargs_json=json.dumps(["foo"]),
                                      opts_json=None)
        self.assert_("errors" not in retjson)

        retjson = self.__call_cmd("list", pkgs, opts)
        self.assert_("errors" not in retjson)
예제 #4
0
    def test_07_set_publisher_args_opts(self):
        """Test json args or opts for update command."""

        global_settings.client_output_quiet = True
        self.rurl1 = self.dcs[1].get_repo_url()
        self.image_create(self.rurl1)
        os.environ["PKG_IMAGE"] = self.img_path()
        # Test invalid pkg name.
        pubs = ["test1"]
        opts = {"origin_uri": self.rurl1}
        retjson = self.__call_cmd("set-publisher", pubs, opts)
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        retjson = self.__call_cmd("unset-publisher", pubs, {})
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        opts = {"add_origins": [self.rurl1]}
        retjson = self.__call_cmd("set-publisher", pubs, opts)
        self.assert_("errors" not in retjson)

        pkgs = ["[email protected]"]
        opts = {"verbose": 3, "parsable_version": 0}
        retjson = self.__call_cmd("install", pkgs, opts)
        self.assert_("errors" not in retjson)
        self.assert_(retjson["status"] == 0)

        pkgs = ["newpkg"]
        opts = {"verbose": 3, "parsable_version": 0}
        retjson = self.__call_cmd("uninstall", pkgs, opts)
        self.assert_("errors" not in retjson)
        self.assert_(retjson["status"] == 0)

        self.pkg("set-publisher -O " + self.rurl2 + " test2")
        retjson = cli_api._pkg_invoke(subcommand="unset-publisher",
                                      pargs_json=json.dumps(["test2"]),
                                      opts_json=None)
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        retjson = self.__call_cmd("unset-publisher", pubs, {})
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        opts = {"repo_uri": self.rurl1}
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["data"]["added"] == ["test1"])
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["data"]["updated"] == ["test1"])
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        pkgs = ["pkg://test1/foo@1"]
        opts = {"verbose": 3, "parsable_version": 0}
        retjson = self.__call_cmd("install", pkgs, opts)
        self.assert_("errors" not in retjson)
        self.assert_(retjson["status"] == 0)

        opts = {
            "repo_uri": self.rurl2,
            "set_props": ["prop1=here", "prop2=there"]
        }
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        opts = {"repo_uri": self.rurl2, "unset_props": ["prop1", "prop2"]}
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 0)
        self.assert_("errors" not in retjson)

        opts = {
            "repo_uri": self.rurl2,
            "search_before": "a",
            "search_after": "b"
        }
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 2)
        self.assert_("errors" in retjson)

        opts = {"repo_uri": self.rurl2, "add_origins": ["a"]}
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 2)
        self.assert_("errors" in retjson)

        opts = {"repo_uri": self.rurl2, "refresh_allowed": False}
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 2)
        self.assert_("combined" in retjson["errors"][0]["reason"])

        opts = {"proxy_uri": self.rurl2}
        retjson = self.__call_cmd("set-publisher", [], opts)
        self.assert_(retjson["status"] == 2)
        self.assert_("only be used" in retjson["errors"][0]["reason"])
        global_settings.client_output_quiet = False

        # Test input directly against schema.
        pargs = "pargs_json"
        schema = cli_api._get_pkg_input_schema("set-publisher")

        test_input = {pargs: ["test1"], "opts_json": {"enable": True}}
        self.assert_(self.__schema_validation(test_input, schema))

        test_input = {pargs: None, "opts_json": {"enable": True}}
        self.assert_(not self.__schema_validation(test_input, schema))

        test_input = {pargs: [], "opts_json": {"repo_uri": "test"}}
        self.assert_(self.__schema_validation(test_input, schema))

        schema = cli_api._get_pkg_input_schema("unset-publisher")
        test_input = {pargs: [], "opts_json": {}}
        self.assert_(self.__schema_validation(test_input, schema))
예제 #5
0
 def __call_cmd(self, subcommand, args, opts):
     retjson = cli_api._pkg_invoke(subcommand=subcommand,
                                   pargs_json=json.dumps(args),
                                   opts_json=json.dumps(opts))
     return retjson