@enbox/dwn-sdk-js 0.0.1 → 0.0.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/README.md +52 -301
- package/dist/bundles/dwn.js +19 -21
- package/dist/esm/generated/precompiled-validators.js +2764 -1773
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +27 -3
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/message.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +17 -6
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +245 -69
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/resumable-task-manager.js +4 -4
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
- package/dist/esm/src/dwn.js +10 -8
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/enums/dwn-interface-method.js +4 -2
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -0
- package/dist/esm/src/handlers/messages-subscribe.js +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +116 -0
- package/dist/esm/src/handlers/messages-sync.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +149 -16
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +2 -2
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +143 -0
- package/dist/esm/src/handlers/records-count.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +4 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +4 -6
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +17 -18
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +9 -5
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/messages-read.js +2 -7
- package/dist/esm/src/interfaces/messages-read.js.map +1 -1
- package/dist/esm/src/interfaces/messages-subscribe.js +1 -0
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/{messages-query.js → messages-sync.js} +11 -12
- package/dist/esm/src/interfaces/messages-sync.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +153 -30
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-query.js +1 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +91 -0
- package/dist/esm/src/interfaces/records-count.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +15 -1
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +64 -15
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -1
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
- package/dist/esm/src/protocols/permission-grant.js +30 -0
- package/dist/esm/src/protocols/permission-grant.js.map +1 -1
- package/dist/esm/src/protocols/permission-request.js +24 -0
- package/dist/esm/src/protocols/permission-request.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +1 -1
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/schema-validator.js +0 -1
- package/dist/esm/src/schema-validator.js.map +1 -1
- package/dist/esm/src/smt/smt-store-level.js +125 -0
- package/dist/esm/src/smt/smt-store-level.js.map +1 -0
- package/dist/esm/src/smt/smt-store-memory.js +67 -0
- package/dist/esm/src/smt/smt-store-memory.js.map +1 -0
- package/dist/esm/src/smt/smt-utils.js +146 -0
- package/dist/esm/src/smt/smt-utils.js.map +1 -0
- package/dist/esm/src/smt/sparse-merkle-tree.js +622 -0
- package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -0
- package/dist/esm/src/state-index/state-index-level.js +228 -0
- package/dist/esm/src/state-index/state-index-level.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +6 -6
- package/dist/esm/src/store/data-store-level.js.map +1 -1
- package/dist/esm/src/store/index-level.js +375 -17
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +56 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +19 -16
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/encryption-types.js +2 -0
- package/dist/esm/src/types/encryption-types.js.map +1 -0
- package/dist/esm/src/types/message-types.js.map +1 -1
- package/dist/esm/src/types/protocols-types.js +0 -2
- package/dist/esm/src/types/protocols-types.js.map +1 -1
- package/dist/esm/src/types/records-types.js +2 -0
- package/dist/esm/src/types/records-types.js.map +1 -1
- package/dist/esm/src/types/smt-types.js +5 -0
- package/dist/esm/src/types/smt-types.js.map +1 -0
- package/dist/esm/src/types/state-index.js +2 -0
- package/dist/esm/src/types/state-index.js.map +1 -0
- package/dist/esm/src/utils/cid.js +2 -1
- package/dist/esm/src/utils/cid.js.map +1 -1
- package/dist/esm/src/utils/data-stream.js +84 -29
- package/dist/esm/src/utils/data-stream.js.map +1 -1
- package/dist/esm/src/utils/encryption.js +22 -31
- package/dist/esm/src/utils/encryption.js.map +1 -1
- package/dist/esm/src/utils/hd-key.js +3 -3
- package/dist/esm/src/utils/hd-key.js.map +1 -1
- package/dist/esm/src/utils/jws.js +4 -4
- package/dist/esm/src/utils/jws.js.map +1 -1
- package/dist/esm/src/utils/private-key-signer.js +4 -3
- package/dist/esm/src/utils/private-key-signer.js.map +1 -1
- package/dist/esm/src/utils/protocols.js +82 -9
- package/dist/esm/src/utils/protocols.js.map +1 -1
- package/dist/esm/src/utils/records.js +82 -26
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/secp256k1.js +4 -3
- package/dist/esm/src/utils/secp256k1.js.map +1 -1
- package/dist/esm/src/utils/secp256r1.js +3 -2
- package/dist/esm/src/utils/secp256r1.js.map +1 -1
- package/dist/esm/src/utils/time.js +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/core/auth.spec.js +2 -2
- package/dist/esm/tests/core/auth.spec.js.map +1 -1
- package/dist/esm/tests/core/message-reply.spec.js +3 -3
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
- package/dist/esm/tests/core/message.spec.js +13 -13
- package/dist/esm/tests/core/message.spec.js.map +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js +3 -3
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +27 -37
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/{event-log → event-stream}/event-emitter-stream.spec.js +14 -15
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -0
- package/dist/esm/tests/{event-log → event-stream}/event-stream.spec.js +13 -15
- package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js +281 -135
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +57 -59
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +32 -34
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +73 -95
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +1645 -0
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js +25 -27
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +42 -44
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +53 -55
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-prune.spec.js +126 -100
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-tags.spec.js +272 -272
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +35 -37
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +112 -112
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +78 -76
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +528 -0
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +545 -152
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +70 -72
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +313 -0
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +106 -109
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +863 -463
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +439 -209
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +292 -97
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +481 -483
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-get.spec.js +31 -11
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js +5 -5
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +64 -134
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-query.spec.js +4 -6
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-delete.spec.js +3 -5
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-query.spec.js +9 -11
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-read.spec.js +76 -7
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +7 -9
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +244 -48
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/jose/jws/general.spec.js +15 -18
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-grant.spec.js +114 -0
- package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permission-request.spec.js +43 -7
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permissions.spec.js +9 -11
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/aggregator.spec.js +90 -92
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +17 -19
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +27 -29
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +37 -39
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +163 -163
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
- package/dist/esm/tests/smt/smt-store-level.spec.js +143 -0
- package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -0
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +741 -0
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -0
- package/dist/esm/tests/state-index/state-index-level.spec.js +254 -0
- package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-level.spec.js +136 -0
- package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js +29 -28
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
- package/dist/esm/tests/store/data-store-level.spec.js +23 -25
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/index-level.spec.js +544 -194
- package/dist/esm/tests/store/index-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store-level.spec.js +4 -4
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store.spec.js +147 -73
- package/dist/esm/tests/store/message-store.spec.js.map +1 -1
- package/dist/esm/tests/store-dependent-tests.spec.js +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -1
- package/dist/esm/tests/test-stores.js +5 -5
- package/dist/esm/tests/test-stores.js.map +1 -1
- package/dist/esm/tests/test-suite.js +9 -8
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/cid.spec.js +8 -11
- package/dist/esm/tests/utils/cid.spec.js.map +1 -1
- package/dist/esm/tests/utils/data-stream.spec.js +167 -13
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
- package/dist/esm/tests/utils/encryption-callbacks.spec.js +233 -0
- package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +34 -85
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
- package/dist/esm/tests/utils/filters.spec.js +67 -69
- package/dist/esm/tests/utils/filters.spec.js.map +1 -1
- package/dist/esm/tests/utils/hd-key.spec.js +3 -3
- package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
- package/dist/esm/tests/utils/jws.spec.js +54 -3
- package/dist/esm/tests/utils/jws.spec.js.map +1 -1
- package/dist/esm/tests/utils/memory-cache.spec.js +6 -9
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
- package/dist/esm/tests/utils/messages.spec.js +63 -29
- package/dist/esm/tests/utils/messages.spec.js.map +1 -1
- package/dist/esm/tests/utils/object.spec.js +3 -3
- package/dist/esm/tests/utils/object.spec.js.map +1 -1
- package/dist/esm/tests/utils/poller.js +1 -1
- package/dist/esm/tests/utils/poller.js.map +1 -1
- package/dist/esm/tests/utils/private-key-signer.spec.js +6 -6
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
- package/dist/esm/tests/utils/records.spec.js +37 -5
- package/dist/esm/tests/utils/records.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256k1.spec.js +7 -7
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256r1.spec.js +7 -7
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
- package/dist/esm/tests/utils/test-data-generator.js +47 -28
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/utils/time.spec.js +7 -7
- package/dist/esm/tests/utils/time.spec.js.map +1 -1
- package/dist/esm/tests/utils/url.spec.js +25 -27
- package/dist/esm/tests/utils/url.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +4 -4
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +15 -3
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -8
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +8 -18
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +3 -3
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +9 -9
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +106 -0
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +18 -18
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/esm/tests/vectors/protocol-definitions/email.json +1 -1
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +2 -4
- package/dist/esm/tests/vectors/protocol-definitions/slack.json +2 -6
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +2 -6
- package/dist/types/generated/precompiled-validators.d.ts +82 -64
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/dwn-error.d.ts +27 -3
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/message-reply.d.ts +1 -1
- package/dist/types/src/core/message.d.ts +3 -3
- package/dist/types/src/core/message.d.ts.map +1 -1
- package/dist/types/src/core/messages-grant-authorization.d.ts +4 -4
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts +43 -2
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/records-grant-authorization.d.ts +2 -2
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/resumable-task-manager.d.ts +1 -0
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
- package/dist/types/src/dwn.d.ts +8 -8
- package/dist/types/src/dwn.d.ts.map +1 -1
- package/dist/types/src/enums/dwn-interface-method.d.ts +5 -3
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
- package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-sync.d.ts +21 -0
- package/dist/types/src/handlers/messages-sync.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +24 -4
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +43 -0
- package/dist/types/src/handlers/records-count.d.ts.map +1 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-read.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +5 -5
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +72 -37
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-read.d.ts +2 -2
- package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-subscribe.d.ts +2 -2
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-sync.d.ts +16 -0
- package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +22 -2
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-query.d.ts +2 -2
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-count.d.ts +27 -0
- package/dist/types/src/interfaces/records-count.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-delete.d.ts +2 -2
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-query.d.ts +2 -2
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-read.d.ts +4 -2
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-subscribe.d.ts +2 -2
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +37 -15
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -1
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +5 -1
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -1
- package/dist/types/src/jose/jws/general/builder.d.ts +3 -3
- package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-grant.d.ts +11 -0
- package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-request.d.ts +11 -0
- package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
- package/dist/types/src/protocols/permissions.d.ts +4 -4
- package/dist/types/src/protocols/permissions.d.ts.map +1 -1
- package/dist/types/src/schema-validator.d.ts +1 -1
- package/dist/types/src/schema-validator.d.ts.map +1 -1
- package/dist/types/src/smt/smt-store-level.d.ts +32 -0
- package/dist/types/src/smt/smt-store-level.d.ts.map +1 -0
- package/dist/types/src/smt/smt-store-memory.d.ts +22 -0
- package/dist/types/src/smt/smt-store-memory.d.ts.map +1 -0
- package/dist/types/src/smt/smt-utils.d.ts +58 -0
- package/dist/types/src/smt/smt-utils.d.ts.map +1 -0
- package/dist/types/src/smt/sparse-merkle-tree.d.ts +124 -0
- package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +1 -0
- package/dist/types/src/state-index/state-index-level.d.ts +83 -0
- package/dist/types/src/state-index/state-index-level.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +1 -2
- package/dist/types/src/store/data-store-level.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts +98 -2
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
- package/dist/types/src/store/message-store-level.d.ts +5 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts +7 -7
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/data-store.d.ts +2 -3
- package/dist/types/src/types/data-store.d.ts.map +1 -1
- package/dist/types/src/types/encryption-types.d.ts +48 -0
- package/dist/types/src/types/encryption-types.d.ts.map +1 -0
- package/dist/types/src/types/jose-types.d.ts +9 -40
- package/dist/types/src/types/jose-types.d.ts.map +1 -1
- package/dist/types/src/types/message-store.d.ts +5 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -1
- package/dist/types/src/types/message-types.d.ts +19 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +16 -11
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/method-handler.d.ts +1 -2
- package/dist/types/src/types/method-handler.d.ts.map +1 -1
- package/dist/types/src/types/permission-types.d.ts +2 -2
- package/dist/types/src/types/permission-types.d.ts.map +1 -1
- package/dist/types/src/types/protocols-types.d.ts +49 -5
- package/dist/types/src/types/protocols-types.d.ts.map +1 -1
- package/dist/types/src/types/records-types.d.ts +23 -7
- package/dist/types/src/types/records-types.d.ts.map +1 -1
- package/dist/types/src/types/signer.d.ts +1 -1
- package/dist/types/src/types/signer.d.ts.map +1 -1
- package/dist/types/src/types/smt-types.d.ts +81 -0
- package/dist/types/src/types/smt-types.d.ts.map +1 -0
- package/dist/types/src/types/state-index.d.ts +90 -0
- package/dist/types/src/types/state-index.d.ts.map +1 -0
- package/dist/types/src/utils/cid.d.ts +1 -2
- package/dist/types/src/utils/cid.d.ts.map +1 -1
- package/dist/types/src/utils/data-stream.d.ts +14 -7
- package/dist/types/src/utils/data-stream.d.ts.map +1 -1
- package/dist/types/src/utils/encryption.d.ts +2 -3
- package/dist/types/src/utils/encryption.d.ts.map +1 -1
- package/dist/types/src/utils/hd-key.d.ts +4 -4
- package/dist/types/src/utils/hd-key.d.ts.map +1 -1
- package/dist/types/src/utils/jws.d.ts +7 -7
- package/dist/types/src/utils/jws.d.ts.map +1 -1
- package/dist/types/src/utils/private-key-signer.d.ts +4 -4
- package/dist/types/src/utils/private-key-signer.d.ts.map +1 -1
- package/dist/types/src/utils/protocols.d.ts +46 -3
- package/dist/types/src/utils/protocols.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +33 -6
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/src/utils/secp256k1.d.ts +11 -11
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
- package/dist/types/src/utils/secp256r1.d.ts +8 -8
- package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
- package/dist/types/src/utils/time.d.ts +1 -1
- package/dist/types/tests/dwn.spec.d.ts.map +1 -1
- package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-composition.spec.d.ts +5 -0
- package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
- package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-sync.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-count.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
- package/dist/types/tests/protocols/permission-grant.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permission-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
- package/dist/types/tests/smt/smt-store-level.spec.d.ts +2 -0
- package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +2 -0
- package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +1 -0
- package/dist/types/tests/state-index/state-index-level.spec.d.ts +2 -0
- package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/blockstore-level.spec.d.ts +2 -0
- package/dist/types/tests/store/blockstore-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
- package/dist/types/tests/test-stores.d.ts +4 -4
- package/dist/types/tests/test-stores.d.ts.map +1 -1
- package/dist/types/tests/test-suite.d.ts +2 -2
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/dist/types/tests/utils/encryption-callbacks.spec.d.ts +2 -0
- package/dist/types/tests/utils/encryption-callbacks.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +31 -28
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts.map +1 -0
- package/package.json +26 -45
- package/src/core/dwn-error.ts +27 -3
- package/src/core/message-reply.ts +1 -1
- package/src/core/message.ts +5 -5
- package/src/core/messages-grant-authorization.ts +22 -8
- package/src/core/protocol-authorization.ts +345 -68
- package/src/core/records-grant-authorization.ts +2 -2
- package/src/core/resumable-task-manager.ts +4 -5
- package/src/dwn.ts +25 -20
- package/src/enums/dwn-interface-method.ts +5 -3
- package/src/handlers/messages-subscribe.ts +1 -1
- package/src/handlers/messages-sync.ts +129 -0
- package/src/handlers/protocols-configure.ts +195 -17
- package/src/handlers/protocols-query.ts +7 -5
- package/src/handlers/records-count.ts +184 -0
- package/src/handlers/records-query.ts +4 -0
- package/src/handlers/records-read.ts +4 -8
- package/src/handlers/records-write.ts +20 -21
- package/src/index.ts +74 -37
- package/src/interfaces/messages-read.ts +6 -5
- package/src/interfaces/messages-subscribe.ts +7 -6
- package/src/interfaces/messages-sync.ts +59 -0
- package/src/interfaces/protocols-configure.ts +211 -33
- package/src/interfaces/protocols-query.ts +7 -6
- package/src/interfaces/records-count.ts +106 -0
- package/src/interfaces/records-delete.ts +2 -2
- package/src/interfaces/records-query.ts +2 -2
- package/src/interfaces/records-read.ts +26 -3
- package/src/interfaces/records-subscribe.ts +2 -2
- package/src/interfaces/records-write.ts +115 -46
- package/src/jose/algorithms/signing/ed25519.ts +13 -12
- package/src/jose/algorithms/signing/signature-algorithms.ts +6 -1
- package/src/jose/jws/general/builder.ts +3 -3
- package/src/jose/jws/general/verifier.ts +3 -3
- package/src/protocols/permission-grant.ts +51 -0
- package/src/protocols/permission-request.ts +37 -0
- package/src/protocols/permissions.ts +5 -5
- package/src/schema-validator.ts +11 -3
- package/src/smt/smt-store-level.ts +143 -0
- package/src/smt/smt-store-memory.ts +53 -0
- package/src/smt/smt-utils.ts +149 -0
- package/src/smt/sparse-merkle-tree.ts +698 -0
- package/src/state-index/state-index-level.ts +241 -0
- package/src/store/data-store-level.ts +8 -7
- package/src/store/index-level.ts +415 -19
- package/src/store/level-wrapper.ts +1 -1
- package/src/store/message-store-level.ts +62 -0
- package/src/store/storage-controller.ts +21 -19
- package/src/types/data-store.ts +2 -4
- package/src/types/encryption-types.ts +52 -0
- package/src/types/jose-types.ts +10 -42
- package/src/types/message-store.ts +11 -0
- package/src/types/message-types.ts +21 -0
- package/src/types/messages-types.ts +21 -15
- package/src/types/method-handler.ts +1 -2
- package/src/types/permission-types.ts +2 -2
- package/src/types/protocols-types.ts +55 -6
- package/src/types/records-types.ts +26 -7
- package/src/types/signer.ts +1 -1
- package/src/types/smt-types.ts +95 -0
- package/src/types/state-index.ts +100 -0
- package/src/utils/cid.ts +3 -4
- package/src/utils/data-stream.ts +75 -38
- package/src/utils/encryption.ts +24 -39
- package/src/utils/hd-key.ts +6 -6
- package/src/utils/jws.ts +9 -9
- package/src/utils/private-key-signer.ts +9 -8
- package/src/utils/protocols.ts +132 -6
- package/src/utils/records.ts +118 -29
- package/src/utils/secp256k1.ts +23 -21
- package/src/utils/secp256r1.ts +17 -15
- package/src/utils/time.ts +1 -1
- package/src/utils/url.ts +1 -1
- package/dist/cjs/index.js +0 -36749
- package/dist/cjs/package.json +0 -1
- package/dist/esm/src/event-log/event-emitter-stream.js.map +0 -1
- package/dist/esm/src/event-log/event-log-level.js +0 -63
- package/dist/esm/src/event-log/event-log-level.js.map +0 -1
- package/dist/esm/src/handlers/messages-query.js +0 -71
- package/dist/esm/src/handlers/messages-query.js.map +0 -1
- package/dist/esm/src/interfaces/messages-query.js.map +0 -1
- package/dist/esm/src/types/event-log.js +0 -2
- package/dist/esm/src/types/event-log.js.map +0 -1
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-log-level.spec.js +0 -44
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-log.spec.js +0 -236
- package/dist/esm/tests/event-log/event-log.spec.js.map +0 -1
- package/dist/esm/tests/event-log/event-stream.spec.js.map +0 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +0 -349
- package/dist/esm/tests/handlers/messages-query.spec.js.map +0 -1
- package/dist/esm/tests/interfaces/messagess-query.spec.js +0 -127
- package/dist/esm/tests/interfaces/messagess-query.spec.js.map +0 -1
- package/dist/esm/tests/scenarios/messages-query.spec.js +0 -395
- package/dist/esm/tests/scenarios/messages-query.spec.js.map +0 -1
- package/dist/types/src/event-log/event-emitter-stream.d.ts.map +0 -1
- package/dist/types/src/event-log/event-log-level.d.ts +0 -35
- package/dist/types/src/event-log/event-log-level.d.ts.map +0 -1
- package/dist/types/src/handlers/messages-query.d.ts +0 -17
- package/dist/types/src/handlers/messages-query.d.ts.map +0 -1
- package/dist/types/src/interfaces/messages-query.d.ts +0 -16
- package/dist/types/src/interfaces/messages-query.d.ts.map +0 -1
- package/dist/types/src/types/event-log.d.ts +0 -52
- package/dist/types/src/types/event-log.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-log-level.spec.d.ts +0 -2
- package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-log.spec.d.ts +0 -2
- package/dist/types/tests/event-log/event-log.spec.d.ts.map +0 -1
- package/dist/types/tests/event-log/event-stream.spec.d.ts.map +0 -1
- package/dist/types/tests/handlers/messages-query.spec.d.ts +0 -2
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +0 -1
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts +0 -2
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +0 -1
- package/dist/types/tests/scenarios/messages-query.spec.d.ts +0 -2
- package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +0 -1
- package/src/event-log/event-log-level.ts +0 -72
- package/src/handlers/messages-query.ts +0 -67
- package/src/interfaces/messages-query.ts +0 -60
- package/src/types/event-log.ts +0 -52
- /package/dist/esm/src/{event-log → event-stream}/event-emitter-stream.js +0 -0
- /package/dist/types/src/{event-log → event-stream}/event-emitter-stream.d.ts +0 -0
- /package/dist/types/tests/{event-log → event-stream}/event-emitter-stream.spec.d.ts +0 -0
- /package/dist/types/tests/{event-log → event-stream}/event-stream.spec.d.ts +0 -0
- /package/src/{event-log → event-stream}/event-emitter-stream.ts +0 -0
|
@@ -7,16 +7,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { expect } from 'chai';
|
|
11
10
|
import { GeneralJwsVerifier } from '../../src/jose/jws/general/verifier.js';
|
|
12
11
|
import { Message } from '../../src/core/message.js';
|
|
13
|
-
import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json'
|
|
12
|
+
import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
|
|
13
|
+
import sinon from 'sinon';
|
|
14
14
|
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
15
15
|
import { TestEventStream } from '../test-event-stream.js';
|
|
16
16
|
import { TestStores } from '../test-stores.js';
|
|
17
|
+
import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
|
|
17
18
|
import { DataStream, Dwn, DwnConstant, DwnErrorCode, DwnInterfaceName, DwnMethodName, Jws, PermissionGrant, PermissionsProtocol, Time } from '../../src/index.js';
|
|
18
19
|
import { DidKey, UniversalResolver } from '@enbox/dids';
|
|
19
|
-
import sinon from 'sinon';
|
|
20
20
|
export function testMessagesReadHandler() {
|
|
21
21
|
describe('MessagesReadHandler.handle()', () => {
|
|
22
22
|
let dwn;
|
|
@@ -24,29 +24,29 @@ export function testMessagesReadHandler() {
|
|
|
24
24
|
let messageStore;
|
|
25
25
|
let dataStore;
|
|
26
26
|
let resumableTaskStore;
|
|
27
|
-
let
|
|
27
|
+
let stateIndex;
|
|
28
28
|
let eventStream;
|
|
29
29
|
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
30
30
|
// so that different test suites can reuse the same backend store for testing
|
|
31
|
-
|
|
31
|
+
beforeAll(() => __awaiter(this, void 0, void 0, function* () {
|
|
32
32
|
didResolver = new UniversalResolver({ didResolvers: [DidKey] });
|
|
33
33
|
const stores = TestStores.get();
|
|
34
34
|
messageStore = stores.messageStore;
|
|
35
35
|
dataStore = stores.dataStore;
|
|
36
36
|
resumableTaskStore = stores.resumableTaskStore;
|
|
37
|
-
|
|
37
|
+
stateIndex = stores.stateIndex;
|
|
38
38
|
eventStream = TestEventStream.get();
|
|
39
|
-
dwn = yield Dwn.create({ didResolver, messageStore, dataStore,
|
|
39
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
|
|
40
40
|
}));
|
|
41
41
|
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
|
|
42
42
|
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
43
43
|
yield messageStore.clear();
|
|
44
44
|
yield dataStore.clear();
|
|
45
45
|
yield resumableTaskStore.clear();
|
|
46
|
-
yield
|
|
46
|
+
yield stateIndex.clear();
|
|
47
47
|
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
|
|
48
48
|
}));
|
|
49
|
-
|
|
49
|
+
afterAll(() => __awaiter(this, void 0, void 0, function* () {
|
|
50
50
|
sinon.restore();
|
|
51
51
|
yield dwn.close();
|
|
52
52
|
}));
|
|
@@ -60,8 +60,8 @@ export function testMessagesReadHandler() {
|
|
|
60
60
|
});
|
|
61
61
|
// alice is not the author of the message
|
|
62
62
|
const reply = yield dwn.processMessage(alice.did, message);
|
|
63
|
-
expect(reply.status.code).
|
|
64
|
-
expect(reply.status.detail).
|
|
63
|
+
expect(reply.status.code).toBe(401);
|
|
64
|
+
expect(reply.status.detail).toContain('Invalid signature');
|
|
65
65
|
}));
|
|
66
66
|
it('returns a 400 if message is invalid', () => __awaiter(this, void 0, void 0, function* () {
|
|
67
67
|
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
@@ -72,7 +72,7 @@ export function testMessagesReadHandler() {
|
|
|
72
72
|
});
|
|
73
73
|
message['descriptor']['troll'] = 'hehe';
|
|
74
74
|
const reply = yield dwn.processMessage(alice.did, message);
|
|
75
|
-
expect(reply.status.code).
|
|
75
|
+
expect(reply.status.code).toBe(400);
|
|
76
76
|
}));
|
|
77
77
|
it('returns a 400 if message contains an invalid message cid', () => __awaiter(this, void 0, void 0, function* () {
|
|
78
78
|
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
@@ -83,9 +83,9 @@ export function testMessagesReadHandler() {
|
|
|
83
83
|
});
|
|
84
84
|
message.descriptor.messageCid = 'hehetroll';
|
|
85
85
|
const reply = yield dwn.processMessage(alice.did, message);
|
|
86
|
-
expect(reply.status.code).
|
|
87
|
-
expect(reply.status.detail).
|
|
88
|
-
expect(reply.entry).
|
|
86
|
+
expect(reply.status.code).toBe(400);
|
|
87
|
+
expect(reply.status.detail).toContain('is not a valid CID');
|
|
88
|
+
expect(reply.entry).toBeUndefined();
|
|
89
89
|
}));
|
|
90
90
|
it('returns a 404 and the entry as undefined in reply entry when a messageCid is not found', () => __awaiter(this, void 0, void 0, function* () {
|
|
91
91
|
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
@@ -97,8 +97,8 @@ export function testMessagesReadHandler() {
|
|
|
97
97
|
});
|
|
98
98
|
// returns a 404 because the RecordsWrite created above was never stored
|
|
99
99
|
const reply = yield dwn.processMessage(alice.did, message);
|
|
100
|
-
expect(reply.status.code).
|
|
101
|
-
expect(reply.entry).
|
|
100
|
+
expect(reply.status.code).toBe(404);
|
|
101
|
+
expect(reply.entry).toBeUndefined();
|
|
102
102
|
}));
|
|
103
103
|
describe('without a grant', () => {
|
|
104
104
|
describe('records interface messages', () => {
|
|
@@ -108,15 +108,15 @@ export function testMessagesReadHandler() {
|
|
|
108
108
|
// bob creates a record that alice will try and get
|
|
109
109
|
const { message: recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: bob });
|
|
110
110
|
const { status } = yield dwn.processMessage(bob.did, recordsWrite, { dataStream });
|
|
111
|
-
expect(status.code).
|
|
111
|
+
expect(status.code).toBe(202);
|
|
112
112
|
// alice tries to read the message
|
|
113
113
|
const { message } = yield TestDataGenerator.generateMessagesRead({
|
|
114
114
|
author: alice,
|
|
115
115
|
messageCid: yield Message.getCid(recordsWrite)
|
|
116
116
|
});
|
|
117
117
|
const reply = yield dwn.processMessage(bob.did, message);
|
|
118
|
-
expect(reply.status.code).
|
|
119
|
-
expect(reply.status.detail).
|
|
118
|
+
expect(reply.status.code).toBe(401);
|
|
119
|
+
expect(reply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
|
|
120
120
|
}));
|
|
121
121
|
describe('gets record data in the reply entry', () => {
|
|
122
122
|
it('data is less than threshold', () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -126,22 +126,22 @@ export function testMessagesReadHandler() {
|
|
|
126
126
|
data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded),
|
|
127
127
|
});
|
|
128
128
|
const reply = yield dwn.processMessage(alice.did, recordsWrite, { dataStream });
|
|
129
|
-
expect(reply.status.code).
|
|
129
|
+
expect(reply.status.code).toBe(202);
|
|
130
130
|
const recordsWriteMessageCid = yield Message.getCid(recordsWrite);
|
|
131
131
|
const { message } = yield TestDataGenerator.generateMessagesRead({
|
|
132
132
|
author: alice,
|
|
133
133
|
messageCid: recordsWriteMessageCid
|
|
134
134
|
});
|
|
135
135
|
const messagesReadReply = yield dwn.processMessage(alice.did, message);
|
|
136
|
-
expect(messagesReadReply.status.code).
|
|
137
|
-
expect(messagesReadReply.entry).
|
|
136
|
+
expect(messagesReadReply.status.code).toBe(200);
|
|
137
|
+
expect(messagesReadReply.entry).toBeDefined();
|
|
138
138
|
const messageReply = messagesReadReply.entry;
|
|
139
|
-
expect(messageReply.messageCid).
|
|
140
|
-
expect(messageReply.messageCid).
|
|
141
|
-
expect(messageReply.message).
|
|
142
|
-
expect(messageReply.data).
|
|
139
|
+
expect(messageReply.messageCid).toBeDefined();
|
|
140
|
+
expect(messageReply.messageCid).toBe(recordsWriteMessageCid);
|
|
141
|
+
expect(messageReply.message).toBeDefined();
|
|
142
|
+
expect(messageReply.data).toBeDefined();
|
|
143
143
|
const messageData = yield DataStream.toBytes(messageReply.data);
|
|
144
|
-
expect(messageData).
|
|
144
|
+
expect(messageData).toEqual(dataBytes);
|
|
145
145
|
}));
|
|
146
146
|
it('data is greater than threshold', () => __awaiter(this, void 0, void 0, function* () {
|
|
147
147
|
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
@@ -150,22 +150,22 @@ export function testMessagesReadHandler() {
|
|
|
150
150
|
data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 10),
|
|
151
151
|
});
|
|
152
152
|
const reply = yield dwn.processMessage(alice.did, recordsWrite, { dataStream });
|
|
153
|
-
expect(reply.status.code).
|
|
153
|
+
expect(reply.status.code).toBe(202);
|
|
154
154
|
const recordsWriteMessageCid = yield Message.getCid(recordsWrite);
|
|
155
155
|
const { message } = yield TestDataGenerator.generateMessagesRead({
|
|
156
156
|
author: alice,
|
|
157
157
|
messageCid: recordsWriteMessageCid
|
|
158
158
|
});
|
|
159
159
|
const messagesReadReply = yield dwn.processMessage(alice.did, message);
|
|
160
|
-
expect(messagesReadReply.status.code).
|
|
161
|
-
expect(messagesReadReply.entry).
|
|
160
|
+
expect(messagesReadReply.status.code).toBe(200);
|
|
161
|
+
expect(messagesReadReply.entry).toBeDefined();
|
|
162
162
|
const messageReply = messagesReadReply.entry;
|
|
163
|
-
expect(messageReply.messageCid).
|
|
164
|
-
expect(messageReply.messageCid).
|
|
165
|
-
expect(messageReply.message).
|
|
166
|
-
expect(messageReply.data).
|
|
163
|
+
expect(messageReply.messageCid).toBeDefined();
|
|
164
|
+
expect(messageReply.messageCid).toBe(recordsWriteMessageCid);
|
|
165
|
+
expect(messageReply.message).toBeDefined();
|
|
166
|
+
expect(messageReply.data).toBeDefined();
|
|
167
167
|
const messageData = yield DataStream.toBytes(messageReply.data);
|
|
168
|
-
expect(messageData).
|
|
168
|
+
expect(messageData).toEqual(dataBytes);
|
|
169
169
|
}));
|
|
170
170
|
it('data is not available', () => __awaiter(this, void 0, void 0, function* () {
|
|
171
171
|
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
@@ -176,26 +176,26 @@ export function testMessagesReadHandler() {
|
|
|
176
176
|
});
|
|
177
177
|
const initialMessageCid = yield Message.getCid(recordsWriteMessage);
|
|
178
178
|
let reply = yield dwn.processMessage(alice.did, recordsWriteMessage, { dataStream });
|
|
179
|
-
expect(reply.status.code).
|
|
179
|
+
expect(reply.status.code).toBe(202);
|
|
180
180
|
const { recordsWrite: updateMessage, dataStream: updateDataStream } = yield TestDataGenerator.generateFromRecordsWrite({
|
|
181
181
|
author: alice,
|
|
182
182
|
existingWrite: recordsWrite,
|
|
183
183
|
data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 10),
|
|
184
184
|
});
|
|
185
185
|
reply = yield dwn.processMessage(alice.did, updateMessage.toJSON(), { dataStream: updateDataStream });
|
|
186
|
-
expect(reply.status.code).
|
|
186
|
+
expect(reply.status.code).toBe(202);
|
|
187
187
|
const { message } = yield TestDataGenerator.generateMessagesRead({
|
|
188
188
|
author: alice,
|
|
189
189
|
messageCid: initialMessageCid
|
|
190
190
|
});
|
|
191
191
|
const messagesReadReply = yield dwn.processMessage(alice.did, message);
|
|
192
|
-
expect(messagesReadReply.status.code).
|
|
193
|
-
expect(messagesReadReply.entry).
|
|
192
|
+
expect(messagesReadReply.status.code).toBe(200);
|
|
193
|
+
expect(messagesReadReply.entry).toBeDefined();
|
|
194
194
|
const messageReply = messagesReadReply.entry;
|
|
195
|
-
expect(messageReply.messageCid).
|
|
196
|
-
expect(messageReply.messageCid).
|
|
197
|
-
expect(messageReply.message).
|
|
198
|
-
expect(messageReply.data).
|
|
195
|
+
expect(messageReply.messageCid).toBeDefined();
|
|
196
|
+
expect(messageReply.messageCid).toBe(initialMessageCid);
|
|
197
|
+
expect(messageReply.message).toBeDefined();
|
|
198
|
+
expect(messageReply.data).toBeUndefined();
|
|
199
199
|
}));
|
|
200
200
|
});
|
|
201
201
|
});
|
|
@@ -212,7 +212,7 @@ export function testMessagesReadHandler() {
|
|
|
212
212
|
protocolDefinition: unpublishedProtocolDefinition
|
|
213
213
|
});
|
|
214
214
|
const unpublishedProtocolsConfigureReply = yield dwn.processMessage(alice.did, unpublishedProtocolsConfigure);
|
|
215
|
-
expect(unpublishedProtocolsConfigureReply.status.code).
|
|
215
|
+
expect(unpublishedProtocolsConfigureReply.status.code).toBe(202);
|
|
216
216
|
// published protocol configuration
|
|
217
217
|
const publishedProtocolDefinition = Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'http://example.com/protocol/published', published: true });
|
|
218
218
|
const { message: publishedProtocolsConfigure } = yield TestDataGenerator.generateProtocolsConfigure({
|
|
@@ -220,7 +220,7 @@ export function testMessagesReadHandler() {
|
|
|
220
220
|
protocolDefinition: publishedProtocolDefinition
|
|
221
221
|
});
|
|
222
222
|
const publishedProtocolsConfigureReply = yield dwn.processMessage(alice.did, publishedProtocolsConfigure);
|
|
223
|
-
expect(publishedProtocolsConfigureReply.status.code).
|
|
223
|
+
expect(publishedProtocolsConfigureReply.status.code).toBe(202);
|
|
224
224
|
// get the message CIDs
|
|
225
225
|
const unpublishedProtocolMessageCid = yield Message.getCid(unpublishedProtocolsConfigure);
|
|
226
226
|
const publishedProtocolMessageCid = yield Message.getCid(publishedProtocolsConfigure);
|
|
@@ -230,37 +230,37 @@ export function testMessagesReadHandler() {
|
|
|
230
230
|
messageCid: unpublishedProtocolMessageCid,
|
|
231
231
|
});
|
|
232
232
|
const getUnpublishedProtocolConfigureReply = yield dwn.processMessage(alice.did, getUnpublishedProtocolConfigure);
|
|
233
|
-
expect(getUnpublishedProtocolConfigureReply.status.code).
|
|
234
|
-
expect(getUnpublishedProtocolConfigureReply.status.detail).
|
|
235
|
-
expect(getUnpublishedProtocolConfigureReply.entry).
|
|
233
|
+
expect(getUnpublishedProtocolConfigureReply.status.code).toBe(401);
|
|
234
|
+
expect(getUnpublishedProtocolConfigureReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
|
|
235
|
+
expect(getUnpublishedProtocolConfigureReply.entry).toBeUndefined();
|
|
236
236
|
// bob attempts to read the published protocol configuration
|
|
237
237
|
const { message: getPublishedProtocolConfigure } = yield TestDataGenerator.generateMessagesRead({
|
|
238
238
|
author: bob,
|
|
239
239
|
messageCid: publishedProtocolMessageCid,
|
|
240
240
|
});
|
|
241
241
|
const getPublishedProtocolConfigureReply = yield dwn.processMessage(alice.did, getPublishedProtocolConfigure);
|
|
242
|
-
expect(getPublishedProtocolConfigureReply.status.code).
|
|
243
|
-
expect(getPublishedProtocolConfigureReply.status.detail).
|
|
244
|
-
expect(getPublishedProtocolConfigureReply.entry).
|
|
242
|
+
expect(getPublishedProtocolConfigureReply.status.code).toBe(401);
|
|
243
|
+
expect(getPublishedProtocolConfigureReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
|
|
244
|
+
expect(getPublishedProtocolConfigureReply.entry).toBeUndefined();
|
|
245
245
|
// control: alice is able to read both the published and unpublished protocol configurations
|
|
246
246
|
const { message: getUnpublishedProtocolConfigureAlice } = yield TestDataGenerator.generateMessagesRead({
|
|
247
247
|
author: alice,
|
|
248
248
|
messageCid: unpublishedProtocolMessageCid,
|
|
249
249
|
});
|
|
250
250
|
const getUnpublishedProtocolConfigureAliceReply = yield dwn.processMessage(alice.did, getUnpublishedProtocolConfigureAlice);
|
|
251
|
-
expect(getUnpublishedProtocolConfigureAliceReply.status.code).
|
|
252
|
-
expect(getUnpublishedProtocolConfigureAliceReply.entry).
|
|
253
|
-
expect(getUnpublishedProtocolConfigureAliceReply.entry.messageCid).
|
|
254
|
-
expect(getUnpublishedProtocolConfigureAliceReply.entry.message).
|
|
251
|
+
expect(getUnpublishedProtocolConfigureAliceReply.status.code).toBe(200);
|
|
252
|
+
expect(getUnpublishedProtocolConfigureAliceReply.entry).toBeDefined();
|
|
253
|
+
expect(getUnpublishedProtocolConfigureAliceReply.entry.messageCid).toBe(unpublishedProtocolMessageCid);
|
|
254
|
+
expect(getUnpublishedProtocolConfigureAliceReply.entry.message).toEqual(unpublishedProtocolsConfigure);
|
|
255
255
|
const { message: getPublishedProtocolConfigureAlice } = yield TestDataGenerator.generateMessagesRead({
|
|
256
256
|
author: alice,
|
|
257
257
|
messageCid: publishedProtocolMessageCid,
|
|
258
258
|
});
|
|
259
259
|
const getPublishedProtocolConfigureAliceReply = yield dwn.processMessage(alice.did, getPublishedProtocolConfigureAlice);
|
|
260
|
-
expect(getPublishedProtocolConfigureAliceReply.status.code).
|
|
261
|
-
expect(getPublishedProtocolConfigureAliceReply.entry).
|
|
262
|
-
expect(getPublishedProtocolConfigureAliceReply.entry.messageCid).
|
|
263
|
-
expect(getPublishedProtocolConfigureAliceReply.entry.message).
|
|
260
|
+
expect(getPublishedProtocolConfigureAliceReply.status.code).toBe(200);
|
|
261
|
+
expect(getPublishedProtocolConfigureAliceReply.entry).toBeDefined();
|
|
262
|
+
expect(getPublishedProtocolConfigureAliceReply.entry.messageCid).toBe(publishedProtocolMessageCid);
|
|
263
|
+
expect(getPublishedProtocolConfigureAliceReply.entry.message).toEqual(publishedProtocolsConfigure);
|
|
264
264
|
}));
|
|
265
265
|
});
|
|
266
266
|
});
|
|
@@ -275,7 +275,7 @@ export function testMessagesReadHandler() {
|
|
|
275
275
|
protocolDefinition: minimalProtocolDefinition
|
|
276
276
|
});
|
|
277
277
|
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
278
|
-
expect(protocolsConfigureReply.status.code).
|
|
278
|
+
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
279
279
|
// Alice writes a record which Bob will later try to read
|
|
280
280
|
const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
|
|
281
281
|
author: alice,
|
|
@@ -283,7 +283,7 @@ export function testMessagesReadHandler() {
|
|
|
283
283
|
protocolPath: 'foo',
|
|
284
284
|
});
|
|
285
285
|
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
|
|
286
|
-
expect(recordsWriteReply.status.code).
|
|
286
|
+
expect(recordsWriteReply.status.code).toBe(202);
|
|
287
287
|
// Alice gives Bob a permission grant scoped to a RecordsWrite and the protocol
|
|
288
288
|
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
289
289
|
signer: Jws.createSigner(alice),
|
|
@@ -297,7 +297,7 @@ export function testMessagesReadHandler() {
|
|
|
297
297
|
});
|
|
298
298
|
const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
299
299
|
const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
|
|
300
|
-
expect(permissionGrantWriteReply.status.code).
|
|
300
|
+
expect(permissionGrantWriteReply.status.code).toBe(202);
|
|
301
301
|
// Bob tries to MessagesRead using the RecordsWrite grant
|
|
302
302
|
const messagesRead = yield TestDataGenerator.generateMessagesRead({
|
|
303
303
|
author: bob,
|
|
@@ -305,8 +305,8 @@ export function testMessagesReadHandler() {
|
|
|
305
305
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
306
306
|
});
|
|
307
307
|
const messagesReadReply = yield dwn.processMessage(alice.did, messagesRead.message);
|
|
308
|
-
expect(messagesReadReply.status.code).
|
|
309
|
-
expect(messagesReadReply.status.detail).
|
|
308
|
+
expect(messagesReadReply.status.code).toBe(401);
|
|
309
|
+
expect(messagesReadReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationInterfaceMismatch);
|
|
310
310
|
}));
|
|
311
311
|
it('allows external parties to read a message using a grant with unrestricted scope', () => __awaiter(this, void 0, void 0, function* () {
|
|
312
312
|
// scenario: Alice gives Bob a grant allowing him to read any message in her DWN.
|
|
@@ -318,7 +318,7 @@ export function testMessagesReadHandler() {
|
|
|
318
318
|
author: alice,
|
|
319
319
|
});
|
|
320
320
|
const writeReply = yield dwn.processMessage(alice.did, message, { dataStream });
|
|
321
|
-
expect(writeReply.status.code).
|
|
321
|
+
expect(writeReply.status.code).toBe(202);
|
|
322
322
|
const messageCid = yield Message.getCid(message);
|
|
323
323
|
// Alice issues a permission grant allowing Bob to read any record in her DWN
|
|
324
324
|
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
@@ -332,7 +332,7 @@ export function testMessagesReadHandler() {
|
|
|
332
332
|
});
|
|
333
333
|
const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
334
334
|
const grantReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
|
|
335
|
-
expect(grantReply.status.code).
|
|
335
|
+
expect(grantReply.status.code).toBe(202);
|
|
336
336
|
// Bob invokes that grant to read a record from Alice's DWN
|
|
337
337
|
const messagesRead = yield TestDataGenerator.generateMessagesRead({
|
|
338
338
|
author: bob,
|
|
@@ -340,9 +340,9 @@ export function testMessagesReadHandler() {
|
|
|
340
340
|
messageCid,
|
|
341
341
|
});
|
|
342
342
|
const readReply = yield dwn.processMessage(alice.did, messagesRead.message);
|
|
343
|
-
expect(readReply.status.code).
|
|
344
|
-
expect(readReply.entry).
|
|
345
|
-
expect(readReply.entry.messageCid).
|
|
343
|
+
expect(readReply.status.code).toBe(200);
|
|
344
|
+
expect(readReply.entry).toBeDefined();
|
|
345
|
+
expect(readReply.entry.messageCid).toBe(messageCid);
|
|
346
346
|
}));
|
|
347
347
|
describe('protocol scoped messages', () => {
|
|
348
348
|
it('allows reads of protocol messages with a protocol restricted grant scope', () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -368,7 +368,7 @@ export function testMessagesReadHandler() {
|
|
|
368
368
|
protocolDefinition
|
|
369
369
|
});
|
|
370
370
|
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
371
|
-
expect(protocolsConfigureReply.status.code).
|
|
371
|
+
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
372
372
|
const protocolConfigureMessageCid = yield Message.getCid(protocolsConfig.message);
|
|
373
373
|
// Carol requests a grant to write records to the protocol
|
|
374
374
|
const permissionRequestCarol = yield PermissionsProtocol.createRequest({
|
|
@@ -382,7 +382,7 @@ export function testMessagesReadHandler() {
|
|
|
382
382
|
});
|
|
383
383
|
const requestDataStreamCarol = DataStream.fromBytes(permissionRequestCarol.permissionRequestBytes);
|
|
384
384
|
const permissionRequestWriteReplyCarol = yield dwn.processMessage(alice.did, permissionRequestCarol.recordsWrite.message, { dataStream: requestDataStreamCarol });
|
|
385
|
-
expect(permissionRequestWriteReplyCarol.status.code).
|
|
385
|
+
expect(permissionRequestWriteReplyCarol.status.code).toBe(202);
|
|
386
386
|
// Alice gives Carol a grant to write records to the protocol
|
|
387
387
|
const permissionGrantCarol = yield PermissionsProtocol.createGrant({
|
|
388
388
|
signer: Jws.createSigner(alice),
|
|
@@ -393,7 +393,7 @@ export function testMessagesReadHandler() {
|
|
|
393
393
|
});
|
|
394
394
|
const grantDataStreamCarol = DataStream.fromBytes(permissionGrantCarol.permissionGrantBytes);
|
|
395
395
|
const permissionGrantWriteReplyCarol = yield dwn.processMessage(alice.did, permissionGrantCarol.recordsWrite.message, { dataStream: grantDataStreamCarol });
|
|
396
|
-
expect(permissionGrantWriteReplyCarol.status.code).
|
|
396
|
+
expect(permissionGrantWriteReplyCarol.status.code).toBe(202);
|
|
397
397
|
const carolGrantMessageCiD = yield Message.getCid(permissionGrantCarol.recordsWrite.message);
|
|
398
398
|
// Alice writes a record associated with the protocol
|
|
399
399
|
const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
|
|
@@ -402,7 +402,7 @@ export function testMessagesReadHandler() {
|
|
|
402
402
|
protocolPath: 'foo',
|
|
403
403
|
});
|
|
404
404
|
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
|
|
405
|
-
expect(recordsWriteReply.status.code).
|
|
405
|
+
expect(recordsWriteReply.status.code).toBe(202);
|
|
406
406
|
const aliceRecordMessageCid = yield Message.getCid(recordsWrite.message);
|
|
407
407
|
// Alice deletes a record associated with the protocol
|
|
408
408
|
const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
@@ -410,7 +410,7 @@ export function testMessagesReadHandler() {
|
|
|
410
410
|
recordId: recordsWrite.message.recordId,
|
|
411
411
|
});
|
|
412
412
|
const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
413
|
-
expect(recordsDeleteReply.status.code).
|
|
413
|
+
expect(recordsDeleteReply.status.code).toBe(202);
|
|
414
414
|
// Carol writes a record associated with the protocol
|
|
415
415
|
const { recordsWrite: recordsWriteCarol, dataStream: dataStreamCarol } = yield TestDataGenerator.generateRecordsWrite({
|
|
416
416
|
author: carol,
|
|
@@ -419,7 +419,7 @@ export function testMessagesReadHandler() {
|
|
|
419
419
|
permissionGrantId: permissionGrantCarol.recordsWrite.message.recordId,
|
|
420
420
|
});
|
|
421
421
|
const recordsWriteReplyCarol = yield dwn.processMessage(alice.did, recordsWriteCarol.message, { dataStream: dataStreamCarol });
|
|
422
|
-
expect(recordsWriteReplyCarol.status.code).
|
|
422
|
+
expect(recordsWriteReplyCarol.status.code).toBe(202);
|
|
423
423
|
const carolRecordMessageCid = yield Message.getCid(recordsWriteCarol.message);
|
|
424
424
|
// Alice revokes Carol's grant
|
|
425
425
|
const permissionRevocationCarol = yield PermissionsProtocol.createRevocation({
|
|
@@ -428,7 +428,7 @@ export function testMessagesReadHandler() {
|
|
|
428
428
|
});
|
|
429
429
|
const permissionRevocationCarolDataStream = DataStream.fromBytes(permissionRevocationCarol.permissionRevocationBytes);
|
|
430
430
|
const permissionRevocationCarolReply = yield dwn.processMessage(alice.did, permissionRevocationCarol.recordsWrite.message, { dataStream: permissionRevocationCarolDataStream });
|
|
431
|
-
expect(permissionRevocationCarolReply.status.code).
|
|
431
|
+
expect(permissionRevocationCarolReply.status.code).toBe(202);
|
|
432
432
|
// Alice gives Bob a permission grant with scope MessagesRead
|
|
433
433
|
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
434
434
|
signer: Jws.createSigner(alice),
|
|
@@ -442,15 +442,15 @@ export function testMessagesReadHandler() {
|
|
|
442
442
|
});
|
|
443
443
|
const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
444
444
|
const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
|
|
445
|
-
expect(permissionGrantWriteReply.status.code).
|
|
445
|
+
expect(permissionGrantWriteReply.status.code).toBe(202);
|
|
446
446
|
// Bob is unable to read the message without using the permission grant
|
|
447
447
|
const messagesReadWithoutGrant = yield TestDataGenerator.generateMessagesRead({
|
|
448
448
|
author: bob,
|
|
449
449
|
messageCid: aliceRecordMessageCid,
|
|
450
450
|
});
|
|
451
451
|
const messagesReadWithoutGrantReply = yield dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
|
|
452
|
-
expect(messagesReadWithoutGrantReply.status.code).
|
|
453
|
-
expect(messagesReadWithoutGrantReply.status.detail).
|
|
452
|
+
expect(messagesReadWithoutGrantReply.status.code).toBe(401);
|
|
453
|
+
expect(messagesReadWithoutGrantReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
|
|
454
454
|
// Bob is able to read all the associated messages when using the permission grant
|
|
455
455
|
// Expected Messages:
|
|
456
456
|
// - Protocol Configuration
|
|
@@ -467,9 +467,9 @@ export function testMessagesReadHandler() {
|
|
|
467
467
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
468
468
|
});
|
|
469
469
|
const messagesReadProtocolConfigureReply = yield dwn.processMessage(alice.did, messagesReadProtocolConfigure.message);
|
|
470
|
-
expect(messagesReadProtocolConfigureReply.status.code).
|
|
471
|
-
expect(messagesReadProtocolConfigureReply.entry).
|
|
472
|
-
expect(messagesReadProtocolConfigureReply.entry.message).
|
|
470
|
+
expect(messagesReadProtocolConfigureReply.status.code).toBe(200);
|
|
471
|
+
expect(messagesReadProtocolConfigureReply.entry).toBeDefined();
|
|
472
|
+
expect(messagesReadProtocolConfigureReply.entry.message).toEqual(protocolsConfig.message);
|
|
473
473
|
// alice RecordsWrite
|
|
474
474
|
const messagesReadWithGrant = yield TestDataGenerator.generateMessagesRead({
|
|
475
475
|
author: bob,
|
|
@@ -477,9 +477,9 @@ export function testMessagesReadHandler() {
|
|
|
477
477
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
478
478
|
});
|
|
479
479
|
const messagesReadWithGrantReply = yield dwn.processMessage(alice.did, messagesReadWithGrant.message);
|
|
480
|
-
expect(messagesReadWithGrantReply.status.code).
|
|
481
|
-
expect(messagesReadWithGrantReply.entry).
|
|
482
|
-
expect(messagesReadWithGrantReply.entry.message).
|
|
480
|
+
expect(messagesReadWithGrantReply.status.code).toBe(200);
|
|
481
|
+
expect(messagesReadWithGrantReply.entry).toBeDefined();
|
|
482
|
+
expect(messagesReadWithGrantReply.entry.message).toEqual(recordsWrite.message);
|
|
483
483
|
// alice RecordsDelete
|
|
484
484
|
const messagesReadDelete = yield TestDataGenerator.generateMessagesRead({
|
|
485
485
|
author: bob,
|
|
@@ -487,9 +487,9 @@ export function testMessagesReadHandler() {
|
|
|
487
487
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
488
488
|
});
|
|
489
489
|
const messagesReadDeleteReply = yield dwn.processMessage(alice.did, messagesReadDelete.message);
|
|
490
|
-
expect(messagesReadDeleteReply.status.code).
|
|
491
|
-
expect(messagesReadDeleteReply.entry).
|
|
492
|
-
expect(messagesReadDeleteReply.entry.message).
|
|
490
|
+
expect(messagesReadDeleteReply.status.code).toBe(200);
|
|
491
|
+
expect(messagesReadDeleteReply.entry).toBeDefined();
|
|
492
|
+
expect(messagesReadDeleteReply.entry.message).toEqual(recordsDelete.message);
|
|
493
493
|
// carol's Permission Request
|
|
494
494
|
const messagesReadCarolRequest = yield TestDataGenerator.generateMessagesRead({
|
|
495
495
|
author: bob,
|
|
@@ -497,9 +497,9 @@ export function testMessagesReadHandler() {
|
|
|
497
497
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
498
498
|
});
|
|
499
499
|
const messagesReadCarolRequestReply = yield dwn.processMessage(alice.did, messagesReadCarolRequest.message);
|
|
500
|
-
expect(messagesReadCarolRequestReply.status.code).
|
|
501
|
-
expect(messagesReadCarolRequestReply.entry).
|
|
502
|
-
expect(messagesReadCarolRequestReply.entry.message).
|
|
500
|
+
expect(messagesReadCarolRequestReply.status.code).toBe(200);
|
|
501
|
+
expect(messagesReadCarolRequestReply.entry).toBeDefined();
|
|
502
|
+
expect(messagesReadCarolRequestReply.entry.message).toEqual(permissionRequestCarol.recordsWrite.message);
|
|
503
503
|
// carol's Permission Grant
|
|
504
504
|
const messagesReadCarolGrant = yield TestDataGenerator.generateMessagesRead({
|
|
505
505
|
author: bob,
|
|
@@ -507,9 +507,9 @@ export function testMessagesReadHandler() {
|
|
|
507
507
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
508
508
|
});
|
|
509
509
|
const messagesReadCarolGrantReply = yield dwn.processMessage(alice.did, messagesReadCarolGrant.message);
|
|
510
|
-
expect(messagesReadCarolGrantReply.status.code).
|
|
511
|
-
expect(messagesReadCarolGrantReply.entry).
|
|
512
|
-
expect(messagesReadCarolGrantReply.entry.message).
|
|
510
|
+
expect(messagesReadCarolGrantReply.status.code).toBe(200);
|
|
511
|
+
expect(messagesReadCarolGrantReply.entry).toBeDefined();
|
|
512
|
+
expect(messagesReadCarolGrantReply.entry.message).toEqual(permissionGrantCarol.recordsWrite.message);
|
|
513
513
|
// carol's RecordsWrite
|
|
514
514
|
const messagesReadCarolRecord = yield TestDataGenerator.generateMessagesRead({
|
|
515
515
|
author: bob,
|
|
@@ -517,9 +517,9 @@ export function testMessagesReadHandler() {
|
|
|
517
517
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
518
518
|
});
|
|
519
519
|
const messagesReadCarolRecordReply = yield dwn.processMessage(alice.did, messagesReadCarolRecord.message);
|
|
520
|
-
expect(messagesReadCarolRecordReply.status.code).
|
|
521
|
-
expect(messagesReadCarolRecordReply.entry).
|
|
522
|
-
expect(messagesReadCarolRecordReply.entry.message).
|
|
520
|
+
expect(messagesReadCarolRecordReply.status.code).toBe(200);
|
|
521
|
+
expect(messagesReadCarolRecordReply.entry).toBeDefined();
|
|
522
|
+
expect(messagesReadCarolRecordReply.entry.message).toEqual(recordsWriteCarol.message);
|
|
523
523
|
// carol's Grant Revocation
|
|
524
524
|
const messagesReadCarolGrantRevocation = yield TestDataGenerator.generateMessagesRead({
|
|
525
525
|
author: bob,
|
|
@@ -527,15 +527,15 @@ export function testMessagesReadHandler() {
|
|
|
527
527
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
528
528
|
});
|
|
529
529
|
const messagesReadCarolGrantRevocationReply = yield dwn.processMessage(alice.did, messagesReadCarolGrantRevocation.message);
|
|
530
|
-
expect(messagesReadCarolGrantRevocationReply.status.code).
|
|
531
|
-
expect(messagesReadCarolGrantRevocationReply.entry).
|
|
532
|
-
expect(messagesReadCarolGrantRevocationReply.entry.message).
|
|
530
|
+
expect(messagesReadCarolGrantRevocationReply.status.code).toBe(200);
|
|
531
|
+
expect(messagesReadCarolGrantRevocationReply.entry).toBeDefined();
|
|
532
|
+
expect(messagesReadCarolGrantRevocationReply.entry.message).toEqual(permissionRevocationCarol.recordsWrite.message);
|
|
533
533
|
// CONTROL: Alice writes a record not associated with the protocol
|
|
534
534
|
const { recordsWrite: recordsWriteControl, dataStream: dataStreamControl } = yield TestDataGenerator.generateRecordsWrite({
|
|
535
535
|
author: alice,
|
|
536
536
|
});
|
|
537
537
|
const recordsWriteControlReply = yield dwn.processMessage(alice.did, recordsWriteControl.message, { dataStream: dataStreamControl });
|
|
538
|
-
expect(recordsWriteControlReply.status.code).
|
|
538
|
+
expect(recordsWriteControlReply.status.code).toBe(202);
|
|
539
539
|
// Bob is unable to read the control message
|
|
540
540
|
const messagesReadControl = yield TestDataGenerator.generateMessagesRead({
|
|
541
541
|
author: bob,
|
|
@@ -543,7 +543,7 @@ export function testMessagesReadHandler() {
|
|
|
543
543
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
544
544
|
});
|
|
545
545
|
const messagesReadControlReply = yield dwn.processMessage(alice.did, messagesReadControl.message);
|
|
546
|
-
expect(messagesReadControlReply.status.code).
|
|
546
|
+
expect(messagesReadControlReply.status.code).toBe(401);
|
|
547
547
|
}));
|
|
548
548
|
it('rejects message read of protocol messages with mismatching protocol grant scopes', () => __awaiter(this, void 0, void 0, function* () {
|
|
549
549
|
// scenario: Alice writes a protocol record. Alice gives Bob a grant to read messages from a different protocol
|
|
@@ -557,7 +557,7 @@ export function testMessagesReadHandler() {
|
|
|
557
557
|
protocolDefinition
|
|
558
558
|
});
|
|
559
559
|
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
560
|
-
expect(protocolsConfigureReply.status.code).
|
|
560
|
+
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
561
561
|
// Alice writes a record which Bob will later try to read
|
|
562
562
|
const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
|
|
563
563
|
author: alice,
|
|
@@ -565,7 +565,7 @@ export function testMessagesReadHandler() {
|
|
|
565
565
|
protocolPath: 'foo',
|
|
566
566
|
});
|
|
567
567
|
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
|
|
568
|
-
expect(recordsWriteReply.status.code).
|
|
568
|
+
expect(recordsWriteReply.status.code).toBe(202);
|
|
569
569
|
// Alice gives Bob a permission grant with scope MessagesRead
|
|
570
570
|
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
571
571
|
signer: Jws.createSigner(alice),
|
|
@@ -579,7 +579,7 @@ export function testMessagesReadHandler() {
|
|
|
579
579
|
});
|
|
580
580
|
const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
581
581
|
const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
|
|
582
|
-
expect(permissionGrantWriteReply.status.code).
|
|
582
|
+
expect(permissionGrantWriteReply.status.code).toBe(202);
|
|
583
583
|
// Bob is unable to read the record using the mismatched permission grant
|
|
584
584
|
const messagesReadWithoutGrant = yield TestDataGenerator.generateMessagesRead({
|
|
585
585
|
author: bob,
|
|
@@ -587,8 +587,8 @@ export function testMessagesReadHandler() {
|
|
|
587
587
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
588
588
|
});
|
|
589
589
|
const messagesReadWithoutGrantReply = yield dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
|
|
590
|
-
expect(messagesReadWithoutGrantReply.status.code).
|
|
591
|
-
expect(messagesReadWithoutGrantReply.status.detail).
|
|
590
|
+
expect(messagesReadWithoutGrantReply.status.code).toBe(401);
|
|
591
|
+
expect(messagesReadWithoutGrantReply.status.detail).toContain(DwnErrorCode.MessagesReadVerifyScopeFailed);
|
|
592
592
|
}));
|
|
593
593
|
it('rejects message if the RecordsWrite message is not found for a RecordsDelete being retrieved', () => __awaiter(this, void 0, void 0, function* () {
|
|
594
594
|
// NOTE: This is a corner case that is unlikely to happen in practice, but is tested for completeness
|
|
@@ -601,7 +601,7 @@ export function testMessagesReadHandler() {
|
|
|
601
601
|
protocolDefinition,
|
|
602
602
|
});
|
|
603
603
|
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
604
|
-
expect(protocolsConfigureReply.status.code).
|
|
604
|
+
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
605
605
|
// Alice gives bob a grant to read messages in the protocol
|
|
606
606
|
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
607
607
|
signer: Jws.createSigner(alice),
|
|
@@ -615,7 +615,7 @@ export function testMessagesReadHandler() {
|
|
|
615
615
|
});
|
|
616
616
|
const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
617
617
|
const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
|
|
618
|
-
expect(permissionGrantWriteReply.status.code).
|
|
618
|
+
expect(permissionGrantWriteReply.status.code).toBe(202);
|
|
619
619
|
// Alice creates the records write and records delete messages
|
|
620
620
|
const { recordsWrite } = yield TestDataGenerator.generateRecordsWrite({
|
|
621
621
|
author: alice,
|
|
@@ -637,8 +637,8 @@ export function testMessagesReadHandler() {
|
|
|
637
637
|
permissionGrantId: permissionGrant.recordsWrite.message.recordId,
|
|
638
638
|
});
|
|
639
639
|
const messagesReadReply = yield dwn.processMessage(alice.did, messagesRead.message);
|
|
640
|
-
expect(messagesReadReply.status.code).
|
|
641
|
-
expect(messagesReadReply.status.detail).
|
|
640
|
+
expect(messagesReadReply.status.code).toBe(401);
|
|
641
|
+
expect(messagesReadReply.status.detail).toContain(DwnErrorCode.RecordsWriteGetNewestWriteRecordNotFound);
|
|
642
642
|
}));
|
|
643
643
|
});
|
|
644
644
|
});
|