@originals/sdk 1.4.2 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -1
- package/.eslintrc.json +0 -33
- package/src/adapters/FeeOracleMock.ts +0 -9
- package/src/adapters/index.ts +0 -5
- package/src/adapters/providers/OrdHttpProvider.ts +0 -126
- package/src/adapters/providers/OrdMockProvider.ts +0 -101
- package/src/adapters/types.ts +0 -66
- package/src/bitcoin/BitcoinManager.ts +0 -330
- package/src/bitcoin/BroadcastClient.ts +0 -54
- package/src/bitcoin/OrdinalsClient.ts +0 -119
- package/src/bitcoin/PSBTBuilder.ts +0 -106
- package/src/bitcoin/fee-calculation.ts +0 -38
- package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
- package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
- package/src/bitcoin/providers/types.ts +0 -59
- package/src/bitcoin/transactions/commit.ts +0 -465
- package/src/bitcoin/transactions/index.ts +0 -13
- package/src/bitcoin/transfer.ts +0 -43
- package/src/bitcoin/utxo-selection.ts +0 -322
- package/src/bitcoin/utxo.ts +0 -113
- package/src/contexts/credentials-v1.json +0 -237
- package/src/contexts/credentials-v2-examples.json +0 -5
- package/src/contexts/credentials-v2.json +0 -340
- package/src/contexts/credentials.json +0 -237
- package/src/contexts/data-integrity-v2.json +0 -81
- package/src/contexts/dids.json +0 -58
- package/src/contexts/ed255192020.json +0 -93
- package/src/contexts/ordinals-plus.json +0 -23
- package/src/contexts/originals.json +0 -22
- package/src/core/OriginalsSDK.ts +0 -416
- package/src/crypto/Multikey.ts +0 -194
- package/src/crypto/Signer.ts +0 -254
- package/src/crypto/noble-init.ts +0 -121
- package/src/did/BtcoDidResolver.ts +0 -227
- package/src/did/DIDManager.ts +0 -694
- package/src/did/Ed25519Verifier.ts +0 -68
- package/src/did/KeyManager.ts +0 -236
- package/src/did/WebVHManager.ts +0 -498
- package/src/did/createBtcoDidDocument.ts +0 -59
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
- package/src/events/EventEmitter.ts +0 -222
- package/src/events/index.ts +0 -19
- package/src/events/types.ts +0 -331
- package/src/examples/basic-usage.ts +0 -78
- package/src/examples/create-module-original.ts +0 -435
- package/src/examples/full-lifecycle-flow.ts +0 -514
- package/src/examples/run.ts +0 -60
- package/src/index.ts +0 -150
- package/src/kinds/KindRegistry.ts +0 -290
- package/src/kinds/index.ts +0 -74
- package/src/kinds/types.ts +0 -470
- package/src/kinds/validators/AgentValidator.ts +0 -257
- package/src/kinds/validators/AppValidator.ts +0 -211
- package/src/kinds/validators/DatasetValidator.ts +0 -242
- package/src/kinds/validators/DocumentValidator.ts +0 -311
- package/src/kinds/validators/MediaValidator.ts +0 -269
- package/src/kinds/validators/ModuleValidator.ts +0 -225
- package/src/kinds/validators/base.ts +0 -276
- package/src/kinds/validators/index.ts +0 -12
- package/src/lifecycle/BatchOperations.ts +0 -373
- package/src/lifecycle/LifecycleManager.ts +0 -2126
- package/src/lifecycle/OriginalsAsset.ts +0 -524
- package/src/lifecycle/ProvenanceQuery.ts +0 -280
- package/src/lifecycle/ResourceVersioning.ts +0 -163
- package/src/migration/MigrationManager.ts +0 -527
- package/src/migration/audit/AuditLogger.ts +0 -176
- package/src/migration/checkpoint/CheckpointManager.ts +0 -112
- package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
- package/src/migration/index.ts +0 -33
- package/src/migration/operations/BaseMigration.ts +0 -126
- package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
- package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
- package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
- package/src/migration/rollback/RollbackManager.ts +0 -170
- package/src/migration/state/StateMachine.ts +0 -92
- package/src/migration/state/StateTracker.ts +0 -156
- package/src/migration/types.ts +0 -344
- package/src/migration/validation/BitcoinValidator.ts +0 -107
- package/src/migration/validation/CredentialValidator.ts +0 -62
- package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
- package/src/migration/validation/LifecycleValidator.ts +0 -64
- package/src/migration/validation/StorageValidator.ts +0 -79
- package/src/migration/validation/ValidationPipeline.ts +0 -213
- package/src/resources/ResourceManager.ts +0 -655
- package/src/resources/index.ts +0 -21
- package/src/resources/types.ts +0 -202
- package/src/storage/LocalStorageAdapter.ts +0 -61
- package/src/storage/MemoryStorageAdapter.ts +0 -29
- package/src/storage/StorageAdapter.ts +0 -25
- package/src/storage/index.ts +0 -3
- package/src/types/bitcoin.ts +0 -98
- package/src/types/common.ts +0 -92
- package/src/types/credentials.ts +0 -88
- package/src/types/did.ts +0 -31
- package/src/types/external-shims.d.ts +0 -53
- package/src/types/index.ts +0 -7
- package/src/types/network.ts +0 -175
- package/src/utils/EventLogger.ts +0 -298
- package/src/utils/Logger.ts +0 -322
- package/src/utils/MetricsCollector.ts +0 -358
- package/src/utils/bitcoin-address.ts +0 -130
- package/src/utils/cbor.ts +0 -12
- package/src/utils/encoding.ts +0 -127
- package/src/utils/hash.ts +0 -6
- package/src/utils/retry.ts +0 -46
- package/src/utils/satoshi-validation.ts +0 -196
- package/src/utils/serialization.ts +0 -96
- package/src/utils/telemetry.ts +0 -40
- package/src/utils/validation.ts +0 -119
- package/src/vc/CredentialManager.ts +0 -918
- package/src/vc/Issuer.ts +0 -100
- package/src/vc/Verifier.ts +0 -47
- package/src/vc/cryptosuites/bbs.ts +0 -253
- package/src/vc/cryptosuites/bbsSimple.ts +0 -21
- package/src/vc/cryptosuites/eddsa.ts +0 -99
- package/src/vc/documentLoader.ts +0 -67
- package/src/vc/proofs/data-integrity.ts +0 -33
- package/src/vc/utils/jsonld.ts +0 -18
- package/tests/__mocks__/bbs-signatures.js +0 -17
- package/tests/__mocks__/mf-base58.js +0 -24
- package/tests/fixtures/did-documents.ts +0 -247
- package/tests/index.test.ts +0 -21
- package/tests/integration/BatchOperations.test.ts +0 -531
- package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
- package/tests/integration/CredentialManager.test.ts +0 -42
- package/tests/integration/DIDManager.test.ts +0 -41
- package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
- package/tests/integration/Events.test.ts +0 -435
- package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
- package/tests/integration/LifecycleManager.test.ts +0 -21
- package/tests/integration/MultikeyFlow.test.ts +0 -52
- package/tests/integration/TelemetryIntegration.test.ts +0 -395
- package/tests/integration/WebVhPublish.test.ts +0 -48
- package/tests/integration/createTypedOriginal.test.ts +0 -379
- package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
- package/tests/manual/test-commit-creation.ts +0 -323
- package/tests/mocks/MockKeyStore.ts +0 -38
- package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
- package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
- package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
- package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
- package/tests/mocks/adapters/index.ts +0 -6
- package/tests/performance/BatchOperations.perf.test.ts +0 -403
- package/tests/performance/logging.perf.test.ts +0 -336
- package/tests/sdk.test.ts +0 -43
- package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
- package/tests/setup.bun.ts +0 -69
- package/tests/setup.jest.ts +0 -23
- package/tests/stress/batch-operations-stress.test.ts +0 -571
- package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
- package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
- package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
- package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
- package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
- package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
- package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
- package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
- package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
- package/tests/unit/bitcoin/transfer.test.ts +0 -31
- package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
- package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
- package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
- package/tests/unit/core/OriginalsSDK.test.ts +0 -152
- package/tests/unit/crypto/Multikey.test.ts +0 -206
- package/tests/unit/crypto/Signer.test.ts +0 -408
- package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
- package/tests/unit/did/DIDManager.more.test.ts +0 -43
- package/tests/unit/did/DIDManager.test.ts +0 -185
- package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
- package/tests/unit/did/KeyManager.test.ts +0 -452
- package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
- package/tests/unit/did/WebVHManager.test.ts +0 -435
- package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
- package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
- package/tests/unit/events/EventEmitter.test.ts +0 -407
- package/tests/unit/kinds/KindRegistry.test.ts +0 -329
- package/tests/unit/kinds/types.test.ts +0 -409
- package/tests/unit/kinds/validators.test.ts +0 -651
- package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
- package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
- package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
- package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
- package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
- package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
- package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
- package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
- package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
- package/tests/unit/resources/ResourceManager.test.ts +0 -740
- package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
- package/tests/unit/types/network.test.ts +0 -255
- package/tests/unit/utils/EventIntegration.test.ts +0 -384
- package/tests/unit/utils/Logger.test.ts +0 -473
- package/tests/unit/utils/MetricsCollector.test.ts +0 -358
- package/tests/unit/utils/bitcoin-address.test.ts +0 -250
- package/tests/unit/utils/cbor.test.ts +0 -35
- package/tests/unit/utils/encoding.test.ts +0 -318
- package/tests/unit/utils/hash.test.ts +0 -12
- package/tests/unit/utils/retry.test.ts +0 -100
- package/tests/unit/utils/satoshi-validation.test.ts +0 -354
- package/tests/unit/utils/serialization.test.ts +0 -124
- package/tests/unit/utils/telemetry.test.ts +0 -52
- package/tests/unit/utils/validation.test.ts +0 -141
- package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
- package/tests/unit/vc/CredentialManager.test.ts +0 -487
- package/tests/unit/vc/Issuer.test.ts +0 -107
- package/tests/unit/vc/Verifier.test.ts +0 -525
- package/tests/unit/vc/bbs.test.ts +0 -282
- package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
- package/tests/unit/vc/documentLoader.test.ts +0 -121
- package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
- package/tsconfig.json +0 -31
- package/tsconfig.test.json +0 -15
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect, spyOn } from 'bun:test';
|
|
2
|
-
import { OriginalsAsset } from '../../../src/lifecycle/OriginalsAsset';
|
|
3
|
-
import { AssetResource, DIDDocument, VerifiableCredential, LayerType } from '../../../src/types';
|
|
4
|
-
|
|
5
|
-
function buildDid(id: string): DIDDocument {
|
|
6
|
-
return {
|
|
7
|
-
'@context': ['https://www.w3.org/ns/did/v1'],
|
|
8
|
-
id
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const emptyCreds: VerifiableCredential[] = [];
|
|
13
|
-
const resources: AssetResource[] = [
|
|
14
|
-
{
|
|
15
|
-
id: 'res1',
|
|
16
|
-
type: 'text',
|
|
17
|
-
content: 'hello',
|
|
18
|
-
contentType: 'text/plain',
|
|
19
|
-
hash: '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'.slice(0, 64) // sha256('hello')
|
|
20
|
-
}
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
describe('OriginalsAsset', () => {
|
|
24
|
-
test('determines current layer from DID id', () => {
|
|
25
|
-
expect(new OriginalsAsset(resources, buildDid('did:peer:xyz'), emptyCreds).currentLayer).toBe('did:peer');
|
|
26
|
-
expect(new OriginalsAsset(resources, buildDid('did:webvh:example.com:xyz'), emptyCreds).currentLayer).toBe('did:webvh');
|
|
27
|
-
expect(new OriginalsAsset(resources, buildDid('did:btco:123'), emptyCreds).currentLayer).toBe('did:btco');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('rejects invalid migration path', async () => {
|
|
31
|
-
const asset = new OriginalsAsset(resources, buildDid('did:webvh:example.com:xyz'), emptyCreds);
|
|
32
|
-
await expect(asset.migrate('did:peer' as LayerType)).rejects.toThrow('Invalid migration');
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
test('migrates along valid path and updates layer (expected to fail until implemented)', async () => {
|
|
36
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), emptyCreds);
|
|
37
|
-
await asset.migrate('did:webvh');
|
|
38
|
-
expect(asset.currentLayer).toBe('did:webvh');
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
test('returns provenance chain (expected to fail until implemented)', async () => {
|
|
42
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), emptyCreds);
|
|
43
|
-
const prov = asset.getProvenance();
|
|
44
|
-
expect(prov.createdAt).toBeDefined();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
test('verifies asset integrity (inline content hash match)', async () => {
|
|
48
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), emptyCreds);
|
|
49
|
-
await expect(asset.verify()).resolves.toBe(true);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('verify returns false on invalid DID Document', async () => {
|
|
53
|
-
const badDid: any = { '@context': ['https://www.w3.org/ns/did/v1'], id: 'did:peer:abc', controller: ['not-a-did'] };
|
|
54
|
-
const asset = new OriginalsAsset(resources, badDid, emptyCreds as any);
|
|
55
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test('verify uses injected fetch if provided for URL resources', async () => {
|
|
59
|
-
const resWithUrl: AssetResource = {
|
|
60
|
-
id: 'r2',
|
|
61
|
-
type: 'text',
|
|
62
|
-
url: 'https://example.com/x',
|
|
63
|
-
contentType: 'text/plain',
|
|
64
|
-
hash: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' // sha256 of empty
|
|
65
|
-
};
|
|
66
|
-
const asset = new OriginalsAsset([resWithUrl], buildDid('did:peer:abc'), emptyCreds);
|
|
67
|
-
const mockFetch = async () => ({ arrayBuffer: async () => new ArrayBuffer(0) }) as any;
|
|
68
|
-
await expect(asset.verify({ fetch: mockFetch })).resolves.toBe(true);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test('verify validates attached credentials structure and returns false on bad', async () => {
|
|
72
|
-
const badVc: any = { '@context': ['https://example.com'], type: ['VerifiableCredential'], issuer: 'did:peer:x', issuanceDate: new Date().toISOString(), credentialSubject: {} };
|
|
73
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), [badVc]);
|
|
74
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
test('verify with credentialManager performs cryptographic verification', async () => {
|
|
78
|
-
const goodVc: any = {
|
|
79
|
-
'@context': ['https://www.w3.org/2018/credentials/v1'],
|
|
80
|
-
type: ['VerifiableCredential'],
|
|
81
|
-
issuer: 'did:peer:issuer',
|
|
82
|
-
issuanceDate: new Date().toISOString(),
|
|
83
|
-
credentialSubject: { id: 'did:peer:xyz' },
|
|
84
|
-
proof: { type: 'DataIntegrityProof', created: new Date().toISOString(), verificationMethod: 'did:peer:issuer#key', proofPurpose: 'assertionMethod', proofValue: 'zabc' }
|
|
85
|
-
};
|
|
86
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), [goodVc]);
|
|
87
|
-
const { CredentialManager } = await import('../../../src/vc/CredentialManager');
|
|
88
|
-
const { DIDManager } = await import('../../../src/did/DIDManager');
|
|
89
|
-
const didManager = new DIDManager({} as any);
|
|
90
|
-
const cm = new CredentialManager({ defaultKeyType: 'ES256K', network: 'regtest' } as any, didManager);
|
|
91
|
-
const spy = spyOn(cm, 'verifyCredential').mockResolvedValue(true);
|
|
92
|
-
await expect(asset.verify({ credentialManager: cm, didManager })).resolves.toBe(true);
|
|
93
|
-
spy.mockRestore();
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test('verify returns false when credentialManager verification fails', async () => {
|
|
97
|
-
const goodVc: any = {
|
|
98
|
-
'@context': ['https://www.w3.org/2018/credentials/v1'],
|
|
99
|
-
type: ['VerifiableCredential'],
|
|
100
|
-
issuer: 'did:peer:issuer',
|
|
101
|
-
issuanceDate: new Date().toISOString(),
|
|
102
|
-
credentialSubject: { id: 'did:peer:xyz' },
|
|
103
|
-
proof: { type: 'DataIntegrityProof', created: new Date().toISOString(), verificationMethod: 'did:peer:issuer#key', proofPurpose: 'assertionMethod', proofValue: 'zabc' }
|
|
104
|
-
};
|
|
105
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:xyz'), [goodVc]);
|
|
106
|
-
const { CredentialManager } = await import('../../../src/vc/CredentialManager');
|
|
107
|
-
const { DIDManager } = await import('../../../src/did/DIDManager');
|
|
108
|
-
const didManager = new DIDManager({} as any);
|
|
109
|
-
const cm = new CredentialManager({ defaultKeyType: 'ES256K', network: 'regtest' } as any, didManager);
|
|
110
|
-
const spy = spyOn(cm, 'verifyCredential').mockResolvedValue(false);
|
|
111
|
-
await expect(asset.verify({ credentialManager: cm, didManager })).resolves.toBe(false);
|
|
112
|
-
spy.mockRestore();
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
test('verify does not fail if fetch throws when URL present', async () => {
|
|
116
|
-
const resWithUrl: AssetResource = {
|
|
117
|
-
id: 'r3', type: 'text', url: 'https://example.com/missing', contentType: 'text/plain', hash: resources[0].hash
|
|
118
|
-
};
|
|
119
|
-
const asset = new OriginalsAsset([resWithUrl], buildDid('did:peer:abc'), emptyCreds);
|
|
120
|
-
const failingFetch = async () => { throw new Error('network'); };
|
|
121
|
-
await expect(asset.verify({ fetch: failingFetch as any })).resolves.toBe(true);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
test('verify returns false when resource has invalid id type', async () => {
|
|
125
|
-
const badResource: any = { id: 123, type: 'text', contentType: 'text/plain', hash: 'abc' };
|
|
126
|
-
const asset = new OriginalsAsset([badResource], buildDid('did:peer:abc'), emptyCreds);
|
|
127
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
test('verify returns false when resource hash has non-hex characters', async () => {
|
|
131
|
-
const badResource: AssetResource = { id: 'r', type: 'text', contentType: 'text/plain', hash: 'zzzz' };
|
|
132
|
-
const asset = new OriginalsAsset([badResource], buildDid('did:peer:abc'), emptyCreds);
|
|
133
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
test('verify returns false when inline content hash mismatch', async () => {
|
|
137
|
-
const badResource: AssetResource = {
|
|
138
|
-
id: 'r',
|
|
139
|
-
type: 'text',
|
|
140
|
-
content: 'hello',
|
|
141
|
-
contentType: 'text/plain',
|
|
142
|
-
hash: 'wrong0000000000000000000000000000000000000000000000000000000000'
|
|
143
|
-
};
|
|
144
|
-
const asset = new OriginalsAsset([badResource], buildDid('did:peer:abc'), emptyCreds);
|
|
145
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
test('verify returns false when fetched URL content hash mismatch', async () => {
|
|
149
|
-
const resWithUrl: AssetResource = {
|
|
150
|
-
id: 'r4',
|
|
151
|
-
type: 'text',
|
|
152
|
-
url: 'https://example.com/data',
|
|
153
|
-
contentType: 'text/plain',
|
|
154
|
-
hash: 'wrong0000000000000000000000000000000000000000000000000000000000'
|
|
155
|
-
};
|
|
156
|
-
const asset = new OriginalsAsset([resWithUrl], buildDid('did:peer:abc'), emptyCreds);
|
|
157
|
-
const mockFetch = async () => ({ arrayBuffer: async () => Buffer.from('test').buffer }) as any;
|
|
158
|
-
await expect(asset.verify({ fetch: mockFetch })).resolves.toBe(false);
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
test('verify catches and returns false on unexpected error', async () => {
|
|
162
|
-
const asset = new OriginalsAsset(resources, buildDid('did:peer:abc'), emptyCreds);
|
|
163
|
-
// Force an error by mocking validateDIDDocument to throw
|
|
164
|
-
const validateDIDDocument = require('../../../src/utils/validation').validateDIDDocument;
|
|
165
|
-
spyOn(require('../../../src/utils/validation'), 'validateDIDDocument').mockImplementationOnce(() => {
|
|
166
|
-
throw new Error('unexpected');
|
|
167
|
-
});
|
|
168
|
-
await expect(asset.verify()).resolves.toBe(false);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
test('constructor throws on unknown DID method (coverage for error path)', () => {
|
|
172
|
-
expect(() => new OriginalsAsset(resources, buildDid('did:web:example.com'), emptyCreds)).toThrow('Unknown DID method');
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
|