示例#1
0
def test_idr_cache_update_after_catchup(txnPoolNodeSet, looper,
                                        sdk_pool_handle, sdk_wallet_steward,
                                        tconf, tdir, allPluginsPath):
    wallet_handle, identifier = sdk_wallet_steward
    node_to_disconnect = txnPoolNodeSet[-1]
    disconnect_node_and_ensure_disconnected(looper,
                                            txnPoolNodeSet,
                                            node_to_disconnect.name,
                                            stopNode=True)
    looper.removeProdable(node_to_disconnect)

    idr, verkey = createHalfKeyIdentifierAndAbbrevVerkey()
    request = looper.loop.run_until_complete(
        build_nym_request(identifier, idr, verkey, None, None))
    req_signed = looper.loop.run_until_complete(
        sign_request(wallet_handle, identifier, request))
    result = json.loads(
        looper.loop.run_until_complete(
            submit_request(sdk_pool_handle, req_signed)))

    restarted_node = start_stopped_node(node_to_disconnect, looper, tconf,
                                        tdir, allPluginsPath)
    txnPoolNodeSet[-1] = restarted_node
    waitNodeDataEquality(looper, restarted_node, *txnPoolNodeSet[:-1])
    req_handler = restarted_node.get_req_handler(DOMAIN_LEDGER_ID)
    root_hash = req_handler.ts_store.get_equal_or_prev(
        get_txn_time(result['result']))
    key = domain.make_state_path_for_nym(idr)
    from_state = req_handler.state.get_for_root_hash(root_hash=root_hash,
                                                     key=key)
    assert from_state
    deserialized = req_handler.stateSerializer.deserialize(from_state)
    assert deserialized
    items_after = req_handler.idrCache.get(idr)
    assert items_after
示例#2
0
def testSendGetNymFailsIfDestIsPassedInHexFormat(looper, sdk_pool_handle,
                                                 sdk_wallet_trustee):
    # Sometimes hex representation can use only base58 compatible characters
    while True:
        uuidIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
        hexEncodedUuidIdentifier = hexlify(
            friendlyToRaw(uuidIdentifier)).decode()
        if not check_str_is_base58_compatible(hexEncodedUuidIdentifier):
            break
    sdk_add_new_nym(looper,
                    sdk_pool_handle,
                    sdk_wallet_trustee,
                    dest=uuidIdentifier,
                    verkey=abbrevVerkey)

    _, s_did = sdk_wallet_trustee
    get_nym_req = looper.loop.run_until_complete(
        build_get_nym_request(s_did, uuidIdentifier))
    get_nym_req = modify_field(get_nym_req, hexEncodedUuidIdentifier,
                               IDENTIFIER)
    req = sdk_sign_and_send_prepared_request(looper, sdk_wallet_trustee,
                                             sdk_pool_handle, get_nym_req)
    with pytest.raises(RequestNackedException) as e:
        sdk_get_and_check_replies(looper, [req])
    e.match('should not contain the following chars')
def provisioned(provisioned_role):
    did, verkey = createHalfKeyIdentifierAndAbbrevVerkey()
    return (
        DIDWallet(
            did=did,
            role=provisioned_role if provisioned_role else Roles.IDENTITY_OWNER,
            verkey=verkey),
        provisioned_role is None)
def rotation_verkey(request):
    if request.param in (Rotations.none_none, Rotations.none_val):
        request.node.add_marker('skip_did_verkey')

    verkey = None
    if request.param in (Rotations.val_val, Rotations.none_val):
        _, verkey_ = createHalfKeyIdentifierAndAbbrevVerkey()

    return verkey
示例#5
0
def testSendNymSucceedsForOmittedRole(looper, sdk_pool_handle, txnPoolNodeSet,
                                      nym_request, sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {'dest': halfKeyIdentifier, 'verkey': abbrevVerkey}
    del nym_request[OPERATION][ROLE]
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(
        looper, sdk_wallet_trustee, sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
示例#6
0
def testSendNymHasInvalidSyntaxIfParametersOrderIsWrong(
        looper, sdk_pool_handle, txnPoolNodeSet, nym_request, sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {
        'dest': halfKeyIdentifier,
        'verkey': abbrevVerkey,
        'role': TRUST_ANCHOR
    }
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(looper, sdk_wallet_trustee,
                                                        sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
示例#7
0
def testSendNymFailsIfRoleIsSpecifiedUsingNumericCode(
        looper, sdk_pool_handle, txnPoolNodeSet, nym_request, sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {
        'dest': halfKeyIdentifier,
        'verkey': abbrevVerkey,
        'role': TRUST_ANCHOR.value
    }
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(looper, sdk_wallet_trustee,
                                                        sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
示例#8
0
def testSendNymFailsIfAbbrevVerkeysdk_pool_handleesNotContainTilde(
        looper, sdk_pool_handle, txnPoolNodeSet, nym_request, sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {
        'dest': halfKeyIdentifier,
        'verkey': abbrevVerkey.replace('~', ''),
        'role': TRUST_ANCHOR
    }
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(looper, sdk_wallet_trustee,
                                                        sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
def test_get_nym_returns_role(
        looper, sdk_pool_handle, sdk_wallet_trustee):
    current_role = ENDORSER_STRING
    uuidIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    sdk_add_new_nym(looper, sdk_pool_handle, sdk_wallet_trustee,
                    dest=uuidIdentifier, verkey=abbrevVerkey, role=current_role)
    get_nym(looper, sdk_pool_handle, sdk_wallet_trustee, createUuidIdentifier())

    new_role = ''
    sdk_add_new_nym(looper, sdk_pool_handle, sdk_wallet_trustee,
                    dest=uuidIdentifier, role=new_role, skipverkey=True)
    get_nym(looper, sdk_pool_handle, sdk_wallet_trustee, createUuidIdentifier())
示例#10
0
def testSendNymFailsIfAbbrevVerkeyContainsNonBase58Characters(
        looper, sdk_pool_handle, txnPoolNodeSet, nym_request,
        sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {
        'dest': halfKeyIdentifier,
        'verkey': abbrevVerkey[:6] + '/' + abbrevVerkey[7:],
        'role': ENDORSER
    }
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(
        looper, sdk_wallet_trustee, sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
示例#11
0
def testSendNymFailsIfAbbrevVerkeyIsHexEncoded(looper, sdk_pool_handle,
                                               txnPoolNodeSet, nym_request,
                                               sdk_wallet_trustee):
    halfKeyIdentifier, abbrevVerkey = createHalfKeyIdentifierAndAbbrevVerkey()
    parameters = {
        'dest': halfKeyIdentifier,
        'verkey': '~' + friendlyToHexStr(abbrevVerkey.replace('~', '')),
        'role': ENDORSER
    }
    nym_request[OPERATION].update(parameters)
    request_couple = sdk_sign_and_send_prepared_request(
        looper, sdk_wallet_trustee, sdk_pool_handle, json.dumps(nym_request))
    sdk_get_and_check_replies(looper, [request_couple])
def test_nym_reply_is_valid(looper, sdk_pool_handle, sdk_wallet_steward):
    idr, verkey = createHalfKeyIdentifierAndAbbrevVerkey()

    _, identifier = sdk_wallet_steward
    request = looper.loop.run_until_complete(
        build_nym_request(identifier, idr, verkey, None, None))
    reply = sdk_get_reply(
        looper,
        sdk_sign_and_submit_req(sdk_pool_handle, sdk_wallet_steward,
                                request))[1]

    validate_write_reply(reply)
    validate_nym_txn(reply['result']['txn'])
示例#13
0
def req(request, looper, sdk_pool_handle, sdk_wallet_steward):
    wallet_handle, identifier = sdk_wallet_steward
    if request.param == "ATTRIB":
        raw = json.dumps({'answer': 42})
        request_json = looper.loop.run_until_complete(
            build_attrib_request(identifier,
                                 identifier,
                                 raw=raw,
                                 xhash=None,
                                 enc=None))
    elif request.param == "SCHEMA":
        _, schema_json = looper.loop.run_until_complete(
            issuer_create_schema(identifier, "name", "1.0",
                                 json.dumps(["first", "last"])))
        request_json = looper.loop.run_until_complete(
            build_schema_request(identifier, schema_json))
    elif request.param == "RS_SCHEMA":
        rs_schema = {'@id': "fakeId234e", '@type': "0od"}
        request_json = build_rs_schema_request(identifier, rs_schema,
                                               "ISO18023_Drivers_License",
                                               "1.1")
    elif request.param == "CLAIM_DEF":
        schema_json, _ = sdk_write_schema(looper, sdk_pool_handle,
                                          sdk_wallet_steward)
        schema_id = json.loads(schema_json)['id']

        request = looper.loop.run_until_complete(
            build_get_schema_request(identifier, schema_id))
        reply = sdk_get_reply(
            looper,
            sdk_sign_and_submit_req(sdk_pool_handle, sdk_wallet_steward,
                                    request))[1]
        _, schema_json = looper.loop.run_until_complete(
            parse_get_schema_response(json.dumps(reply)))

        _, definition_json = looper.loop.run_until_complete(
            issuer_create_and_store_credential_def(
                wallet_handle, identifier, schema_json, "some_tag", "CL",
                json.dumps({"support_revocation": True})))
        request_json = looper.loop.run_until_complete(
            build_cred_def_request(identifier, definition_json))
    elif request.param == "NYM":
        idr, verkey = createHalfKeyIdentifierAndAbbrevVerkey()
        request_json = looper.loop.run_until_complete(
            build_nym_request(identifier, idr, verkey, None, None))

    req_signed = looper.loop.run_until_complete(
        sign_request(wallet_handle, identifier, request_json))
    return Request(**json.loads(req_signed))
def test_nym_resend(looper, sdk_pool_handle, sdk_wallet_steward):
    idr, verkey = createHalfKeyIdentifierAndAbbrevVerkey()

    wallet_handle, identifier = sdk_wallet_steward

    request = looper.loop.run_until_complete(
        build_nym_request(identifier, idr, verkey, None, None))
    req_signed = looper.loop.run_until_complete(
        sign_request(wallet_handle, identifier, request))

    for i in range(2):
        result = json.loads(
            looper.loop.run_until_complete(
                submit_request(sdk_pool_handle, req_signed)))
        assert result['op'] == REPLY
def create_new_did(looper, sdk_pool_handle, creator, role, skipverkey=False):

    op = {
        'type': NYM,
        'role': role.value
    }

    new_did_verkey = None

    if skipverkey:
        new_did, _ = createHalfKeyIdentifierAndAbbrevVerkey()
        op.update({'dest': new_did})
    else:
        new_did, new_did_verkey = looper.loop.run_until_complete(
            create_and_store_my_did(creator.wallet_handle, "{}"))

    op.update({'dest': new_did, 'verkey': new_did_verkey})

    req = sdk_sign_and_submit_op(looper, sdk_pool_handle, creator.wallet_did, op)
    sdk_get_and_check_replies(looper, [req])

    return DIDWallet(did=new_did, role=role, verkey=new_did_verkey,
                     creator=creator, wallet_handle=creator.wallet_handle)