def test_init_errors_raised():
    with pytest.raises(ValueError) as err:
        VerificationMethod(id_=123,
                           suite=123,
                           controller=123,
                           material="12345")
        assert "expected DID" in err
        assert "expected DIDUrl" in err
        assert "expected VerificationSuite" in err
def test_option_allow_missing_controller():
    vmethod = VerificationMethod.deserialize(
        {
            "id": "did:example:123#keys-1",
            "type": "Ed25519Signature2018",
            "publicKeyBase58": "12345",
        },
        options={VerificationMethodOptions.allow_missing_controller},
    )
    assert vmethod.controller == "did:example:123"
    with pytest.raises(VerificationMethodValidationError):
        vmethod = VerificationMethod.deserialize(
            {
                "type": "Ed25519Signature2018",
                "publicKeyBase58": "12345",
            },
            options={VerificationMethodOptions.allow_missing_controller},
        )
def test_option_allow_controller_list():
    vmethod = VerificationMethod.deserialize(
        {
            "id": "did:example:123#keys-1",
            "type": "Ed25519Signature2018",
            "controller": ["did:example:123"],
            "publicKeyBase58": "12345",
        },
        options={VerificationMethodOptions.allow_controller_list},
    )
    assert vmethod.controller == "did:example:123"
def test_init_mapping():
    vmethod = VerificationMethod(
        id_=DIDUrl("did:example:123", fragment="keys-1"),
        suite=VerificationSuite("TestType", "publicKeyBase58"),
        controller=DID("did:example:123"),
        material="12345",
    )
    assert isinstance(vmethod.id, DIDUrl)
    assert str(vmethod.id) == "did:example:123#keys-1"
    assert isinstance(vmethod.controller, DID)
    assert str(vmethod.controller) == "did:example:123"
def test_deserialized_member_types():
    vmethod = VerificationMethod.deserialize(VMETHOD0)
    assert isinstance(vmethod.id, DIDUrl)
    assert isinstance(vmethod.controller, DID)
def test_serialization_x(invalid_vmethod_raw):
    with pytest.raises(VerificationMethodValidationError):
        VerificationMethod.deserialize(invalid_vmethod_raw)
def test_serialization(vmethod_raw):
    vmethod = VerificationMethod.deserialize(vmethod_raw)
    assert vmethod.serialize() == vmethod_raw
def test_fails_validate_invalid(vmethod):
    with pytest.raises(VerificationMethodValidationError):
        VerificationMethod.validate(vmethod)
def test_validates_valid(vmethod):
    VerificationMethod.validate(vmethod)