Exemplo n.º 1
0
def test_validate_delegation_raises_validation_error_if_delegation_to_self(
        deleg_doc_did, valid_key_pair_secrets):
    deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=valid_key_pair_secrets,
        # parent and delegated doc are the same
        content=deleg_doc_did.encode(),
        p_type=DelegationProofType.DID,
        subject_issuer=Issuer.build(deleg_doc_did, '#AController'))
    resolver_client = ResolverClientTest()
    with pytest.raises(IdentityInvalidDocumentDelegationError):
        DelegationValidation.validate_delegation(resolver_client,
                                                 doc_id=deleg_doc_did,
                                                 deleg_proof=deleg_proof)
Exemplo n.º 2
0
def test_validate_delegation_raises_validation_error_if_resolver_error(
        doc_did, deleg_doc_did, valid_key_pair_secrets, resolver_err):
    controller_name = '#AController'

    deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=valid_key_pair_secrets,
        content=doc_did.encode(),
        p_type=DelegationProofType.DID,
        subject_issuer=Issuer.build(deleg_doc_did, controller_name))
    resolver_client = ResolverClientWithError(error_to_raise=resolver_err())
    with pytest.raises(IdentityInvalidDocumentDelegationError) as err_wrapper:
        DelegationValidation.validate_delegation(resolver_client,
                                                 doc_id=doc_did,
                                                 deleg_proof=deleg_proof)
    assert isinstance(err_wrapper.value.__cause__, resolver_err)
Exemplo n.º 3
0
def test_validate_delegation_raises_validation_error_if_invalid_delegation_proof(
        doc_did, deleg_doc_did, valid_issuer_key, other_key_pair_secrets):
    controller_name = '#AController'
    corrupted_deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=other_key_pair_secrets,
        content=doc_did.encode(),
        p_type=DelegationProofType.DID,
        subject_issuer=Issuer.build(deleg_doc_did, controller_name))
    deleg_doc = get_delegation_doc_for(
        controller_name=controller_name,
        doc_id=deleg_doc_did,
        public_base58=valid_issuer_key.public_key_base58)
    resolver_client = ResolverClientTest(docs={deleg_doc_did: deleg_doc})
    with pytest.raises(IdentityInvalidDocumentDelegationError) as err_wrapper:
        DelegationValidation.validate_delegation(
            resolver_client, doc_id=doc_did, deleg_proof=corrupted_deleg_proof)
    assert isinstance(err_wrapper.value.__cause__, IdentityInvalidProofError)
Exemplo n.º 4
0
def test_can_validate_delegation(doc_did, deleg_doc_did, valid_issuer_key,
                                 valid_key_pair_secrets, proof_type,
                                 get_content):
    controller_name = '#AController'
    deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=valid_key_pair_secrets,
        content=get_content(doc_did),
        p_type=proof_type,
        subject_issuer=Issuer.build(deleg_doc_did, controller_name))
    deleg_doc = get_delegation_doc_for(
        controller_name=controller_name,
        doc_id=deleg_doc_did,
        public_base58=valid_issuer_key.public_key_base58)
    resolver_client = ResolverClientTest(docs={deleg_doc_did: deleg_doc})
    assert is_validator_run_success(DelegationValidation.validate_delegation,
                                    resolver_client,
                                    doc_id=doc_did,
                                    deleg_proof=deleg_proof)
Exemplo n.º 5
0
def test_validate_delegation_raises_validation_error_if_content_does_not_match_proof_type(
        doc_did, deleg_doc_did, valid_issuer_key, valid_key_pair_secrets,
        wrong_type, get_content):
    controller_name = '#AController'
    deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=valid_key_pair_secrets,
        content=get_content(doc_did),
        p_type=wrong_type,
        subject_issuer=Issuer.build(deleg_doc_did, controller_name))
    deleg_doc = get_delegation_doc_for(
        controller_name=controller_name,
        doc_id=deleg_doc_did,
        public_base58=valid_issuer_key.public_key_base58)
    resolver_client = ResolverClientTest(docs={deleg_doc_did: deleg_doc})

    with pytest.raises(IdentityInvalidDocumentDelegationError) as err_wrapper:
        DelegationValidation.validate_delegation(resolver_client,
                                                 doc_id=doc_did,
                                                 deleg_proof=deleg_proof)
    assert isinstance(err_wrapper.value.__cause__, IdentityInvalidProofError)
Exemplo n.º 6
0
def test_validate_delegation_raises_validation_error_if_public_key_not_in_deleg_controller_doc(
        doc_did, deleg_doc_did, valid_issuer_key, valid_key_pair_secrets):
    controller_name = '#AController'
    deleg_proof = get_delegation_register_proof(
        subject_key_pair_secrets=valid_key_pair_secrets,
        content=doc_did.encode(),
        p_type=DelegationProofType.DID,
        subject_issuer=Issuer.build(deleg_doc_did, controller_name))
    deleg_doc = get_doc_with_keys(did=doc_did,
                                  public_keys=[
                                      RegisterPublicKey.build(
                                          '#NotMatchingTheController',
                                          valid_issuer_key.public_key_base58,
                                          revoked=False),
                                  ])
    resolver_client = ResolverClientTest({deleg_doc_did: deleg_doc})
    with pytest.raises(IdentityInvalidDocumentDelegationError) as err_wrapper:
        DelegationValidation.validate_delegation(resolver_client,
                                                 doc_id=doc_did,
                                                 deleg_proof=deleg_proof)
    assert isinstance(err_wrapper.value.__cause__, IdentityValidationError)