Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions acapy_agent/wallet/tests/test_anoncreds_upgrade.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import asyncio
import json
from time import time
from unittest import IsolatedAsyncioTestCase

from anoncreds import CredentialDefinitionPrivate, KeyCorrectnessProof
from aries_askar import AskarError

from ...anoncreds.issuer import CATEGORY_CRED_DEF_PRIVATE
from ...anoncreds.models.revocation import RevList
from ...askar.profile import AskarProfileSession
from ...cache.base import BaseCache
from ...indy.credx.issuer import CATEGORY_CRED_DEF_KEY_PROOF
Expand All @@ -14,6 +16,7 @@
from ...messaging.schemas.util import SCHEMA_SENT_RECORD_TYPE
from ...multitenant.base import BaseMultitenantManager
from ...multitenant.manager import MultitenantManager
from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord
from ...storage.base import BaseStorage
from ...storage.record import StorageRecord
from ...storage.type import (
Expand Down Expand Up @@ -403,3 +406,42 @@ async def test_failed_upgrade(self):
)
# Storage type should not be updated
assert storage_type_record.value == "askar"

async def test_upgrade_preserves_issuer_cred_rev_records(self):
cred_ex_id = "legacy-cred-ex-1"
rev_reg_id = "rev-reg-1"
cred_rev_id = "1"
async with self.profile.session() as session:
record = IssuerCredRevRecord(
cred_ex_id=cred_ex_id,
rev_reg_id=rev_reg_id,
cred_rev_id=cred_rev_id,
)
await record.save(session)
storage_record = StorageRecord(
IssuerCredRevRecord.RECORD_TYPE,
json.dumps(record.serialize()),
tags={"cred_rev_id": cred_rev_id},
id=record.record_id,
)
rev_list = RevList(
issuer_id="issuer",
rev_reg_def_id=rev_reg_id,
revocation_list=[0],
current_accumulator="accum",
)
rev_list_upgrade_obj = anoncreds_upgrade.RevListUpgradeObj(
rev_list=rev_list,
pending=None,
rev_reg_def_id=rev_reg_id,
cred_rev_records=[storage_record],
)
await anoncreds_upgrade.upgrade_and_delete_rev_entry_records(
session, rev_list_upgrade_obj
)

async with self.profile.session() as session:
retrieved = await IssuerCredRevRecord.retrieve_by_cred_ex_id(
session, cred_ex_id
)
assert retrieved.cred_rev_id == cred_rev_id
Loading