Skip to content

Commit a967fd0

Browse files
authored
Merge branch 'main' into fix/base-model-unknown
2 parents 408b219 + d407c48 commit a967fd0

30 files changed

Lines changed: 813 additions & 1131 deletions

File tree

aries_cloudagent/indy/credx/issuer.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
DEFAULT_CRED_DEF_TAG,
2929
DEFAULT_SIGNATURE_TYPE,
3030
)
31-
from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord
32-
3331

3432
LOGGER = logging.getLogger(__name__)
3533

@@ -225,7 +223,6 @@ async def create_credential(
225223
credential_offer: dict,
226224
credential_request: dict,
227225
credential_values: dict,
228-
cred_ex_id: str,
229226
revoc_reg_id: str = None,
230227
tails_file_path: str = None,
231228
) -> Tuple[str, str]:
@@ -237,7 +234,6 @@ async def create_credential(
237234
credential_offer: Credential Offer to create credential for
238235
credential_request: Credential request to create credential for
239236
credential_values: Values to go in credential
240-
cred_ex_id: credential exchange identifier to use in issuer cred rev rec
241237
revoc_reg_id: ID of the revocation registry
242238
tails_file_path: The location of the tails file
243239
@@ -324,20 +320,6 @@ async def create_credential(
324320
await txn.handle.replace(
325321
CATEGORY_REV_REG_INFO, revoc_reg_id, value_json=rev_info
326322
)
327-
328-
issuer_cr_rec = IssuerCredRevRecord(
329-
state=IssuerCredRevRecord.STATE_ISSUED,
330-
cred_ex_id=cred_ex_id,
331-
rev_reg_id=revoc_reg_id,
332-
cred_rev_id=str(rev_reg_index),
333-
)
334-
await issuer_cr_rec.save(
335-
txn,
336-
reason=(
337-
"Created issuer cred rev record for "
338-
f"rev reg id {revoc_reg_id}, {rev_reg_index}"
339-
),
340-
)
341323
await txn.commit()
342324
except AskarError as err:
343325
raise IndyIssuerError(

aries_cloudagent/indy/credx/tests/test_cred_issuance.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ async def test_issue_store_non_rev(self):
137137
cred_offer,
138138
cred_req,
139139
{"name": "NAME", "moniker": "MONIKER"},
140-
cred_ex_id="cred_ex_id",
141140
revoc_reg_id=None,
142141
tails_file_path=None,
143142
)
@@ -255,7 +254,6 @@ async def test_issue_store_rev(self):
255254
cred_offer,
256255
cred_req,
257256
{"name": "NAME", "moniker": "MONIKER"},
258-
cred_ex_id="cred_ex_id",
259257
revoc_reg_id=reg_id,
260258
tails_file_path=tails_path,
261259
)

aries_cloudagent/indy/issuer.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ async def create_credential(
122122
credential_offer: dict,
123123
credential_request: dict,
124124
credential_values: dict,
125-
cred_ex_id: str,
126125
revoc_reg_id: str = None,
127126
tails_file_path: str = None,
128127
) -> Tuple[str, str]:
@@ -134,7 +133,6 @@ async def create_credential(
134133
credential_offer: Credential Offer to create credential for
135134
credential_request: Credential request to create credential for
136135
credential_values: Values to go in credential
137-
cred_ex_id: credential exchange identifier to use in issuer cred rev rec
138136
revoc_reg_id: ID of the revocation registry
139137
tails_file_path: The location of the tails file
140138

aries_cloudagent/indy/sdk/issuer.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
from ...indy.sdk.profile import IndySdkProfile
1212
from ...messaging.util import encode
13-
from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord
1413
from ...storage.error import StorageError
1514

1615
from ..issuer import (
@@ -162,7 +161,6 @@ async def create_credential(
162161
credential_offer: dict,
163162
credential_request: dict,
164163
credential_values: dict,
165-
cred_ex_id: str,
166164
rev_reg_id: str = None,
167165
tails_file_path: str = None,
168166
) -> Tuple[str, str]:
@@ -174,7 +172,6 @@ async def create_credential(
174172
credential_offer: Credential Offer to create credential for
175173
credential_request: Credential request to create credential for
176174
credential_values: Values to go in credential
177-
cred_ex_id: credential exchange identifier to use in issuer cred rev rec
178175
rev_reg_id: ID of the revocation registry
179176
tails_file_path: Path to the local tails file
180177
@@ -219,22 +216,6 @@ async def create_credential(
219216
rev_reg_id,
220217
tails_reader_handle,
221218
)
222-
223-
if cred_rev_id:
224-
issuer_cr_rec = IssuerCredRevRecord(
225-
state=IssuerCredRevRecord.STATE_ISSUED,
226-
cred_ex_id=cred_ex_id,
227-
rev_reg_id=rev_reg_id,
228-
cred_rev_id=cred_rev_id,
229-
)
230-
async with self.profile.session() as session:
231-
await issuer_cr_rec.save(
232-
session,
233-
reason=(
234-
"Created issuer cred rev record for "
235-
f"rev reg id {rev_reg_id}, {cred_rev_id}"
236-
),
237-
)
238219
except AnoncredsRevocationRegistryFullError:
239220
LOGGER.warning(
240221
"Revocation registry %s is full: cannot create credential",

aries_cloudagent/indy/sdk/tests/test_issuer.py

Lines changed: 90 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -167,58 +167,46 @@ async def test_create_revoke_credentials(
167167
for cr_id in test_cred_rev_ids
168168
]
169169

170-
with async_mock.patch.object(
171-
test_module, "IssuerCredRevRecord", async_mock.MagicMock()
172-
) as mock_issuer_cr_rec:
173-
mock_issuer_cr_rec.return_value.save = async_mock.CoroutineMock()
174-
mock_issuer_cr_rec.retrieve_by_ids = async_mock.CoroutineMock(
175-
return_value=async_mock.MagicMock(
176-
set_state=async_mock.CoroutineMock(),
177-
)
178-
)
179-
180-
with self.assertRaises(test_module.IndyIssuerError): # missing attribute
181-
cred_json, revoc_id = await self.issuer.create_credential(
182-
test_schema,
183-
test_offer,
184-
test_request,
185-
{},
186-
"dummy-cxid",
187-
)
188-
189-
(cred_json, cred_rev_id) = await self.issuer.create_credential( # main line
170+
with self.assertRaises(test_module.IndyIssuerError): # missing attribute
171+
cred_json, revoc_id = await self.issuer.create_credential(
190172
test_schema,
191173
test_offer,
192174
test_request,
193-
test_values,
194-
"dummy-cxid",
195-
REV_REG_ID,
196-
"/tmp/tails/path/dummy",
197-
)
198-
mock_indy_create_credential.assert_called_once()
199-
(
200-
call_wallet,
201-
call_offer,
202-
call_request,
203-
call_values,
204-
call_etc1,
205-
call_etc2,
206-
) = mock_indy_create_credential.call_args[0]
207-
assert call_wallet is self.wallet.handle
208-
assert json.loads(call_offer) == test_offer
209-
assert json.loads(call_request) == test_request
210-
values = json.loads(call_values)
211-
assert "attr1" in values
212-
213-
mock_indy_revoke_credential.return_value = json.dumps(TEST_RR_DELTA)
214-
mock_indy_merge_rr_deltas.return_value = json.dumps(TEST_RR_DELTA)
215-
(result, failed) = await self.issuer.revoke_credentials(
216-
REV_REG_ID, tails_file_path="dummy", cred_rev_ids=test_cred_rev_ids
175+
{},
217176
)
218-
assert json.loads(result) == TEST_RR_DELTA
219-
assert not failed
220-
assert mock_indy_revoke_credential.call_count == 2
221-
mock_indy_merge_rr_deltas.assert_called_once()
177+
178+
(cred_json, cred_rev_id) = await self.issuer.create_credential( # main line
179+
test_schema,
180+
test_offer,
181+
test_request,
182+
test_values,
183+
REV_REG_ID,
184+
"/tmp/tails/path/dummy",
185+
)
186+
mock_indy_create_credential.assert_called_once()
187+
(
188+
call_wallet,
189+
call_offer,
190+
call_request,
191+
call_values,
192+
call_etc1,
193+
call_etc2,
194+
) = mock_indy_create_credential.call_args[0]
195+
assert call_wallet is self.wallet.handle
196+
assert json.loads(call_offer) == test_offer
197+
assert json.loads(call_request) == test_request
198+
values = json.loads(call_values)
199+
assert "attr1" in values
200+
201+
mock_indy_revoke_credential.return_value = json.dumps(TEST_RR_DELTA)
202+
mock_indy_merge_rr_deltas.return_value = json.dumps(TEST_RR_DELTA)
203+
(result, failed) = await self.issuer.revoke_credentials(
204+
REV_REG_ID, tails_file_path="dummy", cred_rev_ids=test_cred_rev_ids
205+
)
206+
assert json.loads(result) == TEST_RR_DELTA
207+
assert not failed
208+
assert mock_indy_revoke_credential.call_count == 2
209+
mock_indy_merge_rr_deltas.assert_called_once()
222210

223211
@async_mock.patch("indy.anoncreds.issuer_create_credential")
224212
@async_mock.patch.object(test_module, "create_tails_reader", autospec=True)
@@ -267,73 +255,53 @@ async def test_create_revoke_credentials_x(
267255
test_offer,
268256
test_request,
269257
{},
270-
"dummy-cxid",
271258
)
272259

273-
with async_mock.patch.object(
274-
test_module, "IssuerCredRevRecord", async_mock.MagicMock()
275-
) as mock_issuer_cr_rec:
276-
mock_issuer_cr_rec.return_value.save = async_mock.CoroutineMock(
277-
side_effect=test_module.StorageError(
278-
"could not store" # not fatal; maximize coverage
279-
)
280-
)
281-
mock_issuer_cr_rec.retrieve_by_ids = async_mock.CoroutineMock(
282-
return_value=async_mock.MagicMock(
283-
set_state=async_mock.CoroutineMock(
284-
side_effect=test_module.StorageError(
285-
"could not store" # not fatal; maximize coverage
286-
)
287-
),
288-
)
289-
)
290-
291-
(cred_json, cred_rev_id) = await self.issuer.create_credential( # main line
292-
test_schema,
293-
test_offer,
294-
test_request,
295-
test_values,
296-
"dummy-cxid",
297-
REV_REG_ID,
298-
"/tmp/tails/path/dummy",
299-
)
300-
mock_indy_create_credential.assert_called_once()
301-
(
302-
call_wallet,
303-
call_offer,
304-
call_request,
305-
call_values,
306-
call_etc1,
307-
call_etc2,
308-
) = mock_indy_create_credential.call_args[0]
309-
assert call_wallet is self.wallet.handle
310-
assert json.loads(call_offer) == test_offer
311-
assert json.loads(call_request) == test_request
312-
values = json.loads(call_values)
313-
assert "attr1" in values
314-
315-
def mock_revoke(_h, _t, _r, cred_rev_id):
316-
if cred_rev_id == "42":
317-
return json.dumps(TEST_RR_DELTA)
318-
if cred_rev_id == "54":
319-
raise IndyError(
320-
error_code=ErrorCode.AnoncredsInvalidUserRevocId,
321-
error_details={"message": "already revoked"},
322-
)
260+
(cred_json, cred_rev_id) = await self.issuer.create_credential( # main line
261+
test_schema,
262+
test_offer,
263+
test_request,
264+
test_values,
265+
REV_REG_ID,
266+
"/tmp/tails/path/dummy",
267+
)
268+
mock_indy_create_credential.assert_called_once()
269+
(
270+
call_wallet,
271+
call_offer,
272+
call_request,
273+
call_values,
274+
call_etc1,
275+
call_etc2,
276+
) = mock_indy_create_credential.call_args[0]
277+
assert call_wallet is self.wallet.handle
278+
assert json.loads(call_offer) == test_offer
279+
assert json.loads(call_request) == test_request
280+
values = json.loads(call_values)
281+
assert "attr1" in values
282+
283+
def mock_revoke(_h, _t, _r, cred_rev_id):
284+
if cred_rev_id == "42":
285+
return json.dumps(TEST_RR_DELTA)
286+
if cred_rev_id == "54":
323287
raise IndyError(
324-
error_code=ErrorCode.UnknownCryptoTypeError,
325-
error_details={"message": "truly an outlier"},
288+
error_code=ErrorCode.AnoncredsInvalidUserRevocId,
289+
error_details={"message": "already revoked"},
326290
)
327-
328-
mock_indy_revoke_credential.side_effect = mock_revoke
329-
mock_indy_merge_rr_deltas.return_value = json.dumps(TEST_RR_DELTA)
330-
(result, failed) = await self.issuer.revoke_credentials(
331-
REV_REG_ID, tails_file_path="dummy", cred_rev_ids=test_cred_rev_ids
291+
raise IndyError(
292+
error_code=ErrorCode.UnknownCryptoTypeError,
293+
error_details={"message": "truly an outlier"},
332294
)
333-
assert json.loads(result) == TEST_RR_DELTA
334-
assert failed == ["54", "103"]
335-
assert mock_indy_revoke_credential.call_count == 3
336-
mock_indy_merge_rr_deltas.assert_not_called()
295+
296+
mock_indy_revoke_credential.side_effect = mock_revoke
297+
mock_indy_merge_rr_deltas.return_value = json.dumps(TEST_RR_DELTA)
298+
(result, failed) = await self.issuer.revoke_credentials(
299+
REV_REG_ID, tails_file_path="dummy", cred_rev_ids=test_cred_rev_ids
300+
)
301+
assert json.loads(result) == TEST_RR_DELTA
302+
assert failed == ["54", "103"]
303+
assert mock_indy_revoke_credential.call_count == 3
304+
mock_indy_merge_rr_deltas.assert_not_called()
337305

338306
@async_mock.patch("indy.anoncreds.issuer_create_credential")
339307
@async_mock.patch.object(test_module, "create_tails_reader", autospec=True)
@@ -358,25 +326,14 @@ async def test_create_credential_rr_full(
358326
error_code=ErrorCode.AnoncredsRevocationRegistryFullError
359327
)
360328

361-
with async_mock.patch.object(
362-
test_module, "IssuerCredRevRecord", async_mock.MagicMock()
363-
) as mock_issuer_cr_rec:
364-
mock_issuer_cr_rec.return_value.save = async_mock.CoroutineMock()
365-
mock_issuer_cr_rec.retrieve_by_ids = async_mock.CoroutineMock(
366-
return_value=async_mock.MagicMock(
367-
set_state=async_mock.CoroutineMock(),
368-
)
329+
with self.assertRaises(IndyIssuerRevocationRegistryFullError):
330+
await self.issuer.create_credential(
331+
test_schema,
332+
test_offer,
333+
test_request,
334+
test_values,
369335
)
370336

371-
with self.assertRaises(IndyIssuerRevocationRegistryFullError):
372-
await self.issuer.create_credential(
373-
test_schema,
374-
test_offer,
375-
test_request,
376-
test_values,
377-
"dummy-cxid",
378-
)
379-
380337
@async_mock.patch("indy.anoncreds.issuer_create_credential")
381338
@async_mock.patch.object(test_module, "create_tails_reader", autospec=True)
382339
async def test_create_credential_x_indy(
@@ -401,25 +358,14 @@ async def test_create_credential_x_indy(
401358
error_code=ErrorCode.WalletInvalidHandle
402359
)
403360

404-
with async_mock.patch.object(
405-
test_module, "IssuerCredRevRecord", async_mock.MagicMock()
406-
) as mock_issuer_cr_rec:
407-
mock_issuer_cr_rec.return_value.save = async_mock.CoroutineMock()
408-
mock_issuer_cr_rec.retrieve_by_ids = async_mock.CoroutineMock(
409-
return_value=async_mock.MagicMock(
410-
set_state=async_mock.CoroutineMock(),
411-
)
361+
with self.assertRaises(test_module.IndyIssuerError):
362+
await self.issuer.create_credential(
363+
test_schema,
364+
test_offer,
365+
test_request,
366+
test_values,
412367
)
413368

414-
with self.assertRaises(test_module.IndyIssuerError):
415-
await self.issuer.create_credential(
416-
test_schema,
417-
test_offer,
418-
test_request,
419-
test_values,
420-
"dummy-cxid",
421-
)
422-
423369
@async_mock.patch("indy.anoncreds.issuer_create_and_store_revoc_reg")
424370
@async_mock.patch.object(test_module, "create_tails_writer", autospec=True)
425371
async def test_create_and_store_revocation_registry(

0 commit comments

Comments
 (0)