Skip to content

Commit

Permalink
feat: Integrate universal registrar (#1469)
Browse files Browse the repository at this point in the history
* feat: Integrate universal registrar

Signed-off-by: DaevMithran <[email protected]>

* Update docker compose

Signed-off-by: DaevMithran <[email protected]>

---------

Signed-off-by: DaevMithran <[email protected]>
  • Loading branch information
DaevMithran authored Jan 30, 2025
1 parent 0f5e3e3 commit 2e72ad0
Show file tree
Hide file tree
Showing 15 changed files with 220 additions and 187 deletions.
2 changes: 1 addition & 1 deletion cheqd/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@
},
"mounts": [],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [8020, 8021, 5432, 8080, 3000],
"forwardPorts": [8020, 8021, 5432, 8080, 9080],
"postCreateCommand": "bash ./.devcontainer/post-install.sh"
}
57 changes: 35 additions & 22 deletions cheqd/cheqd/anoncreds/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@
Secret,
SubmitSignatureOptions,
DidUrlActionState,
Options,
)
from ..did.helpers import CheqdAnoncredsResourceType
from ..did.manager import CheqdDIDManager
from ..did.registrar import CheqdDIDRegistrar
from ..did.registrar import DIDRegistrar
from ..resolver.resolver import CheqdDIDResolver
from ..validation import CheqdDID

Expand All @@ -70,7 +71,7 @@ class PublishResourceResponse(BaseModel):
class DIDCheqdRegistry(BaseAnonCredsResolver, BaseAnonCredsRegistrar):
"""DIDCheqdRegistry."""

registrar: CheqdDIDRegistrar
registrar: DIDRegistrar
resolver: CheqdDIDResolver

def __init__(self):
Expand All @@ -80,7 +81,7 @@ def __init__(self):
None
"""
self.registrar = CheqdDIDRegistrar()
self.registrar = DIDRegistrar(method="cheqd")
self.resolver = CheqdDIDResolver()

@property
Expand Down Expand Up @@ -115,7 +116,7 @@ def split_did_url(schema_id: str) -> (str, str):

async def setup(self, _context: InjectionContext, registrar_url, resolver_url):
"""Setup."""
self.registrar = CheqdDIDRegistrar(registrar_url)
self.registrar = DIDRegistrar("cheqd", registrar_url)
self.resolver = CheqdDIDResolver(resolver_url)
print("Successfully registered DIDCheqdRegistry")

Expand Down Expand Up @@ -180,9 +181,11 @@ async def register_schema(
if existing_schema is not None:
LOGGER.debug("UPDATING SCHEMA")
cheqd_schema = ResourceUpdateRequestOptions(
name=resource_name,
type=resource_type,
version=resource_version,
options=Options(
name=resource_name,
type=resource_type,
versionId=resource_version,
),
content=[
dict_to_b64(
{
Expand All @@ -205,9 +208,11 @@ async def register_schema(
else:
LOGGER.debug("CREATING SCHEMA")
cheqd_schema = ResourceCreateRequestOptions(
name=resource_name,
type=resource_type,
version=resource_version,
options=Options(
name=resource_name,
type=resource_type,
versionId=resource_version,
),
content=dict_to_b64(
{
"name": schema.name,
Expand Down Expand Up @@ -285,8 +290,11 @@ async def register_credential_definition(
resource_name = f"{schema.schema_value.name}-{credential_definition.tag}"

cred_def = ResourceCreateRequestOptions(
name=resource_name,
type=resource_type,
options=Options(
name=resource_name,
type=resource_type,
versionId=credential_definition.tag,
),
content=dict_to_b64(
{
"type": credential_definition.type,
Expand All @@ -295,7 +303,6 @@ async def register_credential_definition(
"schemaId": schema.schema_id,
}
),
version=credential_definition.tag,
did=credential_definition.issuer_id,
)

Expand Down Expand Up @@ -367,8 +374,11 @@ async def register_revocation_registry_definition(
resource_type = CheqdAnoncredsResourceType.revocationRegistryDefinition.value

rev_reg_def = ResourceCreateRequestOptions(
name=resource_name,
type=resource_type,
options=Options(
name=resource_name,
type=resource_type,
versionId=revocation_registry_definition.tag,
),
content=dict_to_b64(
{
"revocDefType": revocation_registry_definition.type,
Expand All @@ -377,7 +387,6 @@ async def register_revocation_registry_definition(
"credDefId": revocation_registry_definition.cred_def_id,
}
),
version=revocation_registry_definition.tag,
did=revocation_registry_definition.issuer_id,
)

Expand Down Expand Up @@ -478,16 +487,18 @@ async def register_revocation_list(
)
resource_type = CheqdAnoncredsResourceType.revocationStatusList.value
rev_status_list = ResourceCreateRequestOptions(
name=resource_name,
type=resource_type,
options=Options(
name=resource_name,
type=resource_type,
versionId=str(uuid4()),
),
content=dict_to_b64(
{
"revocationList": rev_list.revocation_list,
"currentAccumulator": rev_list.current_accumulator,
"revRegDefId": rev_list.rev_reg_def_id,
}
),
version=str(uuid4()),
did=rev_reg_def.issuer_id,
)

Expand Down Expand Up @@ -533,8 +544,11 @@ async def update_revocation_list(
)
resource_type = CheqdAnoncredsResourceType.revocationStatusList.value
rev_status_list = ResourceUpdateRequestOptions(
name=resource_name,
type=resource_type,
options=Options(
name=resource_name,
type=resource_type,
versionId=str(uuid4()),
),
content=[
dict_to_b64(
{
Expand All @@ -544,7 +558,6 @@ async def update_revocation_list(
}
)
],
version=str(uuid4()),
did=rev_reg_def.issuer_id,
)

Expand Down
49 changes: 30 additions & 19 deletions cheqd/cheqd/anoncreds/tests/test_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@
from acapy_agent.anoncreds.models.schema import GetSchemaResult, SchemaResult
from acapy_agent.anoncreds.models.schema_info import AnoncredsSchemaInfo

from ...did.base import ResourceCreateRequestOptions, ResourceUpdateRequestOptions
from ...did.base import (
ResourceCreateRequestOptions,
ResourceUpdateRequestOptions,
Options,
)
from ...did.manager import CheqdDIDManager
from ...did.tests.mocks import (
registrar_resource_responses_no_signing_request,
Expand All @@ -33,7 +37,7 @@
TEST_CHEQD_SCHEMA_ID = "did:cheqd:testnet:1686a962-6e82-46f3-bde7-e6711d63958c/resources/e788d345-dd0c-427a-a74b-27faf1e608cd"
TEST_CHEQD_CRED_DEF_ID = "did:cheqd:testnet:1686a962-6e82-46f3-bde7-e6711d63958c/resources/02229804-b46a-4be9-a6f1-13869109c7ea"
TEST_CHEQD_REV_REG_ENTRY = "did:cheqd:testnet:1686a962-6e82-46f3-bde7-e6711d63958c?resourceName=test&resourceType=anoncredsRevRegEntry"
TEST_REGISTRAR_URL = "http://localhost:3000/1.0/"
TEST_REGISTRAR_URL = "http://localhost:9080/1.0/"
TEST_RESOLVER_URL = "http://localhost:8080/1.0/identifiers/"


Expand Down Expand Up @@ -155,9 +159,11 @@ async def test_register_schema(
TEST_REGISTRAR_URL,
TEST_RESOLVER_URL,
ResourceCreateRequestOptions(
name="MOCK_NAME",
type="anonCredsSchema",
version="MOCK_VERSION",
options=Options(
name="MOCK_NAME",
type="anonCredsSchema",
versionId="MOCK_VERSION",
),
content="eyJuYW1lIjogIk1PQ0tfTkFNRSIsICJ2ZXJzaW9uIjogIk1PQ0tfVkVSU0lPTiIsICJhdHRyTmFtZXMiOiAiTU9DS19BVFRSX05BTUVTIn0",
did="MOCK_ISSUER_ID",
relativeDidUrl=None,
Expand Down Expand Up @@ -198,15 +204,16 @@ async def test_register_schema_update(
TEST_REGISTRAR_URL,
TEST_RESOLVER_URL,
ResourceUpdateRequestOptions(
name="MOCK_NAME",
type="anonCredsSchema",
version="MOCK_VERSION",
options=Options(
name="MOCK_NAME",
type="anonCredsSchema",
versionId="MOCK_VERSION",
),
content=[
"eyJuYW1lIjogIk1PQ0tfTkFNRSIsICJ2ZXJzaW9uIjogIk1PQ0tfVkVSU0lPTiIsICJhdHRyTmFtZXMiOiAiTU9DS19BVFRSX05BTUVTIn0"
],
did="MOCK_ISSUER_ID",
relativeDidUrl=None,
options=None,
),
)

Expand Down Expand Up @@ -312,9 +319,11 @@ async def test_register_credential_definition(
TEST_REGISTRAR_URL,
TEST_RESOLVER_URL,
ResourceCreateRequestOptions(
name="MOCK_NAME-MOCK_TAG",
type="anonCredsCredDef",
version="MOCK_TAG",
options=Options(
name="MOCK_NAME-MOCK_TAG",
type="anonCredsCredDef",
versionId="MOCK_TAG",
),
content="eyJ0eXBlIjogIk1PQ0tfVFlQRSIsICJ0YWciOiAiTU9DS19UQUciLCAidmFsdWUiOiB7Ik1PQ0tfS0VZIjogIk1PQ0tfVkFMVUVfU0VSSUFMSVpFRCJ9LCAic2NoZW1hSWQiOiAiTU9DS19JRCJ9",
did="MOCK_ISSUER_ID",
relativeDidUrl=None,
Expand Down Expand Up @@ -405,9 +414,11 @@ async def test_register_revocation_registry_definition(
TEST_REGISTRAR_URL,
TEST_RESOLVER_URL,
ResourceCreateRequestOptions(
name="MOCK_RESOURCE_NAME-MOCK_TAG",
type="anonCredsRevocRegDef",
version="MOCK_TAG",
options=Options(
name="MOCK_RESOURCE_NAME-MOCK_TAG",
type="anonCredsRevocRegDef",
versionId="MOCK_TAG",
),
content="eyJyZXZvY0RlZlR5cGUiOiAiTU9DS19UWVBFIiwgInRhZyI6ICJNT0NLX1RBRyIsICJ2YWx1ZSI6IHsiTU9DS19LRVkiOiAiTU9DS19WQUxVRSJ9LCAiY3JlZERlZklkIjogIk1PQ0tfQ1JFRF9ERUZfSUQifQ",
did="MOCK_ISSUER_ID",
relativeDidUrl=None,
Expand Down Expand Up @@ -535,7 +546,7 @@ async def test_get_schema_info_by_id(mock_resolver, mock_profile):
mock_resolver.resolve_resource.assert_called_once_with(schema_id)


@patch("cheqd.cheqd.did.manager.CheqdDIDRegistrar")
@patch("cheqd.cheqd.did.manager.DIDRegistrar")
@pytest.mark.asyncio
async def test_create_and_publish_resource_with_signing_failure(
mock_registrar_instance,
Expand Down Expand Up @@ -567,7 +578,7 @@ async def test_create_and_publish_resource_with_signing_failure(
assert str(e.value) == "No signing requests available for update."


@patch("cheqd.cheqd.did.manager.CheqdDIDRegistrar")
@patch("cheqd.cheqd.did.manager.DIDRegistrar")
@pytest.mark.asyncio
async def test_update_and_publish_resource_with_signing_failure(
mock_registrar_instance,
Expand Down Expand Up @@ -599,7 +610,7 @@ async def test_update_and_publish_resource_with_signing_failure(
assert str(e.value) == "No signing requests available for update."


@patch("cheqd.cheqd.did.manager.CheqdDIDRegistrar")
@patch("cheqd.cheqd.did.manager.DIDRegistrar")
@pytest.mark.asyncio
async def test_create_with_network_failure(
mock_registrar_instance,
Expand Down Expand Up @@ -630,7 +641,7 @@ async def test_create_with_network_failure(
assert str(e.value) == "Error publishing Resource Network failure"


@patch("cheqd.cheqd.did.manager.CheqdDIDRegistrar")
@patch("cheqd.cheqd.did.manager.DIDRegistrar")
@pytest.mark.asyncio
async def test_create_not_finished(
mock_registrar_instance,
Expand Down
Loading

0 comments on commit 2e72ad0

Please sign in to comment.