示例#1
0
def test_install_package_version__not_propagated(caplog):
    caplog.set_level(logging.INFO)
    responses.add(
        "POST",
        "https://salesforce/services/data/v50.0/tooling/sobjects/PackageInstallRequest/",
        json={"id": "0Hf"},
    )
    responses.add(
        "GET",
        "https://salesforce/services/data/v50.0/tooling/query/",
        status=400,
        body="invalid cross reference id",
    )
    responses.add(
        "GET",
        "https://salesforce/services/data/v50.0/tooling/query/",
        json={"records": [{"Status": "SUCCESS"}]},
    )

    project_config = create_project_config()
    org_config = OrgConfig(
        {"instance_url": "https://salesforce", "access_token": "TOKEN"}, "test"
    )
    install_package_version(project_config, org_config, {"version_id": "04t"})
    assert "Retrying" in caplog.text
    assert "Success" in caplog.text
示例#2
0
def test_install_package_version__error():
    responses.add(
        "POST",
        "https://salesforce/services/data/v50.0/tooling/sobjects/PackageInstallRequest/",
        json={"id": "0Hf"},
    )
    responses.add(
        "GET",
        "https://salesforce/services/data/v50.0/tooling/query/",
        json={
            "records": [
                {
                    "Status": "ERROR",
                    "Errors": {"errors": [{"message": "We have a problem."}]},
                }
            ]
        },
    )

    project_config = create_project_config()
    org_config = OrgConfig(
        {"instance_url": "https://salesforce", "access_token": "TOKEN"}, "test"
    )
    with pytest.raises(PackageInstallError, match="We have a problem."):
        install_package_version(project_config, org_config, {"version_id": "04t"})
示例#3
0
    def _install_dependency(self, dependency):
        package_zip = None

        zip_src = None
        if "zip_url" in dependency:
            self.logger.info(
                "Deploying unmanaged metadata from /{} of {}".format(
                    dependency.get("subfolder") or "", dependency["zip_url"]))
            zip_src = self._download_extract_zip(
                dependency["zip_url"], subfolder=dependency.get("subfolder"))
        elif "repo_name" in dependency:
            self.logger.info(
                "Deploying unmanaged metadata from /{} of {}/{}".format(
                    dependency["subfolder"],
                    dependency["repo_owner"],
                    dependency["repo_name"],
                ))
            gh_for_repo = self.project_config.get_github_api(
                dependency["repo_owner"], dependency["repo_name"])
            zip_src = self._download_extract_github(
                gh_for_repo,
                dependency["repo_owner"],
                dependency["repo_name"],
                dependency["subfolder"],
                ref=dependency.get("ref"),
            )

        if zip_src:
            # determine whether to inject namespace prefixes or not
            options = dependency.copy()
            if "unmanaged" not in options:
                namespace = options.get("namespace_inject")
                options["unmanaged"] = (
                    not namespace
                ) or namespace not in self.org_config.installed_packages

            package_zip = MetadataPackageZipBuilder.from_zipfile(
                zip_src, options=options, logger=self.logger).as_base64()
        elif "namespace" in dependency:
            self.logger.info("Installing {} version {}".format(
                dependency["namespace"], dependency["version"]))
            package_zip = InstallPackageZipBuilder(
                dependency["namespace"],
                dependency["version"],
                securityType=self.options["security_type"],
            )()

        if package_zip:
            api = self.api_class(
                self,
                package_zip,
                purge_on_delete=self.options["purge_on_delete"])
            return api()
        elif "version_id" in dependency:
            self.logger.info(f"Installing {dependency['version_id']}")
            install_package_version(self.project_config, self.org_config,
                                    dependency)
        else:
            raise TaskOptionsError(f"Could not find package for {dependency}")
 def _run_task(self):
     version = self.options["version"]
     self.logger.info(f"Installing {self.options['name']} {version}")
     if isinstance(version, str) and version.startswith("04t"):
         install_options = {**self.options, "version_id": version}
         retry_options = {
             "retries": self.options["retries"],
             "retry_interval": self.options["retry_interval"],
             "retry_interval_add": self.options["retry_interval_add"],
         }
         install_package_version(self.project_config, self.org_config,
                                 install_options, retry_options)
     else:
         self._retry()
     self.org_config.reset_installed_packages()