Skip to content

Commit

Permalink
Merge pull request #573 from sklump/update-did-endpoint
Browse files Browse the repository at this point in the history
Update did endpoint
  • Loading branch information
andrewwhitehead committed Jun 22, 2020
2 parents acd65a7 + c2b11d0 commit 68bbf71
Show file tree
Hide file tree
Showing 9 changed files with 389 additions and 163 deletions.
2 changes: 1 addition & 1 deletion aries_cloudagent/ledger/indy.py
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,7 @@ async def get_key_for_did(self, did: str) -> str:
request_json = await indy.ledger.build_get_nym_request(public_did, nym)
response_json = await self._submit(request_json, sign_did=public_info)
data_json = (json.loads(response_json))["result"]["data"]
return json.loads(data_json)["verkey"]
return json.loads(data_json)["verkey"] if data_json else None

async def get_endpoint_for_did(self, did: str) -> str:
"""Fetch the endpoint for a ledger DID.
Expand Down
2 changes: 2 additions & 0 deletions aries_cloudagent/ledger/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ async def get_did_verkey(request: web.BaseRequest):
async with ledger:
try:
result = await ledger.get_key_for_did(did)
if not result:
raise web.HTTPNotFound(reason=f"DID {did} is not on the ledger")
except LedgerError as err:
raise web.HTTPBadRequest(reason=err.roll_up) from err

Expand Down
18 changes: 18 additions & 0 deletions aries_cloudagent/ledger/tests/test_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ async def test_get_verkey_no_did(self):
with self.assertRaises(test_module.web.HTTPBadRequest):
await test_module.get_did_verkey(request)

async def test_get_verkey_did_not_public(self):
request = async_mock.MagicMock()
request.app = self.app
request.query = {"did": self.test_did}
self.ledger.get_key_for_did.return_value = None
with self.assertRaises(test_module.web.HTTPNotFound):
await test_module.get_did_verkey(request)

async def test_get_verkey_x(self):
request = async_mock.MagicMock()
request.app = self.app
Expand Down Expand Up @@ -196,6 +204,16 @@ async def test_get_taa_required(self):
json_response.assert_called_once_with({"result": taa_info})
assert result is json_response.return_value

async def test_get_taa_x(self):
request = async_mock.MagicMock()
request.app = self.app

self.ledger.LEDGER_TYPE = "indy"
self.ledger.get_txn_author_agreement.side_effect = test_module.LedgerError()

with self.assertRaises(test_module.web.HTTPBadRequest):
await test_module.ledger_get_taa(request)

async def test_taa_accept_not_required(self):
request = async_mock.MagicMock()
request.app = self.app
Expand Down
14 changes: 10 additions & 4 deletions aries_cloudagent/messaging/schemas/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@
)

from marshmallow import fields, Schema
from marshmallow.validate import Regexp

from ...issuer.base import BaseIssuer, IssuerError
from ...ledger.base import BaseLedger
from ...ledger.error import LedgerError
from ...storage.base import BaseStorage
from ..valid import NATURAL_NUM, INDY_SCHEMA_ID, INDY_VERSION
from ..valid import B58, NATURAL_NUM, INDY_SCHEMA_ID, INDY_VERSION
from .util import SchemaQueryStringSchema, SCHEMA_SENT_RECORD_TYPE, SCHEMA_TAGS


Expand All @@ -38,8 +39,10 @@ class SchemaSendRequestSchema(Schema):
class SchemaSendResultsSchema(Schema):
"""Results schema for schema send request."""

schema_id = fields.Str(description="Schema identifier", **INDY_SCHEMA_ID)
schema = fields.Dict(description="Schema result")
schema_id = fields.Str(
description="Schema identifier", required=True, **INDY_SCHEMA_ID
)
schema = fields.Dict(description="Schema result", required=True)


class SchemaSchema(Schema):
Expand Down Expand Up @@ -77,7 +80,10 @@ class SchemaIdMatchInfoSchema(Schema):
"""Path parameters and validators for request taking schema id."""

schema_id = fields.Str(
description="Schema identifier", required=True, **INDY_SCHEMA_ID,
description="Schema identifier",
required=True,
validate=Regexp(rf"^[1-9][0-9]*|[{B58}]{{21,22}}:2:.+:[0-9.]+$"),
example=INDY_SCHEMA_ID["example"],
)


Expand Down
10 changes: 10 additions & 0 deletions aries_cloudagent/messaging/schemas/tests/test_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,16 @@ async def test_get_schema(self):
assert result == mock_response.return_value
mock_response.assert_called_once_with({"schema": {"schema": "def"}})

async def test_get_schema_on_seq_no(self):
mock_request = async_mock.MagicMock(
app=self.app, match_info={"schema_id": "12345"},
)

with async_mock.patch.object(test_module.web, "json_response") as mock_response:
result = await test_module.schemas_get_schema(mock_request)
assert result == mock_response.return_value
mock_response.assert_called_once_with({"schema": {"schema": "def"}})

async def test_get_schema_no_ledger(self):
mock_request = async_mock.MagicMock(
app=self.app, match_info={"schema_id": SCHEMA_ID},
Expand Down
2 changes: 2 additions & 0 deletions aries_cloudagent/wallet/indy.py
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,7 @@ async def unpack_message(self, enc_message: bytes) -> (str, str, str):
from_verkey = unpacked.get("sender_verkey", None)
return message, from_verkey, to_verkey

'''
async def get_credential_definition_tag_policy(self, credential_definition_id: str):
"""Return the tag policy for a given credential definition ID."""
try:
Expand Down Expand Up @@ -716,6 +717,7 @@ async def set_credential_definition_tag_policy(
raise IndyErrorHandler.wrap_error(
x_indy, "Wallet {} error".format(self.name), WalletError
) from x_indy
'''

@classmethod
async def generate_wallet_key(self, seed: str = None) -> str:
Expand Down

0 comments on commit 68bbf71

Please sign in to comment.