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)
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)
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)
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)
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)
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)