@enbox/dwn-sdk-js 0.4.12 → 0.4.14
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/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/src/core/dwn-error.js +8 -1
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/encryption-control.js +38 -2
- package/dist/esm/src/core/encryption-control.js.map +1 -1
- package/dist/esm/src/core/message-reply.js +14 -1
- package/dist/esm/src/core/message-reply.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-action.js +130 -107
- package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +10 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/event-stream/broadcast-channel-wake-publisher.js +63 -0
- package/dist/esm/src/event-stream/broadcast-channel-wake-publisher.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +2 -0
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +73 -46
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +132 -73
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +3 -5
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/records-write-query.js +2 -3
- package/dist/esm/src/interfaces/records-write-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +50 -35
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js +1 -1
- package/dist/esm/src/store/blockstore-mock.js +3 -0
- package/dist/esm/src/store/blockstore-mock.js.map +1 -1
- package/dist/esm/src/store/index-level-compound.js +34 -18
- package/dist/esm/src/store/index-level-compound.js.map +1 -1
- package/dist/esm/src/store/index-level.js +5 -5
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +2 -2
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +26 -17
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/message-types.js.map +1 -1
- package/dist/esm/src/utils/filter.js +4 -8
- package/dist/esm/src/utils/filter.js.map +1 -1
- package/dist/esm/src/utils/messages.js +46 -28
- package/dist/esm/src/utils/messages.js.map +1 -1
- package/dist/esm/src/utils/protocols.js +2 -2
- package/dist/esm/src/utils/protocols.js.map +1 -1
- package/dist/esm/src/utils/records.js +49 -33
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/secp256r1.js +1 -1
- package/dist/esm/src/utils/secp256r1.js.map +1 -1
- package/dist/esm/src/utils/url.js +1 -1
- package/dist/esm/src/utils/url.js.map +1 -1
- package/dist/esm/tests/broadcast-channel-wake-publisher.spec.js +74 -0
- package/dist/esm/tests/broadcast-channel-wake-publisher.spec.js.map +1 -0
- package/dist/esm/tests/core/message-reply.spec.js +27 -0
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
- package/dist/esm/tests/core/process-message-parity.spec.js +3 -0
- package/dist/esm/tests/core/process-message-parity.spec.js.map +1 -1
- package/dist/esm/tests/durable-event-log.spec.js +37 -0
- package/dist/esm/tests/durable-event-log.spec.js.map +1 -1
- package/dist/esm/tests/features/records-squash.spec.js +5 -0
- package/dist/esm/tests/features/records-squash.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +14 -28
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +441 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +1 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/test-suite.js +8 -0
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +14 -1
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/encryption-control.d.ts +16 -0
- package/dist/types/src/core/encryption-control.d.ts.map +1 -1
- package/dist/types/src/core/message-reply.d.ts +5 -0
- package/dist/types/src/core/message-reply.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts +6 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/event-stream/broadcast-channel-wake-publisher.d.ts +35 -0
- package/dist/types/src/event-stream/broadcast-channel-wake-publisher.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts +18 -0
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +28 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +12 -0
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/store/blockstore-mock.d.ts.map +1 -1
- package/dist/types/src/store/index-level-compound.d.ts +4 -1
- package/dist/types/src/store/index-level-compound.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts +6 -0
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/jose-types.d.ts +3 -2
- package/dist/types/src/types/jose-types.d.ts.map +1 -1
- package/dist/types/src/types/message-types.d.ts +13 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/subscriptions.d.ts +6 -1
- package/dist/types/src/types/subscriptions.d.ts.map +1 -1
- package/dist/types/src/utils/filter.d.ts.map +1 -1
- package/dist/types/src/utils/messages.d.ts +14 -0
- package/dist/types/src/utils/messages.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +10 -0
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/tests/broadcast-channel-wake-publisher.spec.d.ts +2 -0
- package/dist/types/tests/broadcast-channel-wake-publisher.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/dwn-error.ts +15 -1
- package/src/core/encryption-control.ts +66 -2
- package/src/core/message-reply.ts +18 -2
- package/src/core/protocol-authorization-action.ts +167 -117
- package/src/core/protocol-authorization.ts +13 -0
- package/src/event-stream/broadcast-channel-wake-publisher.ts +71 -0
- package/src/handlers/protocols-configure.ts +2 -0
- package/src/handlers/records-subscribe.ts +98 -47
- package/src/handlers/records-write.ts +177 -91
- package/src/index.ts +2 -0
- package/src/interfaces/protocols-configure.ts +6 -8
- package/src/interfaces/records-write-query.ts +2 -3
- package/src/interfaces/records-write.ts +62 -44
- package/src/jose/jws/general/verifier.ts +1 -1
- package/src/store/blockstore-mock.ts +3 -0
- package/src/store/index-level-compound.ts +55 -24
- package/src/store/index-level.ts +6 -4
- package/src/store/message-store-level.ts +2 -2
- package/src/store/storage-controller.ts +27 -16
- package/src/types/jose-types.ts +3 -2
- package/src/types/message-types.ts +16 -0
- package/src/types/subscriptions.ts +6 -1
- package/src/utils/filter.ts +4 -8
- package/src/utils/messages.ts +53 -30
- package/src/utils/protocols.ts +2 -2
- package/src/utils/records.ts +76 -51
- package/src/utils/secp256r1.ts +1 -1
- package/src/utils/url.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-query.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-query.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages-query.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-query.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import dexProtocolDefinition from '../vectors/protocol-definitions/dex.json' with { type: 'json' };
|
|
2
2
|
import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
|
|
3
3
|
import sinon from 'sinon';
|
|
4
|
+
import { EncryptionControlDeliveryRecipientAuthority } from '../../src/types/encryption-types.js';
|
|
4
5
|
import { GeneralJwsBuilder } from '../../src/jose/jws/general/builder.js';
|
|
5
6
|
import { lexicographicalCompare } from '../../src/utils/string.js';
|
|
6
7
|
import { Message } from '../../src/core/message.js';
|
|
@@ -12,7 +13,8 @@ import { TestStores } from '../test-stores.js';
|
|
|
12
13
|
import { TestStubGenerator } from '../utils/test-stub-generator.js';
|
|
13
14
|
import { Time } from '../../src/utils/time.js';
|
|
14
15
|
import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
|
|
15
|
-
import {
|
|
16
|
+
import { createAudienceControlWrite, createDeliveryControlWrite, installEncryptedProtocol, processControlWrite } from '../utils/encryption-control-test-utils.js';
|
|
17
|
+
import { DataStream, Dwn, DwnErrorCode, DwnInterfaceName, DwnMethodName, Encoder, Jws, PermissionGrant, PermissionsProtocol, Protocols, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
|
|
16
18
|
import { DidKey, UniversalResolver } from '@enbox/dids';
|
|
17
19
|
export function testProtocolsConfigureHandler() {
|
|
18
20
|
describe('ProtocolsConfigureHandler.handle()', () => {
|
|
@@ -594,6 +596,444 @@ export function testProtocolsConfigureHandler() {
|
|
|
594
596
|
}]);
|
|
595
597
|
expect(commentMessages.messages.length).toBeGreaterThan(0);
|
|
596
598
|
});
|
|
599
|
+
it('should preserve encryption control records on a same-protocol config upgrade', async () => {
|
|
600
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
601
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
602
|
+
const protocol = 'http://config-validity.example/control-record-upgrade';
|
|
603
|
+
const initialDefinition = {
|
|
604
|
+
protocol,
|
|
605
|
+
published: true,
|
|
606
|
+
types: {
|
|
607
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
608
|
+
post: { schema: 'post', dataFormats: ['application/json'] }
|
|
609
|
+
},
|
|
610
|
+
structure: {
|
|
611
|
+
member: { $role: true },
|
|
612
|
+
post: {
|
|
613
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
};
|
|
617
|
+
const encryptedDefinition = await installEncryptedProtocol(dwn, alice, initialDefinition);
|
|
618
|
+
const roleRuleSet = encryptedDefinition.structure.member;
|
|
619
|
+
// provision the role-audience key and its delivery to bob, the reserved-path records
|
|
620
|
+
// the config-history sweep must never judge against the app definition's structure
|
|
621
|
+
const audience = await createAudienceControlWrite({
|
|
622
|
+
author: alice,
|
|
623
|
+
protocol,
|
|
624
|
+
rolePath: 'member',
|
|
625
|
+
roleRuleSet,
|
|
626
|
+
});
|
|
627
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
628
|
+
const roleRecord = await TestDataGenerator.generateRecordsWrite({
|
|
629
|
+
author: alice,
|
|
630
|
+
data: Encoder.stringToBytes('bob is a member'),
|
|
631
|
+
dataFormat: 'application/json',
|
|
632
|
+
protocol,
|
|
633
|
+
protocolPath: 'member',
|
|
634
|
+
recipient: bob.did,
|
|
635
|
+
schema: 'http://member-schema',
|
|
636
|
+
});
|
|
637
|
+
expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
|
|
638
|
+
const delivery = await createDeliveryControlWrite({
|
|
639
|
+
author: alice,
|
|
640
|
+
keyId: audience.keyId,
|
|
641
|
+
protocol,
|
|
642
|
+
recipient: bob.did,
|
|
643
|
+
recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
|
|
644
|
+
rolePath: 'member',
|
|
645
|
+
roleRuleSet,
|
|
646
|
+
});
|
|
647
|
+
await processControlWrite(dwn, alice.did, delivery);
|
|
648
|
+
// a routine policy tightening on the same protocol URI
|
|
649
|
+
const upgradedDefinition = {
|
|
650
|
+
...initialDefinition,
|
|
651
|
+
structure: {
|
|
652
|
+
member: { $role: true },
|
|
653
|
+
post: {
|
|
654
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Read] }]
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
};
|
|
658
|
+
await installEncryptedProtocol(dwn, alice, upgradedDefinition);
|
|
659
|
+
const audienceMessages = await messageStore.query(alice.did, [{
|
|
660
|
+
interface: DwnInterfaceName.Records,
|
|
661
|
+
recordId: audience.recordsWrite.message.recordId
|
|
662
|
+
}]);
|
|
663
|
+
expect(audienceMessages.messages.length).toBeGreaterThan(0);
|
|
664
|
+
const deliveryMessages = await messageStore.query(alice.did, [{
|
|
665
|
+
interface: DwnInterfaceName.Records,
|
|
666
|
+
recordId: delivery.recordsWrite.message.recordId
|
|
667
|
+
}]);
|
|
668
|
+
expect(deliveryMessages.messages.length).toBeGreaterThan(0);
|
|
669
|
+
});
|
|
670
|
+
it('should preserve encryption control records while purging records invalidated by a newly learned config', async () => {
|
|
671
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
672
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
673
|
+
const protocol = 'http://config-validity.example/control-record-reconcile';
|
|
674
|
+
const openDefinition = {
|
|
675
|
+
protocol,
|
|
676
|
+
published: true,
|
|
677
|
+
types: {
|
|
678
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
679
|
+
post: { schema: 'post', dataFormats: ['application/json'] }
|
|
680
|
+
},
|
|
681
|
+
structure: {
|
|
682
|
+
member: { $role: true },
|
|
683
|
+
post: {
|
|
684
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
};
|
|
688
|
+
const stricterDefinition = {
|
|
689
|
+
...openDefinition,
|
|
690
|
+
structure: {
|
|
691
|
+
member: { $role: true },
|
|
692
|
+
post: {}
|
|
693
|
+
}
|
|
694
|
+
};
|
|
695
|
+
const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
|
|
696
|
+
const encryptedOpenDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(openDefinition, keyDeriver);
|
|
697
|
+
const openConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
698
|
+
author: alice,
|
|
699
|
+
protocolDefinition: encryptedOpenDefinition,
|
|
700
|
+
messageTimestamp: '2025-01-01T00:00:00.000000Z'
|
|
701
|
+
});
|
|
702
|
+
expect((await dwn.processMessage(alice.did, openConfig.message)).status.code).toBe(202);
|
|
703
|
+
const roleRuleSet = encryptedOpenDefinition.structure.member;
|
|
704
|
+
const audience = await createAudienceControlWrite({
|
|
705
|
+
author: alice,
|
|
706
|
+
protocol,
|
|
707
|
+
rolePath: 'member',
|
|
708
|
+
roleRuleSet,
|
|
709
|
+
});
|
|
710
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
711
|
+
const roleRecord = await TestDataGenerator.generateRecordsWrite({
|
|
712
|
+
author: alice,
|
|
713
|
+
data: Encoder.stringToBytes('bob is a member'),
|
|
714
|
+
dataFormat: 'application/json',
|
|
715
|
+
protocol,
|
|
716
|
+
protocolPath: 'member',
|
|
717
|
+
recipient: bob.did,
|
|
718
|
+
schema: 'http://member-schema',
|
|
719
|
+
});
|
|
720
|
+
expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
|
|
721
|
+
const delivery = await createDeliveryControlWrite({
|
|
722
|
+
author: alice,
|
|
723
|
+
keyId: audience.keyId,
|
|
724
|
+
protocol,
|
|
725
|
+
recipient: bob.did,
|
|
726
|
+
recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
|
|
727
|
+
rolePath: 'member',
|
|
728
|
+
roleRuleSet,
|
|
729
|
+
});
|
|
730
|
+
await processControlWrite(dwn, alice.did, delivery);
|
|
731
|
+
// valid under the open config known at admission time; invalidated once the
|
|
732
|
+
// back-dated stricter config is learned
|
|
733
|
+
const invalidBobRecord = await TestDataGenerator.generateRecordsWrite({
|
|
734
|
+
author: bob,
|
|
735
|
+
protocol,
|
|
736
|
+
protocolPath: 'post',
|
|
737
|
+
schema: 'post',
|
|
738
|
+
dataFormat: 'application/json',
|
|
739
|
+
dateCreated: '2025-01-03T00:00:00.000000Z',
|
|
740
|
+
messageTimestamp: '2025-01-03T00:00:00.000000Z'
|
|
741
|
+
});
|
|
742
|
+
expect((await dwn.processMessage(alice.did, invalidBobRecord.message, { dataStream: invalidBobRecord.dataStream })).status.code).toBe(202);
|
|
743
|
+
const encryptedStricterDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(stricterDefinition, keyDeriver);
|
|
744
|
+
const stricterConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
745
|
+
author: alice,
|
|
746
|
+
protocolDefinition: encryptedStricterDefinition,
|
|
747
|
+
messageTimestamp: '2025-01-02T00:00:00.000000Z'
|
|
748
|
+
});
|
|
749
|
+
expect((await dwn.processMessage(alice.did, stricterConfig.message)).status.code).toBe(202);
|
|
750
|
+
const invalidBobMessages = await messageStore.query(alice.did, [{
|
|
751
|
+
interface: DwnInterfaceName.Records,
|
|
752
|
+
recordId: invalidBobRecord.message.recordId
|
|
753
|
+
}]);
|
|
754
|
+
expect(invalidBobMessages.messages).toHaveLength(0);
|
|
755
|
+
const audienceMessages = await messageStore.query(alice.did, [{
|
|
756
|
+
interface: DwnInterfaceName.Records,
|
|
757
|
+
recordId: audience.recordsWrite.message.recordId
|
|
758
|
+
}]);
|
|
759
|
+
expect(audienceMessages.messages.length).toBeGreaterThan(0);
|
|
760
|
+
const deliveryMessages = await messageStore.query(alice.did, [{
|
|
761
|
+
interface: DwnInterfaceName.Records,
|
|
762
|
+
recordId: delivery.recordsWrite.message.recordId
|
|
763
|
+
}]);
|
|
764
|
+
expect(deliveryMessages.messages.length).toBeGreaterThan(0);
|
|
765
|
+
});
|
|
766
|
+
it('should purge encryption control records whose role path is removed by a config upgrade', async () => {
|
|
767
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
768
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
769
|
+
const protocol = 'http://config-validity.example/control-record-role-removed';
|
|
770
|
+
const initialDefinition = {
|
|
771
|
+
protocol,
|
|
772
|
+
published: true,
|
|
773
|
+
types: {
|
|
774
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
775
|
+
post: { schema: 'post', dataFormats: ['application/json'] }
|
|
776
|
+
},
|
|
777
|
+
structure: {
|
|
778
|
+
member: { $role: true },
|
|
779
|
+
post: {
|
|
780
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
};
|
|
784
|
+
const encryptedDefinition = await installEncryptedProtocol(dwn, alice, initialDefinition);
|
|
785
|
+
const roleRuleSet = encryptedDefinition.structure.member;
|
|
786
|
+
const audience = await createAudienceControlWrite({
|
|
787
|
+
author: alice,
|
|
788
|
+
protocol,
|
|
789
|
+
rolePath: 'member',
|
|
790
|
+
roleRuleSet,
|
|
791
|
+
});
|
|
792
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
793
|
+
const roleRecord = await TestDataGenerator.generateRecordsWrite({
|
|
794
|
+
author: alice,
|
|
795
|
+
data: Encoder.stringToBytes('bob is a member'),
|
|
796
|
+
dataFormat: 'application/json',
|
|
797
|
+
protocol,
|
|
798
|
+
protocolPath: 'member',
|
|
799
|
+
recipient: bob.did,
|
|
800
|
+
schema: 'http://member-schema',
|
|
801
|
+
});
|
|
802
|
+
expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
|
|
803
|
+
const delivery = await createDeliveryControlWrite({
|
|
804
|
+
author: alice,
|
|
805
|
+
keyId: audience.keyId,
|
|
806
|
+
protocol,
|
|
807
|
+
recipient: bob.did,
|
|
808
|
+
recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
|
|
809
|
+
rolePath: 'member',
|
|
810
|
+
roleRuleSet,
|
|
811
|
+
});
|
|
812
|
+
await processControlWrite(dwn, alice.did, delivery);
|
|
813
|
+
// the upgrade removes the `member` role entirely — the control records it anchored
|
|
814
|
+
// are stale key material with nothing left to provision
|
|
815
|
+
const roleRemovedDefinition = {
|
|
816
|
+
...initialDefinition,
|
|
817
|
+
structure: {
|
|
818
|
+
member: {},
|
|
819
|
+
post: {
|
|
820
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
};
|
|
824
|
+
await installEncryptedProtocol(dwn, alice, roleRemovedDefinition);
|
|
825
|
+
const audienceMessages = await messageStore.query(alice.did, [{
|
|
826
|
+
interface: DwnInterfaceName.Records,
|
|
827
|
+
recordId: audience.recordsWrite.message.recordId
|
|
828
|
+
}]);
|
|
829
|
+
expect(audienceMessages.messages).toHaveLength(0);
|
|
830
|
+
const deliveryMessages = await messageStore.query(alice.did, [{
|
|
831
|
+
interface: DwnInterfaceName.Records,
|
|
832
|
+
recordId: delivery.recordsWrite.message.recordId
|
|
833
|
+
}]);
|
|
834
|
+
expect(deliveryMessages.messages).toHaveLength(0);
|
|
835
|
+
});
|
|
836
|
+
it('should reject a control record invalid under newly learned governing history regardless of config arrival order', async () => {
|
|
837
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
838
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
839
|
+
const protocol = 'http://config-validity.example/control-record-history-order';
|
|
840
|
+
const roleDefinition = {
|
|
841
|
+
protocol,
|
|
842
|
+
published: true,
|
|
843
|
+
types: {
|
|
844
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
845
|
+
},
|
|
846
|
+
structure: {
|
|
847
|
+
member: {
|
|
848
|
+
$role: true,
|
|
849
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create] }],
|
|
850
|
+
},
|
|
851
|
+
},
|
|
852
|
+
};
|
|
853
|
+
const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
|
|
854
|
+
const encryptedRoleDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(roleDefinition, keyDeriver);
|
|
855
|
+
const encryptedMissingDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys({
|
|
856
|
+
...roleDefinition,
|
|
857
|
+
structure: { member: {} },
|
|
858
|
+
}, keyDeriver);
|
|
859
|
+
const config1 = await TestDataGenerator.generateProtocolsConfigure({
|
|
860
|
+
author: alice,
|
|
861
|
+
protocolDefinition: encryptedRoleDefinition,
|
|
862
|
+
messageTimestamp: '2025-01-01T00:00:00.000000Z',
|
|
863
|
+
});
|
|
864
|
+
const config2 = await TestDataGenerator.generateProtocolsConfigure({
|
|
865
|
+
author: alice,
|
|
866
|
+
protocolDefinition: encryptedMissingDefinition,
|
|
867
|
+
messageTimestamp: '2025-01-02T00:00:00.000000Z',
|
|
868
|
+
});
|
|
869
|
+
const config4 = await TestDataGenerator.generateProtocolsConfigure({
|
|
870
|
+
author: alice,
|
|
871
|
+
protocolDefinition: encryptedRoleDefinition,
|
|
872
|
+
messageTimestamp: '2025-01-04T00:00:00.000000Z',
|
|
873
|
+
});
|
|
874
|
+
const audience = await createAudienceControlWrite({
|
|
875
|
+
author: bob,
|
|
876
|
+
dateCreated: '2025-01-03T00:00:00.000000Z',
|
|
877
|
+
messageTimestamp: '2025-01-03T00:00:00.000000Z',
|
|
878
|
+
protocol,
|
|
879
|
+
rolePath: 'member',
|
|
880
|
+
roleRuleSet: encryptedRoleDefinition.structure.member,
|
|
881
|
+
});
|
|
882
|
+
for (const config of [config1, config4]) {
|
|
883
|
+
expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
|
|
884
|
+
}
|
|
885
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
886
|
+
expect((await dwn.processMessage(alice.did, config2.message)).status.code).toBe(202);
|
|
887
|
+
const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
|
|
888
|
+
expect(repaired.messages).toHaveLength(0);
|
|
889
|
+
await messageStore.clear();
|
|
890
|
+
await dataStore.clear();
|
|
891
|
+
await resumableTaskStore.clear();
|
|
892
|
+
for (const config of [config1, config2, config4]) {
|
|
893
|
+
expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
|
|
894
|
+
}
|
|
895
|
+
const rejected = await dwn.processMessage(alice.did, audience.recordsWrite.message, {
|
|
896
|
+
dataStream: DataStream.fromBytes(audience.dataBytes),
|
|
897
|
+
});
|
|
898
|
+
expect(rejected.status.code).toBe(400);
|
|
899
|
+
expect(rejected.status.detail).toContain(DwnErrorCode.EncryptionControlValidateAudienceRolePathInvalid);
|
|
900
|
+
});
|
|
901
|
+
it('should purge a control record disallowed by a newly learned governing create policy', async () => {
|
|
902
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
903
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
904
|
+
const protocol = 'http://config-validity.example/control-record-history-action';
|
|
905
|
+
const openDefinition = {
|
|
906
|
+
protocol,
|
|
907
|
+
published: true,
|
|
908
|
+
types: {
|
|
909
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
910
|
+
},
|
|
911
|
+
structure: {
|
|
912
|
+
member: {
|
|
913
|
+
$role: true,
|
|
914
|
+
$actions: [{ who: 'anyone', can: [ProtocolAction.Create] }],
|
|
915
|
+
},
|
|
916
|
+
},
|
|
917
|
+
};
|
|
918
|
+
const closedDefinition = {
|
|
919
|
+
...openDefinition,
|
|
920
|
+
structure: { member: { $role: true } },
|
|
921
|
+
};
|
|
922
|
+
const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
|
|
923
|
+
const encryptedOpenDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(openDefinition, keyDeriver);
|
|
924
|
+
const encryptedClosedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(closedDefinition, keyDeriver);
|
|
925
|
+
for (const [definition, messageTimestamp] of [
|
|
926
|
+
[encryptedOpenDefinition, '2025-02-01T00:00:00.000000Z'],
|
|
927
|
+
[encryptedOpenDefinition, '2025-02-04T00:00:00.000000Z'],
|
|
928
|
+
]) {
|
|
929
|
+
const config = await TestDataGenerator.generateProtocolsConfigure({
|
|
930
|
+
author: alice,
|
|
931
|
+
protocolDefinition: definition,
|
|
932
|
+
messageTimestamp,
|
|
933
|
+
});
|
|
934
|
+
expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
|
|
935
|
+
}
|
|
936
|
+
const audience = await createAudienceControlWrite({
|
|
937
|
+
author: bob,
|
|
938
|
+
dateCreated: '2025-02-03T00:00:00.000000Z',
|
|
939
|
+
messageTimestamp: '2025-02-03T00:00:00.000000Z',
|
|
940
|
+
protocol,
|
|
941
|
+
rolePath: 'member',
|
|
942
|
+
roleRuleSet: encryptedOpenDefinition.structure.member,
|
|
943
|
+
});
|
|
944
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
945
|
+
const closedConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
946
|
+
author: alice,
|
|
947
|
+
protocolDefinition: encryptedClosedDefinition,
|
|
948
|
+
messageTimestamp: '2025-02-02T00:00:00.000000Z',
|
|
949
|
+
});
|
|
950
|
+
expect((await dwn.processMessage(alice.did, closedConfig.message)).status.code).toBe(202);
|
|
951
|
+
const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
|
|
952
|
+
expect(repaired.messages).toHaveLength(0);
|
|
953
|
+
});
|
|
954
|
+
it('should purge an audience sealed to a key superseded by newly learned governing history', async () => {
|
|
955
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
956
|
+
const bob = await TestDataGenerator.generateDidKeyPersona();
|
|
957
|
+
const protocol = 'http://config-validity.example/control-record-history-key';
|
|
958
|
+
const definition = {
|
|
959
|
+
protocol,
|
|
960
|
+
published: true,
|
|
961
|
+
types: {
|
|
962
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
963
|
+
},
|
|
964
|
+
structure: {
|
|
965
|
+
member: { $role: true },
|
|
966
|
+
},
|
|
967
|
+
};
|
|
968
|
+
const aliceKeyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
|
|
969
|
+
const bobKeyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(bob.keyId, bob.encryptionKeyPair.privateJwk);
|
|
970
|
+
const aliceKeyDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, aliceKeyDeriver);
|
|
971
|
+
const bobKeyDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, bobKeyDeriver);
|
|
972
|
+
for (const messageTimestamp of ['2025-03-01T00:00:00.000000Z', '2025-03-04T00:00:00.000000Z']) {
|
|
973
|
+
const config = await TestDataGenerator.generateProtocolsConfigure({
|
|
974
|
+
author: alice,
|
|
975
|
+
protocolDefinition: aliceKeyDefinition,
|
|
976
|
+
messageTimestamp,
|
|
977
|
+
});
|
|
978
|
+
expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
|
|
979
|
+
}
|
|
980
|
+
const audience = await createAudienceControlWrite({
|
|
981
|
+
author: alice,
|
|
982
|
+
dateCreated: '2025-03-03T00:00:00.000000Z',
|
|
983
|
+
messageTimestamp: '2025-03-03T00:00:00.000000Z',
|
|
984
|
+
protocol,
|
|
985
|
+
rolePath: 'member',
|
|
986
|
+
roleRuleSet: aliceKeyDefinition.structure.member,
|
|
987
|
+
});
|
|
988
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
989
|
+
const governingConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
990
|
+
author: alice,
|
|
991
|
+
protocolDefinition: bobKeyDefinition,
|
|
992
|
+
messageTimestamp: '2025-03-02T00:00:00.000000Z',
|
|
993
|
+
});
|
|
994
|
+
expect((await dwn.processMessage(alice.did, governingConfig.message)).status.code).toBe(202);
|
|
995
|
+
const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
|
|
996
|
+
expect(repaired.messages).toHaveLength(0);
|
|
997
|
+
});
|
|
998
|
+
it('should retain historically valid controls when the newest role temporarily lacks key agreement', async () => {
|
|
999
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
1000
|
+
const protocol = 'http://config-validity.example/control-record-current-key-missing';
|
|
1001
|
+
const definition = {
|
|
1002
|
+
protocol,
|
|
1003
|
+
published: true,
|
|
1004
|
+
types: {
|
|
1005
|
+
member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
|
|
1006
|
+
},
|
|
1007
|
+
structure: {
|
|
1008
|
+
member: { $role: true },
|
|
1009
|
+
},
|
|
1010
|
+
};
|
|
1011
|
+
const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
|
|
1012
|
+
const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, keyDeriver);
|
|
1013
|
+
const encryptedConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
1014
|
+
author: alice,
|
|
1015
|
+
protocolDefinition: encryptedDefinition,
|
|
1016
|
+
messageTimestamp: '2025-04-01T00:00:00.000000Z',
|
|
1017
|
+
});
|
|
1018
|
+
expect((await dwn.processMessage(alice.did, encryptedConfig.message)).status.code).toBe(202);
|
|
1019
|
+
const audience = await createAudienceControlWrite({
|
|
1020
|
+
author: alice,
|
|
1021
|
+
dateCreated: '2025-04-02T00:00:00.000000Z',
|
|
1022
|
+
messageTimestamp: '2025-04-02T00:00:00.000000Z',
|
|
1023
|
+
protocol,
|
|
1024
|
+
rolePath: 'member',
|
|
1025
|
+
roleRuleSet: encryptedDefinition.structure.member,
|
|
1026
|
+
});
|
|
1027
|
+
await processControlWrite(dwn, alice.did, audience);
|
|
1028
|
+
const temporarilyUnkeyedConfig = await TestDataGenerator.generateProtocolsConfigure({
|
|
1029
|
+
author: alice,
|
|
1030
|
+
protocolDefinition: definition,
|
|
1031
|
+
messageTimestamp: '2025-04-03T00:00:00.000000Z',
|
|
1032
|
+
});
|
|
1033
|
+
expect((await dwn.processMessage(alice.did, temporarilyUnkeyedConfig.message)).status.code).toBe(202);
|
|
1034
|
+
const retained = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
|
|
1035
|
+
expect(retained.messages.length).toBeGreaterThan(0);
|
|
1036
|
+
});
|
|
597
1037
|
it('should return 400 if protocol is not normalized', async () => {
|
|
598
1038
|
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
599
1039
|
// query for non-normalized protocol
|