@protontech/drive-sdk 0.0.12 → 0.1.0
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/cache/index.d.ts +1 -0
- package/dist/cache/index.js +3 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/memoryCache.d.ts +1 -1
- package/dist/cache/nullCache.d.ts +14 -0
- package/dist/cache/nullCache.js +37 -0
- package/dist/cache/nullCache.js.map +1 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/crypto/openPGPCrypto.js +2 -0
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/eventsGenerator.d.ts +14 -0
- package/dist/diagnostic/eventsGenerator.js +49 -0
- package/dist/diagnostic/eventsGenerator.js.map +1 -0
- package/dist/diagnostic/httpClient.d.ts +16 -0
- package/dist/diagnostic/httpClient.js +81 -0
- package/dist/diagnostic/httpClient.js.map +1 -0
- package/dist/diagnostic/index.d.ts +10 -0
- package/dist/diagnostic/index.js +35 -0
- package/dist/diagnostic/index.js.map +1 -0
- package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
- package/dist/diagnostic/integrityVerificationStream.js +56 -0
- package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
- package/dist/diagnostic/interface.d.ts +102 -0
- package/dist/diagnostic/interface.js +3 -0
- package/dist/diagnostic/interface.js.map +1 -0
- package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
- package/dist/diagnostic/sdkDiagnostic.js +216 -0
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
- package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
- package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
- package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
- package/dist/diagnostic/telemetry.d.ts +25 -0
- package/dist/diagnostic/telemetry.js +70 -0
- package/dist/diagnostic/telemetry.js.map +1 -0
- package/dist/diagnostic/zipGenerators.d.ts +9 -0
- package/dist/diagnostic/zipGenerators.js +64 -0
- package/dist/diagnostic/zipGenerators.js.map +1 -0
- package/dist/diagnostic/zipGenerators.test.js +144 -0
- package/dist/diagnostic/zipGenerators.test.js.map +1 -0
- package/dist/errors.d.ts +8 -3
- package/dist/errors.js +11 -4
- package/dist/errors.js.map +1 -1
- package/dist/interface/config.d.ts +26 -0
- package/dist/interface/config.js +3 -0
- package/dist/interface/config.js.map +1 -0
- package/dist/interface/download.d.ts +2 -2
- package/dist/interface/events.d.ts +60 -20
- package/dist/interface/events.js +11 -1
- package/dist/interface/events.js.map +1 -1
- package/dist/interface/httpClient.d.ts +0 -14
- package/dist/interface/index.d.ts +9 -5
- package/dist/interface/index.js +2 -1
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +21 -1
- package/dist/interface/nodes.js +11 -0
- package/dist/interface/nodes.js.map +1 -1
- package/dist/interface/sharing.d.ts +1 -0
- package/dist/interface/upload.d.ts +57 -3
- package/dist/internal/apiService/driveTypes.d.ts +1341 -465
- package/dist/internal/apiService/errors.js +2 -2
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/transformers.js +2 -0
- package/dist/internal/apiService/transformers.js.map +1 -1
- package/dist/internal/asyncIteratorMap.d.ts +15 -0
- package/dist/internal/asyncIteratorMap.js +59 -0
- package/dist/internal/asyncIteratorMap.js.map +1 -0
- package/dist/internal/asyncIteratorMap.test.js +120 -0
- package/dist/internal/asyncIteratorMap.test.js.map +1 -0
- package/dist/internal/download/apiService.js +32 -31
- package/dist/internal/download/apiService.js.map +1 -1
- package/dist/internal/download/fileDownloader.d.ts +2 -2
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/events/apiService.d.ts +4 -6
- package/dist/internal/events/apiService.js +15 -22
- package/dist/internal/events/apiService.js.map +1 -1
- package/dist/internal/events/coreEventManager.d.ts +7 -10
- package/dist/internal/events/coreEventManager.js +19 -36
- package/dist/internal/events/coreEventManager.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.d.ts +1 -0
- package/dist/internal/events/coreEventManager.test.js +87 -0
- package/dist/internal/events/coreEventManager.test.js.map +1 -0
- package/dist/internal/events/eventManager.d.ts +11 -36
- package/dist/internal/events/eventManager.js +59 -105
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/eventManager.test.js +167 -82
- package/dist/internal/events/eventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +13 -33
- package/dist/internal/events/index.js +56 -72
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +59 -14
- package/dist/internal/events/interface.js +13 -3
- package/dist/internal/events/interface.js.map +1 -1
- package/dist/internal/events/volumeEventManager.d.ts +7 -17
- package/dist/internal/events/volumeEventManager.js +58 -45
- package/dist/internal/events/volumeEventManager.js.map +1 -1
- package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
- package/dist/internal/events/volumeEventManager.test.js +203 -0
- package/dist/internal/events/volumeEventManager.test.js.map +1 -0
- package/dist/internal/nodes/apiService.d.ts +2 -2
- package/dist/internal/nodes/apiService.js +16 -6
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +30 -8
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.d.ts +10 -1
- package/dist/internal/nodes/cache.js +18 -0
- package/dist/internal/nodes/cache.js.map +1 -1
- package/dist/internal/nodes/cache.test.js +1 -0
- package/dist/internal/nodes/cache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +1 -1
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +34 -0
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/events.d.ts +7 -83
- package/dist/internal/nodes/events.js +43 -217
- package/dist/internal/nodes/events.js.map +1 -1
- package/dist/internal/nodes/events.test.js +27 -277
- package/dist/internal/nodes/events.test.js.map +1 -1
- package/dist/internal/nodes/index.d.ts +3 -4
- package/dist/internal/nodes/index.js +5 -5
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +3 -1
- package/dist/internal/nodes/nodesAccess.d.ts +15 -0
- package/dist/internal/nodes/nodesAccess.js +65 -7
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +132 -93
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +1 -3
- package/dist/internal/nodes/nodesManagement.js +12 -26
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +35 -14
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/shares/cache.d.ts +2 -0
- package/dist/internal/shares/cache.js +2 -0
- package/dist/internal/shares/cache.js.map +1 -1
- package/dist/internal/shares/manager.d.ts +1 -0
- package/dist/internal/shares/manager.js +3 -0
- package/dist/internal/shares/manager.js.map +1 -1
- package/dist/internal/sharing/apiService.js +20 -2
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.js +1 -0
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/events.d.ts +23 -55
- package/dist/internal/sharing/events.js +46 -138
- package/dist/internal/sharing/events.js.map +1 -1
- package/dist/internal/sharing/events.test.js +77 -180
- package/dist/internal/sharing/events.test.js.map +1 -1
- package/dist/internal/sharing/index.d.ts +4 -5
- package/dist/internal/sharing/index.js +5 -5
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +3 -0
- package/dist/internal/sharing/sharingManagement.d.ts +2 -3
- package/dist/internal/sharing/sharingManagement.js +7 -9
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +9 -39
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +2 -3
- package/dist/internal/upload/apiService.js +7 -4
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/fileUploader.d.ts +49 -53
- package/dist/internal/upload/fileUploader.js +91 -395
- package/dist/internal/upload/fileUploader.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js +38 -292
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/index.d.ts +5 -5
- package/dist/internal/upload/index.js +23 -44
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +2 -0
- package/dist/internal/upload/manager.d.ts +6 -6
- package/dist/internal/upload/manager.js +32 -66
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +100 -117
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +62 -0
- package/dist/internal/upload/streamUploader.js +440 -0
- package/dist/internal/upload/streamUploader.js.map +1 -0
- package/dist/internal/upload/streamUploader.test.d.ts +1 -0
- package/dist/internal/upload/streamUploader.test.js +358 -0
- package/dist/internal/upload/streamUploader.test.js.map +1 -0
- package/dist/protonDriveClient.d.ts +22 -165
- package/dist/protonDriveClient.js +27 -191
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.js +3 -2
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/package.json +4 -4
- package/src/cache/index.ts +1 -0
- package/src/cache/memoryCache.ts +1 -1
- package/src/cache/nullCache.ts +38 -0
- package/src/config.ts +17 -2
- package/src/crypto/openPGPCrypto.ts +2 -0
- package/src/diagnostic/eventsGenerator.ts +48 -0
- package/src/diagnostic/httpClient.ts +80 -0
- package/src/diagnostic/index.ts +38 -0
- package/src/diagnostic/integrityVerificationStream.ts +56 -0
- package/src/diagnostic/interface.ts +158 -0
- package/src/diagnostic/sdkDiagnostic.ts +238 -0
- package/src/diagnostic/sdkDiagnosticFull.ts +40 -0
- package/src/diagnostic/telemetry.ts +71 -0
- package/src/diagnostic/zipGenerators.test.ts +177 -0
- package/src/diagnostic/zipGenerators.ts +70 -0
- package/src/errors.ts +13 -4
- package/src/interface/config.ts +28 -0
- package/src/interface/download.ts +2 -2
- package/src/interface/events.ts +66 -21
- package/src/interface/httpClient.ts +0 -16
- package/src/interface/index.ts +9 -5
- package/src/interface/nodes.ts +32 -12
- package/src/interface/sharing.ts +1 -0
- package/src/interface/upload.ts +59 -3
- package/src/internal/apiService/driveTypes.ts +1341 -465
- package/src/internal/apiService/errors.ts +3 -2
- package/src/internal/apiService/transformers.ts +2 -0
- package/src/internal/asyncIteratorMap.test.ts +150 -0
- package/src/internal/asyncIteratorMap.ts +64 -0
- package/src/internal/download/apiService.ts +11 -8
- package/src/internal/download/fileDownloader.ts +2 -2
- package/src/internal/events/apiService.ts +25 -28
- package/src/internal/events/coreEventManager.test.ts +101 -0
- package/src/internal/events/coreEventManager.ts +20 -45
- package/src/internal/events/eventManager.test.ts +201 -88
- package/src/internal/events/eventManager.ts +69 -115
- package/src/internal/events/index.ts +54 -84
- package/src/internal/events/interface.ts +70 -15
- package/src/internal/events/volumeEventManager.test.ts +243 -0
- package/src/internal/events/volumeEventManager.ts +55 -53
- package/src/internal/nodes/apiService.test.ts +36 -7
- package/src/internal/nodes/apiService.ts +19 -7
- package/src/internal/nodes/cache.test.ts +1 -0
- package/src/internal/nodes/cache.ts +21 -2
- package/src/internal/nodes/cryptoService.test.ts +38 -0
- package/src/internal/nodes/cryptoService.ts +1 -1
- package/src/internal/nodes/events.test.ts +29 -335
- package/src/internal/nodes/events.ts +45 -253
- package/src/internal/nodes/index.ts +6 -8
- package/src/internal/nodes/interface.ts +6 -3
- package/src/internal/nodes/nodesAccess.test.ts +133 -91
- package/src/internal/nodes/nodesAccess.ts +70 -8
- package/src/internal/nodes/nodesManagement.test.ts +39 -15
- package/src/internal/nodes/nodesManagement.ts +12 -30
- package/src/internal/shares/cache.ts +4 -2
- package/src/internal/shares/manager.ts +9 -5
- package/src/internal/sharing/apiService.ts +25 -2
- package/src/internal/sharing/cache.ts +1 -1
- package/src/internal/sharing/cryptoService.ts +1 -0
- package/src/internal/sharing/events.test.ts +89 -195
- package/src/internal/sharing/events.ts +42 -156
- package/src/internal/sharing/index.ts +6 -9
- package/src/internal/sharing/interface.ts +6 -2
- package/src/internal/sharing/sharingManagement.test.ts +10 -40
- package/src/internal/sharing/sharingManagement.ts +7 -11
- package/src/internal/upload/apiService.ts +5 -6
- package/src/internal/upload/fileUploader.test.ts +46 -376
- package/src/internal/upload/fileUploader.ts +114 -494
- package/src/internal/upload/index.ts +30 -54
- package/src/internal/upload/interface.ts +2 -0
- package/src/internal/upload/manager.test.ts +107 -124
- package/src/internal/upload/manager.ts +48 -80
- package/src/internal/upload/streamUploader.test.ts +468 -0
- package/src/internal/upload/streamUploader.ts +550 -0
- package/src/protonDriveClient.ts +80 -248
- package/src/protonDrivePhotosClient.ts +4 -3
- package/dist/internal/events/cache.d.ts +0 -28
- package/dist/internal/events/cache.js +0 -67
- package/dist/internal/events/cache.js.map +0 -1
- package/dist/internal/events/cache.test.js +0 -43
- package/dist/internal/events/cache.test.js.map +0 -1
- package/dist/internal/nodes/index.test.js +0 -112
- package/dist/internal/nodes/index.test.js.map +0 -1
- package/src/internal/events/cache.test.ts +0 -47
- package/src/internal/events/cache.ts +0 -80
- package/src/internal/nodes/index.test.ts +0 -135
- /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
- /package/dist/internal/{nodes/index.test.d.ts → asyncIteratorMap.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodesAccess.js","sourceRoot":"","sources":["../../../src/internal/nodes/nodesAccess.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodesAccess.js","sourceRoot":"","sources":["../../../src/internal/nodes/nodesAccess.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ describe('nodesAccess', () => {
|
|
|
16
16
|
apiService = {
|
|
17
17
|
getNode: jest.fn(),
|
|
18
18
|
iterateNodes: jest.fn().mockImplementation(async function* (uids) {
|
|
19
|
-
yield* uids.map((uid => ({ uid, parentUid: '
|
|
19
|
+
yield* uids.map((uid => ({ uid, parentUid: 'volumeId~parentNodeId' })));
|
|
20
20
|
}),
|
|
21
21
|
iterateChildrenNodeUids: jest.fn(),
|
|
22
22
|
};
|
|
@@ -40,77 +40,81 @@ describe('nodesAccess', () => {
|
|
|
40
40
|
};
|
|
41
41
|
// @ts-expect-error No need to implement all methods for mocking
|
|
42
42
|
shareService = {
|
|
43
|
+
getMyFilesIDs: jest.fn().mockResolvedValue({ volumeId: 'volumeId' }),
|
|
43
44
|
getSharePrivateKey: jest.fn(),
|
|
44
45
|
};
|
|
45
46
|
access = new nodesAccess_1.NodesAccess((0, logger_1.getMockLogger)(), apiService, cache, cryptoCache, cryptoService, shareService);
|
|
46
47
|
});
|
|
47
48
|
describe('getNode', () => {
|
|
48
49
|
it('should get node from cache', async () => {
|
|
49
|
-
const node = { uid: 'nodeId', isStale: false };
|
|
50
|
+
const node = { uid: 'volumeId~nodeId', isStale: false };
|
|
50
51
|
cache.getNode = jest.fn(() => Promise.resolve(node));
|
|
51
|
-
const result = await access.getNode('nodeId');
|
|
52
|
+
const result = await access.getNode('volumeId~nodeId');
|
|
52
53
|
expect(result).toBe(node);
|
|
53
54
|
expect(apiService.getNode).not.toHaveBeenCalled();
|
|
54
55
|
});
|
|
55
|
-
it('should get node from API when
|
|
56
|
-
const encryptedNode = { uid: 'nodeId', parentUid: '
|
|
57
|
-
const decryptedUnparsedNode = { uid: 'nodeId', parentUid: '
|
|
56
|
+
it('should get node from API when cache is stale', async () => {
|
|
57
|
+
const encryptedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid' };
|
|
58
|
+
const decryptedUnparsedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid', name: { ok: true, value: 'name' } };
|
|
58
59
|
const decryptedNode = {
|
|
59
60
|
...decryptedUnparsedNode,
|
|
60
61
|
name: { ok: true, value: 'name' },
|
|
61
62
|
isStale: false,
|
|
62
63
|
activeRevision: undefined,
|
|
63
64
|
folder: undefined,
|
|
65
|
+
treeEventScopeId: "volumeId",
|
|
64
66
|
};
|
|
65
67
|
const decryptedKeys = { key: 'key' };
|
|
66
|
-
cache.getNode = jest.fn(() => Promise.resolve({ uid: 'nodeId', isStale: true }));
|
|
68
|
+
cache.getNode = jest.fn(() => Promise.resolve({ uid: 'volumeId~nodeId', isStale: true }));
|
|
67
69
|
apiService.getNode = jest.fn(() => Promise.resolve(encryptedNode));
|
|
68
70
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.resolve({ key: 'parentKey' }));
|
|
69
71
|
cryptoService.decryptNode = jest.fn(() => Promise.resolve({ node: decryptedUnparsedNode, keys: decryptedKeys }));
|
|
70
|
-
const result = await access.getNode('nodeId');
|
|
72
|
+
const result = await access.getNode('volumeId~nodeId');
|
|
71
73
|
expect(result).toEqual(decryptedNode);
|
|
72
|
-
expect(apiService.getNode).toHaveBeenCalledWith('nodeId');
|
|
73
|
-
expect(cryptoCache.getNodeKeys).toHaveBeenCalledWith('
|
|
74
|
+
expect(apiService.getNode).toHaveBeenCalledWith('volumeId~nodeId', 'volumeId');
|
|
75
|
+
expect(cryptoCache.getNodeKeys).toHaveBeenCalledWith('volumeId~parentNodeid');
|
|
74
76
|
expect(cryptoService.decryptNode).toHaveBeenCalledWith(encryptedNode, 'parentKey');
|
|
75
77
|
expect(cache.setNode).toHaveBeenCalledWith(decryptedNode);
|
|
76
|
-
expect(cryptoCache.setNodeKeys).toHaveBeenCalledWith('nodeId', decryptedKeys);
|
|
78
|
+
expect(cryptoCache.setNodeKeys).toHaveBeenCalledWith('volumeId~nodeId', decryptedKeys);
|
|
77
79
|
});
|
|
78
80
|
it('should get node from API missing cache', async () => {
|
|
79
|
-
const encryptedNode = { uid: 'nodeId', parentUid: '
|
|
80
|
-
const decryptedUnparsedNode = { uid: 'nodeId', parentUid: '
|
|
81
|
+
const encryptedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid' };
|
|
82
|
+
const decryptedUnparsedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid', name: { ok: true, value: 'name' } };
|
|
81
83
|
const decryptedNode = {
|
|
82
84
|
...decryptedUnparsedNode,
|
|
83
85
|
name: { ok: true, value: 'name' },
|
|
84
86
|
isStale: false,
|
|
85
87
|
activeRevision: undefined,
|
|
86
88
|
folder: undefined,
|
|
89
|
+
treeEventScopeId: 'volumeId',
|
|
87
90
|
};
|
|
88
91
|
const decryptedKeys = { key: 'key' };
|
|
89
92
|
cache.getNode = jest.fn(() => Promise.reject(new Error('Entity not found')));
|
|
90
93
|
apiService.getNode = jest.fn(() => Promise.resolve(encryptedNode));
|
|
91
94
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.resolve({ key: 'parentKey' }));
|
|
92
95
|
cryptoService.decryptNode = jest.fn(() => Promise.resolve({ node: decryptedUnparsedNode, keys: decryptedKeys }));
|
|
93
|
-
const result = await access.getNode('nodeId');
|
|
96
|
+
const result = await access.getNode('volumeId~nodeId');
|
|
94
97
|
expect(result).toEqual(decryptedNode);
|
|
95
|
-
expect(apiService.getNode).toHaveBeenCalledWith('nodeId');
|
|
96
|
-
expect(cryptoCache.getNodeKeys).toHaveBeenCalledWith('
|
|
98
|
+
expect(apiService.getNode).toHaveBeenCalledWith('volumeId~nodeId', 'volumeId');
|
|
99
|
+
expect(cryptoCache.getNodeKeys).toHaveBeenCalledWith('volumeId~parentNodeid');
|
|
97
100
|
expect(cryptoService.decryptNode).toHaveBeenCalledWith(encryptedNode, 'parentKey');
|
|
98
101
|
expect(cache.setNode).toHaveBeenCalledWith(decryptedNode);
|
|
99
|
-
expect(cryptoCache.setNodeKeys).toHaveBeenCalledWith('nodeId', decryptedKeys);
|
|
102
|
+
expect(cryptoCache.setNodeKeys).toHaveBeenCalledWith('volumeId~nodeId', decryptedKeys);
|
|
100
103
|
});
|
|
101
104
|
it('should validate node name', async () => {
|
|
102
|
-
const encryptedNode = { uid: 'nodeId', parentUid: '
|
|
103
|
-
const decryptedUnparsedNode = { uid: 'nodeId', parentUid: '
|
|
105
|
+
const encryptedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid' };
|
|
106
|
+
const decryptedUnparsedNode = { uid: 'volumeId~nodeId', parentUid: 'volumeId~parentNodeid', name: { ok: true, value: 'foo/bar' } };
|
|
104
107
|
const decryptedNode = {
|
|
105
108
|
...decryptedUnparsedNode,
|
|
106
109
|
name: { ok: false, error: { name: 'foo/bar', error: "Name must not contain the character '/'" } },
|
|
110
|
+
treeEventScopeId: 'volumeId',
|
|
107
111
|
};
|
|
108
112
|
const decryptedKeys = { key: 'key' };
|
|
109
113
|
cache.getNode = jest.fn(() => Promise.reject(new Error('Entity not found')));
|
|
110
114
|
apiService.getNode = jest.fn(() => Promise.resolve(encryptedNode));
|
|
111
115
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.resolve({ key: 'parentKey' }));
|
|
112
116
|
cryptoService.decryptNode = jest.fn(() => Promise.resolve({ node: decryptedUnparsedNode, keys: decryptedKeys }));
|
|
113
|
-
const result = await access.getNode('nodeId');
|
|
117
|
+
const result = await access.getNode('volumeId~nodeId');
|
|
114
118
|
expect(result).toMatchObject(decryptedNode);
|
|
115
119
|
});
|
|
116
120
|
});
|
|
@@ -123,11 +127,11 @@ describe('nodesAccess', () => {
|
|
|
123
127
|
}));
|
|
124
128
|
});
|
|
125
129
|
describe('iterateChildren', () => {
|
|
126
|
-
const parentNode = { uid: '
|
|
127
|
-
const node1 = { uid: 'node1', isStale: false };
|
|
128
|
-
const node2 = { uid: 'node2', isStale: false };
|
|
129
|
-
const node3 = { uid: 'node3', isStale: false };
|
|
130
|
-
const node4 = { uid: 'node4', isStale: false };
|
|
130
|
+
const parentNode = { uid: 'volumeId~parentNodeid', isStale: false };
|
|
131
|
+
const node1 = { uid: 'volumeId~node1', isStale: false };
|
|
132
|
+
const node2 = { uid: 'volumeId~node2', isStale: false };
|
|
133
|
+
const node3 = { uid: 'volumeId~node3', isStale: false };
|
|
134
|
+
const node4 = { uid: 'volumeId~node4', isStale: false };
|
|
131
135
|
beforeEach(() => {
|
|
132
136
|
cache.getNode = jest.fn().mockResolvedValue(parentNode);
|
|
133
137
|
});
|
|
@@ -139,7 +143,7 @@ describe('nodesAccess', () => {
|
|
|
139
143
|
yield { ok: true, node: node3 };
|
|
140
144
|
yield { ok: true, node: node4 };
|
|
141
145
|
});
|
|
142
|
-
const result = await Array.fromAsync(access.iterateFolderChildren('
|
|
146
|
+
const result = await Array.fromAsync(access.iterateFolderChildren('volumeId~parentNodeid'));
|
|
143
147
|
expect(result).toMatchObject([node1, node2, node3, node4]);
|
|
144
148
|
expect(apiService.iterateChildrenNodeUids).not.toHaveBeenCalled();
|
|
145
149
|
expect(apiService.iterateNodes).not.toHaveBeenCalled();
|
|
@@ -152,33 +156,33 @@ describe('nodesAccess', () => {
|
|
|
152
156
|
yield { ok: true, uid: node3.uid, node: { ...node3, isStale: true } };
|
|
153
157
|
yield { ok: true, uid: node4.uid, node: node4 };
|
|
154
158
|
});
|
|
155
|
-
const result = await Array.fromAsync(access.iterateFolderChildren('
|
|
159
|
+
const result = await Array.fromAsync(access.iterateFolderChildren('volumeId~parentNodeid'));
|
|
156
160
|
expect(result).toMatchObject([node1, node4, node2, node3]);
|
|
157
|
-
expect(apiService.iterateNodes).toHaveBeenCalledWith([
|
|
161
|
+
expect(apiService.iterateNodes).toHaveBeenCalledWith([node2.uid, node3.uid], 'volumeId', undefined);
|
|
158
162
|
expect(cryptoService.decryptNode).toHaveBeenCalledTimes(2);
|
|
159
163
|
expect(cache.setNode).toHaveBeenCalledTimes(2);
|
|
160
164
|
expect(cryptoCache.setNodeKeys).toHaveBeenCalledTimes(2);
|
|
161
165
|
});
|
|
162
166
|
it('should load children uids and serve nodes from cache', async () => {
|
|
163
167
|
apiService.iterateChildrenNodeUids = jest.fn().mockImplementation(async function* () {
|
|
164
|
-
yield
|
|
165
|
-
yield
|
|
166
|
-
yield
|
|
167
|
-
yield
|
|
168
|
+
yield node1.uid;
|
|
169
|
+
yield node2.uid;
|
|
170
|
+
yield node3.uid;
|
|
171
|
+
yield node4.uid;
|
|
168
172
|
});
|
|
169
173
|
cache.getNode = jest.fn().mockImplementation((uid) => ({ uid, isStale: false }));
|
|
170
|
-
const result = await Array.fromAsync(access.iterateFolderChildren('
|
|
174
|
+
const result = await Array.fromAsync(access.iterateFolderChildren('volumeId~parentNodeid'));
|
|
171
175
|
expect(result).toMatchObject([node1, node2, node3, node4]);
|
|
172
|
-
expect(apiService.iterateChildrenNodeUids).toHaveBeenCalledWith('
|
|
176
|
+
expect(apiService.iterateChildrenNodeUids).toHaveBeenCalledWith('volumeId~parentNodeid', undefined);
|
|
173
177
|
expect(apiService.iterateNodes).not.toHaveBeenCalled();
|
|
174
|
-
expect(cache.setFolderChildrenLoaded).toHaveBeenCalledWith('
|
|
178
|
+
expect(cache.setFolderChildrenLoaded).toHaveBeenCalledWith('volumeId~parentNodeid');
|
|
175
179
|
});
|
|
176
180
|
it('should load from API', async () => {
|
|
177
181
|
apiService.iterateChildrenNodeUids = jest.fn().mockImplementation(async function* () {
|
|
178
|
-
yield
|
|
179
|
-
yield
|
|
180
|
-
yield
|
|
181
|
-
yield
|
|
182
|
+
yield node1.uid;
|
|
183
|
+
yield node2.uid;
|
|
184
|
+
yield node3.uid;
|
|
185
|
+
yield node4.uid;
|
|
182
186
|
});
|
|
183
187
|
cache.getNode = jest.fn().mockImplementation((uid) => {
|
|
184
188
|
if (uid === parentNode.uid) {
|
|
@@ -186,20 +190,20 @@ describe('nodesAccess', () => {
|
|
|
186
190
|
}
|
|
187
191
|
throw new Error('Entity not found');
|
|
188
192
|
});
|
|
189
|
-
const result = await Array.fromAsync(access.iterateFolderChildren('
|
|
193
|
+
const result = await Array.fromAsync(access.iterateFolderChildren('volumeId~parentNodeid'));
|
|
190
194
|
expect(result).toMatchObject([node1, node2, node3, node4]);
|
|
191
|
-
expect(apiService.iterateChildrenNodeUids).toHaveBeenCalledWith('
|
|
192
|
-
expect(apiService.iterateNodes).toHaveBeenCalledWith(['node1', 'node2', 'node3', 'node4'], undefined);
|
|
195
|
+
expect(apiService.iterateChildrenNodeUids).toHaveBeenCalledWith('volumeId~parentNodeid', undefined);
|
|
196
|
+
expect(apiService.iterateNodes).toHaveBeenCalledWith(['volumeId~node1', 'volumeId~node2', 'volumeId~node3', 'volumeId~node4'], 'volumeId', undefined);
|
|
193
197
|
expect(cryptoService.decryptNode).toHaveBeenCalledTimes(4);
|
|
194
198
|
expect(cache.setNode).toHaveBeenCalledTimes(4);
|
|
195
199
|
expect(cryptoCache.setNodeKeys).toHaveBeenCalledTimes(4);
|
|
196
|
-
expect(cache.setFolderChildrenLoaded).toHaveBeenCalledWith('
|
|
200
|
+
expect(cache.setFolderChildrenLoaded).toHaveBeenCalledWith('volumeId~parentNodeid');
|
|
197
201
|
});
|
|
198
202
|
it('should remove from cache if missing on API', async () => {
|
|
199
203
|
apiService.iterateChildrenNodeUids = jest.fn().mockImplementation(async function* () {
|
|
200
|
-
yield
|
|
201
|
-
yield
|
|
202
|
-
yield
|
|
204
|
+
yield node1.uid;
|
|
205
|
+
yield node2.uid;
|
|
206
|
+
yield node3.uid;
|
|
203
207
|
});
|
|
204
208
|
cache.getNode = jest.fn().mockImplementation((uid) => {
|
|
205
209
|
if (uid === parentNode.uid) {
|
|
@@ -211,15 +215,15 @@ describe('nodesAccess', () => {
|
|
|
211
215
|
// Skip first node - make it missing.
|
|
212
216
|
yield* uids.slice(1).map((uid) => ({ uid, parentUid: parentNode.uid }));
|
|
213
217
|
});
|
|
214
|
-
const result = await Array.fromAsync(access.iterateFolderChildren('
|
|
218
|
+
const result = await Array.fromAsync(access.iterateFolderChildren('volumeId~parentNodeid'));
|
|
215
219
|
expect(result).toMatchObject([node2, node3]);
|
|
216
|
-
expect(cache.removeNodes).toHaveBeenCalledWith([
|
|
220
|
+
expect(cache.removeNodes).toHaveBeenCalledWith([node1.uid]);
|
|
217
221
|
});
|
|
218
222
|
it('should yield all decryptable children before throwing error', async () => {
|
|
219
223
|
apiService.iterateChildrenNodeUids = jest.fn().mockImplementation(async function* () {
|
|
220
|
-
yield 'node1';
|
|
221
|
-
yield 'node2';
|
|
222
|
-
yield 'node3';
|
|
224
|
+
yield 'volumeId~node1';
|
|
225
|
+
yield 'volumeId~node2';
|
|
226
|
+
yield 'volumeId~node3';
|
|
223
227
|
});
|
|
224
228
|
cache.getNode = jest.fn().mockImplementation((uid) => {
|
|
225
229
|
if (uid === parentNode.uid) {
|
|
@@ -228,7 +232,7 @@ describe('nodesAccess', () => {
|
|
|
228
232
|
throw new Error('Entity not found');
|
|
229
233
|
});
|
|
230
234
|
cryptoService.decryptNode = jest.fn().mockImplementation((encryptedNode) => {
|
|
231
|
-
if (encryptedNode.uid === 'node2') {
|
|
235
|
+
if (encryptedNode.uid === 'volumeId~node2') {
|
|
232
236
|
throw new errors_1.DecryptionError('Decryption failed');
|
|
233
237
|
}
|
|
234
238
|
return Promise.resolve({
|
|
@@ -236,11 +240,11 @@ describe('nodesAccess', () => {
|
|
|
236
240
|
keys: { key: 'key' },
|
|
237
241
|
});
|
|
238
242
|
});
|
|
239
|
-
const generator = access.iterateFolderChildren('
|
|
243
|
+
const generator = access.iterateFolderChildren('volumeId~parentNodeid');
|
|
240
244
|
const node1 = await generator.next();
|
|
241
|
-
expect(node1.value).toMatchObject({ uid: 'node1' });
|
|
245
|
+
expect(node1.value).toMatchObject({ uid: 'volumeId~node1' });
|
|
242
246
|
const node2 = await generator.next();
|
|
243
|
-
expect(node2.value).toMatchObject({ uid: 'node3' });
|
|
247
|
+
expect(node2.value).toMatchObject({ uid: 'volumeId~node3' });
|
|
244
248
|
const node3 = generator.next();
|
|
245
249
|
await expect(node3).rejects.toThrow('Failed to decrypt some nodes');
|
|
246
250
|
try {
|
|
@@ -255,10 +259,10 @@ describe('nodesAccess', () => {
|
|
|
255
259
|
});
|
|
256
260
|
describe('iterateTrashedNodes', () => {
|
|
257
261
|
const volumeId = 'volumeId';
|
|
258
|
-
const node1 = { uid: 'node1', isStale: false };
|
|
259
|
-
const node2 = { uid: 'node2', isStale: false };
|
|
260
|
-
const node3 = { uid: 'node3', isStale: false };
|
|
261
|
-
const node4 = { uid: 'node4', isStale: false };
|
|
262
|
+
const node1 = { uid: 'volumeId~node1', isStale: false };
|
|
263
|
+
const node2 = { uid: 'volumeId~node2', isStale: false };
|
|
264
|
+
const node3 = { uid: 'volumeId~node3', isStale: false };
|
|
265
|
+
const node4 = { uid: 'volumeId~node4', isStale: false };
|
|
262
266
|
beforeEach(() => {
|
|
263
267
|
shareService.getMyFilesIDs = jest.fn().mockResolvedValue({ volumeId });
|
|
264
268
|
apiService.iterateTrashedNodeUids = jest.fn().mockImplementation(async function* () {
|
|
@@ -282,7 +286,7 @@ describe('nodesAccess', () => {
|
|
|
282
286
|
const result = await Array.fromAsync(access.iterateTrashedNodes());
|
|
283
287
|
expect(result).toMatchObject([node1, node2, node3, node4]);
|
|
284
288
|
expect(apiService.iterateTrashedNodeUids).toHaveBeenCalledWith(volumeId, undefined);
|
|
285
|
-
expect(apiService.iterateNodes).toHaveBeenCalledWith(['node1', 'node2', 'node3', 'node4'], undefined);
|
|
289
|
+
expect(apiService.iterateNodes).toHaveBeenCalledWith(['volumeId~node1', 'volumeId~node2', 'volumeId~node3', 'volumeId~node4'], volumeId, undefined);
|
|
286
290
|
expect(cryptoService.decryptNode).toHaveBeenCalledTimes(4);
|
|
287
291
|
expect(cache.setNode).toHaveBeenCalledTimes(4);
|
|
288
292
|
expect(cryptoCache.setNodeKeys).toHaveBeenCalledTimes(4);
|
|
@@ -293,18 +297,18 @@ describe('nodesAccess', () => {
|
|
|
293
297
|
});
|
|
294
298
|
apiService.iterateNodes = jest.fn().mockImplementation(async function* (uids) {
|
|
295
299
|
// Skip first node - make it missing.
|
|
296
|
-
yield* uids.slice(1).map((uid) => ({ uid, parentUid: '
|
|
300
|
+
yield* uids.slice(1).map((uid) => ({ uid, parentUid: 'volumeId~parentNodeid' }));
|
|
297
301
|
});
|
|
298
302
|
const result = await Array.fromAsync(access.iterateTrashedNodes());
|
|
299
303
|
expect(result).toMatchObject([node2, node3, node4]);
|
|
300
|
-
expect(cache.removeNodes).toHaveBeenCalledWith(['node1']);
|
|
304
|
+
expect(cache.removeNodes).toHaveBeenCalledWith(['volumeId~node1']);
|
|
301
305
|
});
|
|
302
306
|
});
|
|
303
307
|
describe('iterateNodes', () => {
|
|
304
|
-
const node1 = { uid: 'node1', isStale: false };
|
|
305
|
-
const node2 = { uid: 'node2', isStale: false };
|
|
306
|
-
const node3 = { uid: 'node3', isStale: false };
|
|
307
|
-
const node4 = { uid: 'node4', isStale: false };
|
|
308
|
+
const node1 = { uid: 'volumeId~node1', isStale: false, treeEventScopeId: 'volumeId' };
|
|
309
|
+
const node2 = { uid: 'volumeId~node2', isStale: false, treeEventScopeId: 'volumeId' };
|
|
310
|
+
const node3 = { uid: 'volumeId~node3', isStale: false, treeEventScopeId: 'volumeId' };
|
|
311
|
+
const node4 = { uid: 'volume~node4', isStale: false, treeEventScopeId: 'volumeId' };
|
|
308
312
|
it('should serve fully from cache', async () => {
|
|
309
313
|
cache.iterateNodes = jest.fn().mockImplementation(async function* () {
|
|
310
314
|
yield { ok: true, node: node1 };
|
|
@@ -312,67 +316,70 @@ describe('nodesAccess', () => {
|
|
|
312
316
|
yield { ok: true, node: node3 };
|
|
313
317
|
yield { ok: true, node: node4 };
|
|
314
318
|
});
|
|
315
|
-
const result = await Array.fromAsync(access.iterateNodes(['node1', 'node2', 'node3', 'node4']));
|
|
319
|
+
const result = await Array.fromAsync(access.iterateNodes(['volumeId~node1', 'volumeId~node2', 'volumeId~node3', 'volumeId~node4']));
|
|
316
320
|
expect(result).toMatchObject([node1, node2, node3, node4]);
|
|
317
321
|
expect(apiService.iterateNodes).not.toHaveBeenCalled();
|
|
318
322
|
});
|
|
319
323
|
it('should load from API', async () => {
|
|
320
324
|
cache.iterateNodes = jest.fn().mockImplementation(async function* () {
|
|
321
325
|
yield { ok: true, node: node1 };
|
|
322
|
-
yield { ok: false, uid: 'node2' };
|
|
323
|
-
yield { ok: false, uid: 'node3' };
|
|
326
|
+
yield { ok: false, uid: 'volumeId~node2' };
|
|
327
|
+
yield { ok: false, uid: 'volumeId~node3' };
|
|
324
328
|
yield { ok: true, node: node4 };
|
|
325
329
|
});
|
|
326
|
-
const result = await Array.fromAsync(access.iterateNodes(['node1', 'node2', 'node3', 'node4']));
|
|
330
|
+
const result = await Array.fromAsync(access.iterateNodes(['volumeId~node1', 'volumeId~node2', 'volumeId~node3', 'volumeId~node4']));
|
|
327
331
|
expect(result).toMatchObject([node1, node4, node2, node3]);
|
|
328
|
-
expect(apiService.iterateNodes).toHaveBeenCalledWith(['node2', 'node3'], undefined);
|
|
332
|
+
expect(apiService.iterateNodes).toHaveBeenCalledWith(['volumeId~node2', 'volumeId~node3'], 'volumeId', undefined);
|
|
329
333
|
});
|
|
330
334
|
it('should remove from cache if missing on API and return back to caller', async () => {
|
|
331
335
|
cache.iterateNodes = jest.fn().mockImplementation(async function* () {
|
|
332
|
-
yield { ok: false, uid: 'node1' };
|
|
333
|
-
yield { ok: false, uid: 'node2' };
|
|
334
|
-
yield { ok: false, uid: 'node3' };
|
|
336
|
+
yield { ok: false, uid: 'volumeId~node1' };
|
|
337
|
+
yield { ok: false, uid: 'volumeId~node2' };
|
|
338
|
+
yield { ok: false, uid: 'volumeId~node3' };
|
|
335
339
|
});
|
|
336
340
|
apiService.iterateNodes = jest.fn().mockImplementation(async function* (uids) {
|
|
337
341
|
// Skip first node - make it missing.
|
|
338
|
-
yield* uids.slice(1).map((uid) => ({ uid, parentUid: '
|
|
342
|
+
yield* uids.slice(1).map((uid) => ({ uid, parentUid: 'volumeId~parentNodeid' }));
|
|
339
343
|
});
|
|
340
|
-
const result = await Array.fromAsync(access.iterateNodes(['node1', 'node2', 'node3']));
|
|
341
|
-
expect(result).toMatchObject([node2, node3, { missingUid: 'node1' }]);
|
|
342
|
-
expect(cache.removeNodes).toHaveBeenCalledWith(['node1']);
|
|
344
|
+
const result = await Array.fromAsync(access.iterateNodes(['volumeId~node1', 'volumeId~node2', 'volumeId~node3']));
|
|
345
|
+
expect(result).toMatchObject([node2, node3, { missingUid: 'volumeId~node1' }]);
|
|
346
|
+
expect(cache.removeNodes).toHaveBeenCalledWith(['volumeId~node1']);
|
|
343
347
|
});
|
|
344
348
|
it('should return degraded node if parent cannot be decrypted', async () => {
|
|
345
349
|
cache.iterateNodes = jest.fn().mockImplementation(async function* () {
|
|
346
|
-
yield { ok: false, uid: 'node1' };
|
|
347
|
-
yield { ok: false, uid: 'node2' };
|
|
348
|
-
yield { ok: false, uid: 'node3' };
|
|
350
|
+
yield { ok: false, uid: 'volumeId~node1' };
|
|
351
|
+
yield { ok: false, uid: 'volumeId~node2' };
|
|
352
|
+
yield { ok: false, uid: 'volumeId~node3' };
|
|
349
353
|
});
|
|
350
354
|
const encryptedCrypto = {
|
|
351
355
|
signatureEmail: 'signatureEmail',
|
|
352
356
|
nameSignatureEmail: 'nameSignatureEmail',
|
|
353
357
|
};
|
|
354
358
|
apiService.iterateNodes = jest.fn().mockImplementation(async function* (uids) {
|
|
355
|
-
yield* uids.map((uid) =>
|
|
356
|
-
uid,
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
359
|
+
yield* uids.map((uid) => {
|
|
360
|
+
const parentUid = uid.replace('node', 'parentOfNode');
|
|
361
|
+
return {
|
|
362
|
+
uid,
|
|
363
|
+
parentUid,
|
|
364
|
+
encryptedCrypto,
|
|
365
|
+
};
|
|
366
|
+
});
|
|
360
367
|
});
|
|
361
368
|
const decryptionError = new errors_1.DecryptionError('Parent cannot be decrypted');
|
|
362
369
|
jest.spyOn(access, 'getParentKeys').mockImplementation(async ({ parentUid }) => {
|
|
363
|
-
if (parentUid === '
|
|
370
|
+
if (parentUid === 'volumeId~parentOfNode1') {
|
|
364
371
|
throw decryptionError;
|
|
365
372
|
}
|
|
366
373
|
return {
|
|
367
374
|
key: { _idx: 32132 },
|
|
368
375
|
};
|
|
369
376
|
});
|
|
370
|
-
const result = await Array.fromAsync(access.iterateNodes(['node1', 'node2', 'node3']));
|
|
377
|
+
const result = await Array.fromAsync(access.iterateNodes(['volumeId~node1', 'volumeId~node2', 'volumeId~node3']));
|
|
371
378
|
expect(result).toEqual([
|
|
372
379
|
{
|
|
373
380
|
...node1,
|
|
374
381
|
encryptedCrypto,
|
|
375
|
-
parentUid: '
|
|
382
|
+
parentUid: 'volumeId~parentOfNode1',
|
|
376
383
|
name: { ok: false, error: decryptionError },
|
|
377
384
|
keyAuthor: { ok: false, error: { claimedAuthor: 'signatureEmail', error: decryptionError.message } },
|
|
378
385
|
nameAuthor: { ok: false, error: { claimedAuthor: 'nameSignatureEmail', error: decryptionError.message } },
|
|
@@ -403,13 +410,13 @@ describe('nodesAccess', () => {
|
|
|
403
410
|
});
|
|
404
411
|
it('should get node parent keys', async () => {
|
|
405
412
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.resolve({ key: 'parentKey' }));
|
|
406
|
-
const result = await access.getParentKeys({ shareId: undefined, parentUid: '
|
|
413
|
+
const result = await access.getParentKeys({ shareId: undefined, parentUid: 'volumeId~parentNodeid' });
|
|
407
414
|
expect(result).toEqual({ key: 'parentKey' });
|
|
408
415
|
expect(shareService.getSharePrivateKey).not.toHaveBeenCalled();
|
|
409
416
|
});
|
|
410
417
|
it('should get node parent keys even if share is set', async () => {
|
|
411
418
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.resolve({ key: 'parentKey' }));
|
|
412
|
-
const result = await access.getParentKeys({ shareId: 'shareId', parentUid: '
|
|
419
|
+
const result = await access.getParentKeys({ shareId: 'shareId', parentUid: 'volume1~parentNodeid' });
|
|
413
420
|
expect(result).toEqual({ key: 'parentKey' });
|
|
414
421
|
expect(shareService.getSharePrivateKey).not.toHaveBeenCalled();
|
|
415
422
|
});
|
|
@@ -419,7 +426,7 @@ describe('nodesAccess', () => {
|
|
|
419
426
|
cryptoCache.getNodeKeys = jest.fn(() => Promise.reject(new Error('Entity not found')));
|
|
420
427
|
apiService.getNode = jest.fn(() => Promise.reject(new Error('API called')));
|
|
421
428
|
try {
|
|
422
|
-
await access.getNodeKeys('nodeId');
|
|
429
|
+
await access.getNodeKeys('volumeId~nodeId');
|
|
423
430
|
throw new Error('Expected error');
|
|
424
431
|
}
|
|
425
432
|
catch (error) {
|
|
@@ -432,7 +439,7 @@ describe('nodesAccess', () => {
|
|
|
432
439
|
const nodeUid = 'nodeUid';
|
|
433
440
|
const node = {
|
|
434
441
|
uid: nodeUid,
|
|
435
|
-
parentUid: '
|
|
442
|
+
parentUid: 'volume1~parentNodeid',
|
|
436
443
|
encryptedName: 'encryptedName',
|
|
437
444
|
};
|
|
438
445
|
jest.spyOn(access, 'getNode').mockResolvedValue(node);
|
|
@@ -483,5 +490,37 @@ describe('nodesAccess', () => {
|
|
|
483
490
|
expect(result).toBe('https://drive.proton.me/shareId/folder/nodeId');
|
|
484
491
|
});
|
|
485
492
|
});
|
|
493
|
+
describe('notifyNodeChanged', () => {
|
|
494
|
+
it('should mark node as stale', async () => {
|
|
495
|
+
const node = { uid: 'volumeId~nodeId', isStale: false };
|
|
496
|
+
cache.getNode = jest.fn(() => Promise.resolve(node));
|
|
497
|
+
cache.setNode = jest.fn();
|
|
498
|
+
await access.notifyNodeChanged(node.uid);
|
|
499
|
+
expect(cache.getNode).toHaveBeenCalledWith(node.uid);
|
|
500
|
+
expect(cache.setNode).toHaveBeenCalledWith({ ...node, isStale: true });
|
|
501
|
+
});
|
|
502
|
+
it('should update parent if needed', async () => {
|
|
503
|
+
const node = { uid: 'volumeId~nodeId', parentUid: 'v1~pn1', isStale: false };
|
|
504
|
+
cache.getNode = jest.fn(() => Promise.resolve(node));
|
|
505
|
+
cache.setNode = jest.fn();
|
|
506
|
+
await access.notifyNodeChanged(node.uid, 'v1~pn2');
|
|
507
|
+
expect(cache.getNode).toHaveBeenCalledWith(node.uid);
|
|
508
|
+
expect(cache.setNode).toHaveBeenCalledWith({ ...node, parentUid: 'v1~pn2', isStale: true });
|
|
509
|
+
});
|
|
510
|
+
});
|
|
511
|
+
describe('notifyChildCreated', () => {
|
|
512
|
+
it('should reset parent listing', async () => {
|
|
513
|
+
const nodeUid = 'VolumeId1~NodeId1';
|
|
514
|
+
cache.resetFolderChildrenLoaded = jest.fn();
|
|
515
|
+
await access.notifyChildCreated(nodeUid);
|
|
516
|
+
expect(cache.resetFolderChildrenLoaded).toHaveBeenCalledWith(nodeUid);
|
|
517
|
+
});
|
|
518
|
+
});
|
|
519
|
+
describe('notifyNodeDeleted', () => {
|
|
520
|
+
it('should reset parent listing', async () => {
|
|
521
|
+
await access.notifyNodeDeleted('v1~n1');
|
|
522
|
+
expect(cache.removeNodes).toHaveBeenCalledWith(['v1~n1']);
|
|
523
|
+
});
|
|
524
|
+
});
|
|
486
525
|
});
|
|
487
526
|
//# sourceMappingURL=nodesAccess.test.js.map
|