Exemple #1
0
def process_and_validate_raw_manifest(raw_manifest: bytes) -> Manifest:
    raw_manifest_text = to_text(raw_manifest).rstrip("\n")
    validate_raw_manifest_format(raw_manifest_text)
    manifest = json.loads(raw_manifest_text)
    validate_manifest_against_schema(manifest)
    validate_manifest_deployments(manifest)
    return manifest
Exemple #2
0
    def __init__(
            self, manifest: Dict[str, Any], w3: Web3, uri: Optional[str] = None
    ) -> None:
        """
        A package should be created using one of the available
        classmethods and a valid w3 instance.
        """
        if not isinstance(manifest, dict):
            raise TypeError(
                "Package object must be initialized with a dictionary. "
                f"Got {type(manifest)}"
            )

        if "manifest" not in manifest or manifest["manifest"] != "ethpm/3":
            raise EthPMValidationError(
                "Py-Ethpm currently only supports v3 ethpm manifests. "
                "Please use the CLI to update or re-generate a v3 manifest. "
            )

        validate_manifest_against_schema(manifest)
        validate_manifest_deployments(manifest)
        validate_w3_instance(w3)

        self.w3 = w3
        self.w3.eth.defaultContractFactory = cast(Type[Contract], LinkableContract)
        self.manifest = manifest
        self._uri = uri
Exemple #3
0
    def __init__(self,
                 manifest: Dict[str, Any],
                 w3: Web3,
                 uri: Optional[str] = None) -> None:
        """
        A package should be created using one of the available
        classmethods and a valid w3 instance.
        """
        if not isinstance(manifest, dict):
            raise TypeError(
                "Package object must be initialized with a dictionary. "
                f"Got {type(manifest)}")

        validate_manifest_against_schema(manifest)
        validate_manifest_deployments(manifest)
        validate_w3_instance(w3)

        self.w3 = w3
        self.w3.eth.defaultContractFactory = LinkableContract
        self.manifest = manifest
        self._uri = uri
Exemple #4
0
def test_validate_deployed_contracts_pr(manifest_with_no_deployments):
    validate = validate_manifest_deployments(manifest_with_no_deployments)
    assert validate is None
Exemple #5
0
def test_validate_deployments(safe_math_lib_package):
    validate = validate_manifest_deployments(safe_math_lib_package.manifest)
    assert validate is None
Exemple #6
0
def test_validate_deployed_contracts_present_validates(
        manifest_with_conflicting_deployments):
    with pytest.raises(ValidationError):
        validate_manifest_deployments(manifest_with_conflicting_deployments)
Exemple #7
0
def test_validate_deployments_without_deployment(manifest_with_no_deployments):
    assert validate_manifest_deployments(manifest_with_no_deployments) is None
Exemple #8
0
def test_validate_deployments_for_single_deployment(safe_math_lib_package):
    assert validate_manifest_deployments(
        safe_math_lib_package.manifest) is None
Exemple #9
0
def test_validate_manifest_deployments_catches_missing_contract_type_references(
        manifest_with_conflicting_deployments):
    with pytest.raises(EthPMValidationError,
                       match="Manifest missing references to contracts"):
        validate_manifest_deployments(manifest_with_conflicting_deployments)