Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update did endpoint #573

Merged
merged 5 commits into from
Jun 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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