コード例 #1
0
async def test_schema_loading(agent1: Agent, agent2: Agent):
    await agent1.open()
    await agent2.open()
    try:
        seed1 = '000000000000000000000000Steward1'
        did1, verkey1 = await agent1.wallet.did.create_and_store_my_did(
            seed=seed1)
        schema_name = 'schema_' + uuid.uuid4().hex
        schema_id, anoncred_schema = await agent1.wallet.anoncreds.issuer_create_schema(
            did1, schema_name, '1.0', ['attr1', 'attr2', 'attr3'])
        ledger1 = agent1.ledger('default')

        ok, schema = await ledger1.register_schema(schema=anoncred_schema,
                                                   submitter_did=did1)
        assert ok is True
        assert schema.seq_no > 0

        seed2 = '000000000000000000000000Trustee0'
        did2, verkey2 = await agent2.wallet.did.create_and_store_my_did(
            seed=seed2)
        ledger2 = agent2.ledger('default')

        for n in range(5):
            loaded_schema = await ledger2.load_schema(id_=schema.id,
                                                      submitter_did=did2)
            assert loaded_schema is not None
            assert loaded_schema == schema
    finally:
        await agent1.close()
        await agent2.close()
コード例 #2
0
async def test_schema_registration(agent1: Agent):
    await agent1.open()
    try:
        seed = '000000000000000000000000Steward1'
        did, verkey = await agent1.wallet.did.create_and_store_my_did(seed=seed
                                                                      )
        schema_name = 'schema_' + uuid.uuid4().hex
        schema_id, anoncred_schema = await agent1.wallet.anoncreds.issuer_create_schema(
            did, schema_name, '1.0', ['attr1', 'attr2', 'attr3'])
        ledger = agent1.ledger('default')

        ok, schema = await ledger.register_schema(schema=anoncred_schema,
                                                  submitter_did=did)
        assert ok is True
        assert schema.seq_no > 0

        ok, _ = await ledger.register_schema(schema=anoncred_schema,
                                             submitter_did=did)
        assert ok is False

        restored_schema = await ledger.ensure_schema_exists(
            schema=anoncred_schema, submitter_did=did)
        assert restored_schema is not None
        assert restored_schema == schema

    finally:
        await agent1.close()
コード例 #3
0
async def test_nym_ops(agent1: Agent, agent2: Agent):
    steward = agent1
    await steward.open()
    await agent2.open()
    try:
        seed = '000000000000000000000000Steward1'
        did_steward, verkey_steward = await steward.wallet.did.create_and_store_my_did(
            seed=seed)
        # check-1: read ops sane
        dkms = steward.ledger('default')
        ok, resp = await dkms.read_nym(did_steward, did_steward)
        assert ok is True
        print('#')
        did_test, verkey_test = await agent2.wallet.did.create_and_store_my_did(
        )
        # check-2: read nym operation for unknown DID
        dkms = agent2.ledger('default')
        ok, resp = await dkms.read_nym(did_test, did_test)
        assert ok is False
        # Check-3: read nym for known DID
        ok, resp = await dkms.read_nym(did_test, did_steward)
        assert ok is True
        # Check-4: write Nym
        dkms = steward.ledger('default')
        ok, resp = await dkms.write_nym(did_steward,
                                        did_test,
                                        verkey_test,
                                        alias='Test Alias')
        assert ok is True
    finally:
        await steward.close()
        await agent2.close()
コード例 #4
0
async def test_register_cred_def(agent1: Agent):
    await agent1.open()
    try:
        seed = '000000000000000000000000Steward1'
        did, verkey = await agent1.wallet.did.create_and_store_my_did(seed=seed
                                                                      )
        schema_name = 'schema_' + uuid.uuid4().hex
        schema_id, anoncred_schema = await agent1.wallet.anoncreds.issuer_create_schema(
            did, schema_name, '1.0', ['attr1', 'attr2', 'attr3'])
        ledger = agent1.ledger('default')

        ok, schema = await ledger.register_schema(schema=anoncred_schema,
                                                  submitter_did=did)
        assert ok is True

        cred_def = CredentialDefinition(tag='Test Tag', schema=schema)
        assert cred_def.body is None
        ok, ledger_cred_def = await ledger.register_cred_def(cred_def=cred_def,
                                                             submitter_did=did)
        assert ok is True
        assert ledger_cred_def.body is not None
        assert ledger_cred_def.seq_no > 0
        assert ledger_cred_def.submitter_did == did
        my_value = 'my-value-' + uuid.uuid4().hex

        ok, ledger_cred_def2 = await ledger.register_cred_def(
            cred_def=cred_def, submitter_did=did, tags={'my_tag': my_value})
        assert ok is True
        assert ledger_cred_def.body == ledger_cred_def2.body
        assert ledger_cred_def2.seq_no > ledger_cred_def.seq_no

        ser = ledger_cred_def.serialize()
        loaded = CredentialDefinition.deserialize(ser)
        assert loaded.body == ledger_cred_def.body
        assert loaded.seq_no == ledger_cred_def.seq_no
        assert loaded.schema.body == ledger_cred_def.schema.body
        assert loaded.config.serialize() == ledger_cred_def.config.serialize()

        results = await ledger.fetch_cred_defs(schema_id=schema_id)
        assert len(results) == 2
        results = await ledger.fetch_cred_defs(my_tag=my_value)
        assert len(results) == 1

        parts = ledger_cred_def.id.split(':')
        print(str(parts))

        opts = CacheOptions()
        for n in range(3):
            cached_body = await agent1.wallet.cache.get_cred_def(
                'default', did, ledger_cred_def.id, opts)
            assert cached_body == ledger_cred_def.body
            cred_def = await ledger.load_cred_def(ledger_cred_def.id, did)
            assert cred_def.body == cached_body
    finally:
        await agent1.close()
コード例 #5
0
async def test_schema_fetching(agent1: Agent):
    await agent1.open()
    try:
        seed = '000000000000000000000000Steward1'
        did, verkey = await agent1.wallet.did.create_and_store_my_did(seed=seed
                                                                      )
        schema_name = 'schema_' + uuid.uuid4().hex
        schema_id, anoncred_schema = await agent1.wallet.anoncreds.issuer_create_schema(
            did, schema_name, '1.0', ['attr1', 'attr2', 'attr3'])
        ledger = agent1.ledger('default')

        ok, schema = await ledger.register_schema(schema=anoncred_schema,
                                                  submitter_did=did)
        assert ok is True

        fetches = await ledger.fetch_schemas(name=schema_name)
        assert len(fetches) == 1
        assert fetches[0].issuer_did == did

    finally:
        await agent1.close()