@protontech/drive-sdk 0.2.1 → 0.3.1
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/crypto/interface.d.ts +5 -0
- package/dist/diagnostic/httpClient.d.ts +3 -3
- package/dist/diagnostic/interface.d.ts +26 -29
- package/dist/diagnostic/sdkDiagnostic.js +50 -24
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
- package/dist/errors.d.ts +3 -3
- package/dist/errors.js +7 -7
- package/dist/errors.js.map +1 -1
- package/dist/interface/author.d.ts +1 -1
- package/dist/interface/events.d.ts +1 -1
- package/dist/interface/events.js.map +1 -1
- package/dist/interface/httpClient.d.ts +5 -5
- package/dist/interface/index.d.ts +15 -5
- package/dist/internal/apiService/apiService.js +12 -4
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/errorCodes.d.ts +1 -0
- package/dist/internal/apiService/errorCodes.js.map +1 -1
- package/dist/internal/apiService/errors.d.ts +4 -3
- package/dist/internal/apiService/errors.js +7 -4
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/errors.test.js +2 -1
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +1 -1
- package/dist/internal/nodes/apiService.js +3 -0
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +18 -0
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.js +6 -7
- package/dist/internal/nodes/cryptoCache.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.test.js +4 -7
- package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoService.js +44 -20
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.js +2 -2
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.js +0 -2
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/shares/cryptoCache.d.ts +4 -3
- package/dist/internal/shares/cryptoCache.js +23 -6
- package/dist/internal/shares/cryptoCache.js.map +1 -1
- package/dist/internal/shares/cryptoCache.test.js +3 -2
- package/dist/internal/shares/cryptoCache.test.js.map +1 -1
- package/dist/internal/shares/index.js +1 -1
- package/dist/internal/shares/index.js.map +1 -1
- package/dist/internal/sharing/cryptoService.js +8 -6
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.test.js +13 -0
- package/dist/internal/sharing/cryptoService.test.js.map +1 -1
- package/dist/internal/sharing/index.js +1 -1
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +0 -4
- package/dist/internal/sharing/sharingAccess.d.ts +1 -0
- package/dist/internal/sharing/sharingAccess.js +6 -1
- package/dist/internal/sharing/sharingAccess.js.map +1 -1
- package/dist/internal/sharing/sharingAccess.test.js +3 -3
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +3 -1
- package/dist/internal/sharing/sharingManagement.js +37 -17
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +61 -14
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/sharingPublic/apiService.d.ts +19 -0
- package/dist/internal/sharingPublic/apiService.js +134 -0
- package/dist/internal/sharingPublic/apiService.js.map +1 -0
- package/dist/internal/sharingPublic/cryptoCache.d.ts +19 -0
- package/dist/internal/sharingPublic/cryptoCache.js +72 -0
- package/dist/internal/sharingPublic/cryptoCache.js.map +1 -0
- package/dist/internal/sharingPublic/cryptoService.d.ts +23 -0
- package/dist/internal/sharingPublic/cryptoService.js +120 -0
- package/dist/internal/sharingPublic/cryptoService.js.map +1 -0
- package/dist/internal/sharingPublic/index.d.ts +15 -0
- package/dist/internal/sharingPublic/index.js +27 -0
- package/dist/internal/sharingPublic/index.js.map +1 -0
- package/dist/internal/sharingPublic/interface.d.ts +48 -0
- package/dist/internal/sharingPublic/interface.js +3 -0
- package/dist/internal/sharingPublic/interface.js.map +1 -0
- package/dist/internal/sharingPublic/manager.d.ts +19 -0
- package/dist/internal/sharingPublic/manager.js +79 -0
- package/dist/internal/sharingPublic/manager.js.map +1 -0
- package/dist/internal/sharingPublic/session/apiService.d.ts +28 -0
- package/dist/internal/sharingPublic/session/apiService.js +55 -0
- package/dist/internal/sharingPublic/session/apiService.js.map +1 -0
- package/dist/internal/sharingPublic/session/httpClient.d.ts +16 -0
- package/dist/internal/sharingPublic/session/httpClient.js +41 -0
- package/dist/internal/sharingPublic/session/httpClient.js.map +1 -0
- package/dist/internal/sharingPublic/session/index.d.ts +1 -0
- package/dist/internal/sharingPublic/session/index.js +6 -0
- package/dist/internal/sharingPublic/session/index.js.map +1 -0
- package/dist/internal/sharingPublic/session/interface.d.ts +18 -0
- package/dist/internal/sharingPublic/session/interface.js +3 -0
- package/dist/internal/sharingPublic/session/interface.js.map +1 -0
- package/dist/internal/sharingPublic/session/manager.d.ts +49 -0
- package/dist/internal/sharingPublic/session/manager.js +75 -0
- package/dist/internal/sharingPublic/session/manager.js.map +1 -0
- package/dist/internal/sharingPublic/session/session.d.ts +34 -0
- package/dist/internal/sharingPublic/session/session.js +67 -0
- package/dist/internal/sharingPublic/session/session.js.map +1 -0
- package/dist/internal/sharingPublic/session/url.d.ts +12 -0
- package/dist/internal/sharingPublic/session/url.js +23 -0
- package/dist/internal/sharingPublic/session/url.js.map +1 -0
- package/dist/internal/sharingPublic/session/url.test.d.ts +1 -0
- package/dist/internal/sharingPublic/session/url.test.js +59 -0
- package/dist/internal/sharingPublic/session/url.test.js.map +1 -0
- package/dist/internal/upload/manager.js +1 -3
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +2 -2
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/protonDriveClient.d.ts +25 -10
- package/dist/protonDriveClient.js +44 -22
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +48 -0
- package/dist/protonDrivePublicLinkClient.js +71 -0
- package/dist/protonDrivePublicLinkClient.js.map +1 -0
- package/package.json +1 -1
- package/src/crypto/interface.ts +11 -0
- package/src/diagnostic/httpClient.ts +4 -4
- package/src/diagnostic/interface.ts +27 -29
- package/src/diagnostic/sdkDiagnostic.ts +58 -30
- package/src/errors.ts +5 -5
- package/src/interface/author.ts +1 -1
- package/src/interface/events.ts +1 -7
- package/src/interface/httpClient.ts +5 -5
- package/src/interface/index.ts +18 -6
- package/src/internal/apiService/apiService.ts +13 -4
- package/src/internal/apiService/errorCodes.ts +1 -0
- package/src/internal/apiService/errors.test.ts +2 -1
- package/src/internal/apiService/errors.ts +15 -4
- package/src/internal/events/index.ts +1 -1
- package/src/internal/nodes/apiService.test.ts +28 -0
- package/src/internal/nodes/apiService.ts +3 -0
- package/src/internal/nodes/cryptoCache.test.ts +4 -7
- package/src/internal/nodes/cryptoCache.ts +6 -7
- package/src/internal/nodes/cryptoService.ts +68 -34
- package/src/internal/nodes/interface.ts +2 -0
- package/src/internal/nodes/nodesAccess.ts +2 -2
- package/src/internal/nodes/nodesManagement.ts +0 -3
- package/src/internal/shares/cryptoCache.test.ts +3 -2
- package/src/internal/shares/cryptoCache.ts +26 -7
- package/src/internal/shares/index.ts +1 -1
- package/src/internal/sharing/cryptoService.test.ts +22 -1
- package/src/internal/sharing/cryptoService.ts +8 -6
- package/src/internal/sharing/index.ts +1 -0
- package/src/internal/sharing/interface.ts +0 -4
- package/src/internal/sharing/sharingAccess.test.ts +4 -4
- package/src/internal/sharing/sharingAccess.ts +6 -0
- package/src/internal/sharing/sharingManagement.test.ts +87 -24
- package/src/internal/sharing/sharingManagement.ts +56 -16
- package/src/internal/sharingPublic/apiService.ts +164 -0
- package/src/internal/sharingPublic/cryptoCache.ts +79 -0
- package/src/internal/sharingPublic/cryptoService.ts +162 -0
- package/src/internal/sharingPublic/index.ts +40 -0
- package/src/internal/sharingPublic/interface.ts +59 -0
- package/src/internal/sharingPublic/manager.ts +85 -0
- package/src/internal/sharingPublic/session/apiService.ts +74 -0
- package/src/internal/sharingPublic/session/httpClient.ts +48 -0
- package/src/internal/sharingPublic/session/index.ts +1 -0
- package/src/internal/sharingPublic/session/interface.ts +20 -0
- package/src/internal/sharingPublic/session/manager.ts +97 -0
- package/src/internal/sharingPublic/session/session.ts +78 -0
- package/src/internal/sharingPublic/session/url.test.ts +72 -0
- package/src/internal/sharingPublic/session/url.ts +23 -0
- package/src/internal/upload/manager.test.ts +2 -2
- package/src/internal/upload/manager.ts +2 -4
- package/src/protonDriveClient.ts +64 -27
- package/src/protonDrivePublicLinkClient.ts +121 -0
|
@@ -16,19 +16,22 @@ const cryptoService_1 = require("./cryptoService");
|
|
|
16
16
|
class SharingManagement {
|
|
17
17
|
logger;
|
|
18
18
|
apiService;
|
|
19
|
+
cache;
|
|
19
20
|
cryptoService;
|
|
20
21
|
account;
|
|
21
22
|
sharesService;
|
|
22
23
|
nodesService;
|
|
23
|
-
constructor(logger, apiService, cryptoService, account, sharesService, nodesService) {
|
|
24
|
+
constructor(logger, apiService, cache, cryptoService, account, sharesService, nodesService) {
|
|
24
25
|
this.logger = logger;
|
|
25
26
|
this.apiService = apiService;
|
|
27
|
+
this.cache = cache;
|
|
26
28
|
this.cryptoService = cryptoService;
|
|
27
29
|
this.account = account;
|
|
28
30
|
this.sharesService = sharesService;
|
|
29
31
|
this.nodesService = nodesService;
|
|
30
32
|
this.logger = logger;
|
|
31
33
|
this.apiService = apiService;
|
|
34
|
+
this.cache = cache;
|
|
32
35
|
this.cryptoService = cryptoService;
|
|
33
36
|
this.account = account;
|
|
34
37
|
this.sharesService = sharesService;
|
|
@@ -101,18 +104,23 @@ class SharingManagement {
|
|
|
101
104
|
settings.publicLink.expiration < new Date()) {
|
|
102
105
|
throw new errors_1.ValidationError((0, ttag_1.c)('Error').t `Expiration date cannot be in the past`);
|
|
103
106
|
}
|
|
107
|
+
let contextShareAddress;
|
|
104
108
|
let currentSharing = await this.getInternalSharingInfo(nodeUid);
|
|
105
|
-
if (
|
|
109
|
+
if (currentSharing) {
|
|
110
|
+
contextShareAddress = await this.nodesService.getRootNodeEmailKey(nodeUid);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
106
113
|
const node = await this.nodesService.getNode(nodeUid);
|
|
107
|
-
const
|
|
114
|
+
const result = await this.createShare(nodeUid);
|
|
108
115
|
currentSharing = {
|
|
109
|
-
share,
|
|
116
|
+
share: result.share,
|
|
110
117
|
nodeName: node.name.ok ? node.name.value : node.name.error.name,
|
|
111
118
|
protonInvitations: [],
|
|
112
119
|
nonProtonInvitations: [],
|
|
113
120
|
members: [],
|
|
114
121
|
publicLink: undefined,
|
|
115
122
|
};
|
|
123
|
+
contextShareAddress = result.contextShareAddress;
|
|
116
124
|
}
|
|
117
125
|
const emailOptions = {
|
|
118
126
|
message: settings.emailOptions?.message,
|
|
@@ -143,7 +151,7 @@ class SharingManagement {
|
|
|
143
151
|
continue;
|
|
144
152
|
}
|
|
145
153
|
this.logger.info(`Inviting user ${email} with role ${role} to node ${nodeUid}`);
|
|
146
|
-
const invitation = await this.inviteProtonUser(currentSharing.share, email, role, emailOptions);
|
|
154
|
+
const invitation = await this.inviteProtonUser(contextShareAddress, currentSharing.share, email, role, emailOptions);
|
|
147
155
|
currentSharing.protonInvitations.push(invitation);
|
|
148
156
|
}
|
|
149
157
|
for (const user of nonProtonUsers) {
|
|
@@ -171,7 +179,7 @@ class SharingManagement {
|
|
|
171
179
|
continue;
|
|
172
180
|
}
|
|
173
181
|
this.logger.info(`Inviting external user ${email} with role ${role} to node ${nodeUid}`);
|
|
174
|
-
const invitation = await this.inviteExternalUser(currentSharing.share, email, role, emailOptions);
|
|
182
|
+
const invitation = await this.inviteExternalUser(contextShareAddress, currentSharing.share, email, role, emailOptions);
|
|
175
183
|
currentSharing.nonProtonInvitations.push(invitation);
|
|
176
184
|
}
|
|
177
185
|
if (settings.publicLink) {
|
|
@@ -182,7 +190,7 @@ class SharingManagement {
|
|
|
182
190
|
}
|
|
183
191
|
else {
|
|
184
192
|
this.logger.info(`Sharing via public link with role ${options.role} to node ${nodeUid}`);
|
|
185
|
-
currentSharing.publicLink = await this.shareViaLink(currentSharing.share, options);
|
|
193
|
+
currentSharing.publicLink = await this.shareViaLink(contextShareAddress, currentSharing.share, options);
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
196
|
return {
|
|
@@ -302,19 +310,33 @@ class SharingManagement {
|
|
|
302
310
|
base64NameKeyPacket: keys.base64NameKeyPacket,
|
|
303
311
|
});
|
|
304
312
|
await this.nodesService.notifyNodeChanged(nodeUid);
|
|
305
|
-
|
|
313
|
+
if (await this.cache.hasSharedByMeNodeUidsLoaded()) {
|
|
314
|
+
await this.cache.addSharedByMeNodeUid(nodeUid);
|
|
315
|
+
}
|
|
316
|
+
const share = {
|
|
306
317
|
volumeId,
|
|
307
318
|
shareId,
|
|
308
319
|
creatorEmail: email,
|
|
309
320
|
passphraseSessionKey: keys.shareKey.decrypted.passphraseSessionKey,
|
|
310
321
|
};
|
|
322
|
+
const contextShareAddress = {
|
|
323
|
+
email,
|
|
324
|
+
addressId,
|
|
325
|
+
addressKey,
|
|
326
|
+
};
|
|
327
|
+
return {
|
|
328
|
+
share,
|
|
329
|
+
contextShareAddress,
|
|
330
|
+
};
|
|
311
331
|
}
|
|
312
332
|
async deleteShare(shareId, nodeUid) {
|
|
313
333
|
await this.apiService.deleteShare(shareId);
|
|
314
334
|
await this.nodesService.notifyNodeChanged(nodeUid);
|
|
335
|
+
if (await this.cache.hasSharedByMeNodeUidsLoaded()) {
|
|
336
|
+
await this.cache.removeSharedByMeNodeUid(nodeUid);
|
|
337
|
+
}
|
|
315
338
|
}
|
|
316
|
-
async inviteProtonUser(share, inviteeEmail, role, emailOptions) {
|
|
317
|
-
const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
|
|
339
|
+
async inviteProtonUser(inviter, share, inviteeEmail, role, emailOptions) {
|
|
318
340
|
const invitationCrypto = await this.cryptoService.encryptInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
|
|
319
341
|
const encryptedInvitation = await this.apiService.inviteProtonUser(share.shareId, {
|
|
320
342
|
addedByEmail: inviter.email,
|
|
@@ -348,8 +370,7 @@ class SharingManagement {
|
|
|
348
370
|
async deleteInvitation(invitationUid) {
|
|
349
371
|
await this.apiService.deleteInvitation(invitationUid);
|
|
350
372
|
}
|
|
351
|
-
async inviteExternalUser(share, inviteeEmail, role, emailOptions) {
|
|
352
|
-
const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
|
|
373
|
+
async inviteExternalUser(inviter, share, inviteeEmail, role, emailOptions) {
|
|
353
374
|
const invitationCrypto = await this.cryptoService.encryptExternalInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
|
|
354
375
|
const encryptedInvitation = await this.apiService.inviteExternalUser(share.shareId, {
|
|
355
376
|
inviterAddressId: inviter.addressId,
|
|
@@ -381,13 +402,12 @@ class SharingManagement {
|
|
|
381
402
|
async updateMember(memberUid, role) {
|
|
382
403
|
await this.apiService.updateMember(memberUid, { role });
|
|
383
404
|
}
|
|
384
|
-
async shareViaLink(share, options) {
|
|
385
|
-
const { email: creatorEmail } = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
|
|
405
|
+
async shareViaLink(inviter, share, options) {
|
|
386
406
|
const generatedPassword = await this.cryptoService.generatePublicLinkPassword();
|
|
387
407
|
const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
|
|
388
|
-
const { crypto, srp } = await this.cryptoService.encryptPublicLink(
|
|
408
|
+
const { crypto, srp } = await this.cryptoService.encryptPublicLink(inviter.email, share.passphraseSessionKey, password);
|
|
389
409
|
const publicLink = await this.apiService.createPublicLink(share.shareId, {
|
|
390
|
-
creatorEmail,
|
|
410
|
+
creatorEmail: inviter.email,
|
|
391
411
|
role: options.role,
|
|
392
412
|
includesCustomPassword: !!options.customPassword,
|
|
393
413
|
expirationTime: options.expiration ? Math.floor(options.expiration.getTime() / 1000) : undefined,
|
|
@@ -402,7 +422,7 @@ class SharingManagement {
|
|
|
402
422
|
customPassword: options.customPassword,
|
|
403
423
|
expirationTime: options.expiration,
|
|
404
424
|
numberOfInitializedDownloads: 0,
|
|
405
|
-
creatorEmail,
|
|
425
|
+
creatorEmail: inviter.email,
|
|
406
426
|
};
|
|
407
427
|
}
|
|
408
428
|
async updateSharedLink(share, publicLink, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharingManagement.js","sourceRoot":"","sources":["../../../src/internal/sharing/sharingManagement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sharingManagement.js","sourceRoot":"","sources":["../../../src/internal/sharing/sharingManagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const interface_1 = require("../../interface");
|
|
|
5
5
|
const sharingManagement_1 = require("./sharingManagement");
|
|
6
6
|
describe('SharingManagement', () => {
|
|
7
7
|
let apiService;
|
|
8
|
+
let cache;
|
|
8
9
|
let cryptoService;
|
|
9
10
|
let accountService;
|
|
10
11
|
let sharesService;
|
|
@@ -44,10 +45,14 @@ describe('SharingManagement', () => {
|
|
|
44
45
|
updatePublicLink: jest.fn(),
|
|
45
46
|
};
|
|
46
47
|
// @ts-expect-error No need to implement all methods for mocking
|
|
48
|
+
cache = {
|
|
49
|
+
hasSharedByMeNodeUidsLoaded: jest.fn().mockResolvedValue(true),
|
|
50
|
+
addSharedByMeNodeUid: jest.fn(),
|
|
51
|
+
removeSharedByMeNodeUid: jest.fn(),
|
|
52
|
+
};
|
|
53
|
+
// @ts-expect-error No need to implement all methods for mocking
|
|
47
54
|
cryptoService = {
|
|
48
|
-
generateShareKeys: jest
|
|
49
|
-
.fn()
|
|
50
|
-
.mockResolvedValue({
|
|
55
|
+
generateShareKeys: jest.fn().mockResolvedValue({
|
|
51
56
|
shareKey: { encrypted: 'encrypted-key', decrypted: { passphraseSessionKey: 'pass-session-key' } },
|
|
52
57
|
}),
|
|
53
58
|
decryptShare: jest.fn().mockImplementation((share) => share),
|
|
@@ -57,7 +62,7 @@ describe('SharingManagement', () => {
|
|
|
57
62
|
encryptInvitation: jest.fn().mockImplementation(() => { }),
|
|
58
63
|
encryptExternalInvitation: jest.fn().mockImplementation((invitation) => ({
|
|
59
64
|
...invitation,
|
|
60
|
-
base64ExternalInvitationSignature: '
|
|
65
|
+
base64ExternalInvitationSignature: 'external-signature',
|
|
61
66
|
})),
|
|
62
67
|
decryptPublicLink: jest.fn().mockImplementation((publicLink) => publicLink),
|
|
63
68
|
generatePublicLinkPassword: jest.fn().mockResolvedValue('generatedPassword'),
|
|
@@ -72,17 +77,12 @@ describe('SharingManagement', () => {
|
|
|
72
77
|
};
|
|
73
78
|
// @ts-expect-error No need to implement all methods for mocking
|
|
74
79
|
sharesService = {
|
|
75
|
-
loadEncryptedShare: jest
|
|
76
|
-
.fn()
|
|
77
|
-
.mockResolvedValue({
|
|
80
|
+
loadEncryptedShare: jest.fn().mockResolvedValue({
|
|
78
81
|
id: 'shareId',
|
|
79
82
|
addressId: 'addressId',
|
|
80
83
|
creatorEmail: 'address@example.com',
|
|
81
84
|
passphraseSessionKey: 'sharePassphraseSessionKey',
|
|
82
85
|
}),
|
|
83
|
-
getContextShareMemberEmailKey: jest
|
|
84
|
-
.fn()
|
|
85
|
-
.mockResolvedValue({ email: 'volume-email', addressId: 'addressId', addressKey: 'volume-key' }),
|
|
86
86
|
};
|
|
87
87
|
// @ts-expect-error No need to implement all methods for mocking
|
|
88
88
|
nodesService = {
|
|
@@ -94,7 +94,7 @@ describe('SharingManagement', () => {
|
|
|
94
94
|
getRootNodeEmailKey: jest.fn().mockResolvedValue({ email: 'volume-email', addressKey: 'volume-key' }),
|
|
95
95
|
notifyNodeChanged: jest.fn(),
|
|
96
96
|
};
|
|
97
|
-
sharingManagement = new sharingManagement_1.SharingManagement((0, logger_1.getMockLogger)(), apiService, cryptoService, accountService, sharesService, nodesService);
|
|
97
|
+
sharingManagement = new sharingManagement_1.SharingManagement((0, logger_1.getMockLogger)(), apiService, cache, cryptoService, accountService, sharesService, nodesService);
|
|
98
98
|
});
|
|
99
99
|
describe('getSharingInfo', () => {
|
|
100
100
|
it('should return empty sharing info for unshared node', async () => {
|
|
@@ -159,9 +159,7 @@ describe('SharingManagement', () => {
|
|
|
159
159
|
describe('shareNode with share creation', () => {
|
|
160
160
|
const nodeUid = 'volumeId~nodeUid';
|
|
161
161
|
it('should create share if no exists', async () => {
|
|
162
|
-
nodesService.getNode = jest
|
|
163
|
-
.fn()
|
|
164
|
-
.mockImplementation((nodeUid) => ({
|
|
162
|
+
nodesService.getNode = jest.fn().mockImplementation((nodeUid) => ({
|
|
165
163
|
nodeUid,
|
|
166
164
|
parentUid: 'parentUid',
|
|
167
165
|
name: { ok: true, value: 'name' },
|
|
@@ -184,6 +182,7 @@ describe('SharingManagement', () => {
|
|
|
184
182
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
185
183
|
expect(apiService.inviteProtonUser).toHaveBeenCalled();
|
|
186
184
|
expect(nodesService.notifyNodeChanged).toHaveBeenCalledWith(nodeUid);
|
|
185
|
+
expect(cache.addSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
|
|
187
186
|
});
|
|
188
187
|
});
|
|
189
188
|
describe('shareNode with share re-use', () => {
|
|
@@ -240,6 +239,7 @@ describe('SharingManagement', () => {
|
|
|
240
239
|
});
|
|
241
240
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
242
241
|
expect(apiService.inviteProtonUser).toHaveBeenCalled();
|
|
242
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
243
243
|
});
|
|
244
244
|
it('should share node with proton email with specific role', async () => {
|
|
245
245
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -261,6 +261,7 @@ describe('SharingManagement', () => {
|
|
|
261
261
|
});
|
|
262
262
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
263
263
|
expect(apiService.inviteProtonUser).toHaveBeenCalled();
|
|
264
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
264
265
|
});
|
|
265
266
|
it('should update existing role', async () => {
|
|
266
267
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -279,6 +280,7 @@ describe('SharingManagement', () => {
|
|
|
279
280
|
});
|
|
280
281
|
expect(apiService.updateInvitation).toHaveBeenCalled();
|
|
281
282
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
283
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
282
284
|
});
|
|
283
285
|
it('should be no-op if no change', async () => {
|
|
284
286
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -292,6 +294,18 @@ describe('SharingManagement', () => {
|
|
|
292
294
|
});
|
|
293
295
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
294
296
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
297
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
298
|
+
});
|
|
299
|
+
it('should use address from the root node context share', async () => {
|
|
300
|
+
nodesService.getRootNodeEmailKey = jest
|
|
301
|
+
.fn()
|
|
302
|
+
.mockResolvedValue({ email: 'my-volume-email', addressKey: 'my-volume-key' });
|
|
303
|
+
await sharingManagement.shareNode(nodeUid, { users: ['email'] });
|
|
304
|
+
expect(apiService.inviteProtonUser).toHaveBeenCalledWith('shareId', {
|
|
305
|
+
addedByEmail: 'my-volume-email',
|
|
306
|
+
inviteeEmail: 'email',
|
|
307
|
+
role: 'viewer',
|
|
308
|
+
}, expect.anything());
|
|
295
309
|
});
|
|
296
310
|
});
|
|
297
311
|
describe('external invitations', () => {
|
|
@@ -317,6 +331,7 @@ describe('SharingManagement', () => {
|
|
|
317
331
|
});
|
|
318
332
|
expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
|
|
319
333
|
expect(apiService.inviteExternalUser).toHaveBeenCalled();
|
|
334
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
320
335
|
});
|
|
321
336
|
it('should share node with external email with specific role', async () => {
|
|
322
337
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -339,6 +354,7 @@ describe('SharingManagement', () => {
|
|
|
339
354
|
});
|
|
340
355
|
expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
|
|
341
356
|
expect(apiService.inviteExternalUser).toHaveBeenCalled();
|
|
357
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
342
358
|
});
|
|
343
359
|
it('should update existing role', async () => {
|
|
344
360
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -357,6 +373,7 @@ describe('SharingManagement', () => {
|
|
|
357
373
|
});
|
|
358
374
|
expect(apiService.updateExternalInvitation).toHaveBeenCalled();
|
|
359
375
|
expect(apiService.inviteExternalUser).not.toHaveBeenCalled();
|
|
376
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
360
377
|
});
|
|
361
378
|
it('should be no-op if no change', async () => {
|
|
362
379
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -370,6 +387,21 @@ describe('SharingManagement', () => {
|
|
|
370
387
|
});
|
|
371
388
|
expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
|
|
372
389
|
expect(apiService.inviteExternalUser).not.toHaveBeenCalled();
|
|
390
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
391
|
+
});
|
|
392
|
+
it('should use address from the root node context share', async () => {
|
|
393
|
+
nodesService.getRootNodeEmailKey = jest.fn().mockResolvedValue({
|
|
394
|
+
email: 'my-volume-email',
|
|
395
|
+
addressId: 'my-volume-addressId',
|
|
396
|
+
addressKey: 'my-volume-key',
|
|
397
|
+
});
|
|
398
|
+
await sharingManagement.shareNode(nodeUid, { users: ['email'] });
|
|
399
|
+
expect(apiService.inviteExternalUser).toHaveBeenCalledWith('shareId', {
|
|
400
|
+
inviterAddressId: 'my-volume-addressId',
|
|
401
|
+
inviteeEmail: 'email',
|
|
402
|
+
role: 'viewer',
|
|
403
|
+
base64Signature: 'external-signature',
|
|
404
|
+
}, expect.anything());
|
|
373
405
|
});
|
|
374
406
|
});
|
|
375
407
|
describe('mix of internal and external invitations', () => {
|
|
@@ -408,6 +440,7 @@ describe('SharingManagement', () => {
|
|
|
408
440
|
expect(apiService.inviteExternalUser).toHaveBeenCalledWith('shareId', expect.objectContaining({
|
|
409
441
|
inviteeEmail: 'email2',
|
|
410
442
|
}), expect.anything());
|
|
443
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
411
444
|
});
|
|
412
445
|
});
|
|
413
446
|
describe('members', () => {
|
|
@@ -429,6 +462,7 @@ describe('SharingManagement', () => {
|
|
|
429
462
|
expect(apiService.updateMember).toHaveBeenCalled();
|
|
430
463
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
431
464
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
465
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
432
466
|
});
|
|
433
467
|
it('should be no-op if no change via proton user', async () => {
|
|
434
468
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -443,6 +477,7 @@ describe('SharingManagement', () => {
|
|
|
443
477
|
expect(apiService.updateMember).not.toHaveBeenCalled();
|
|
444
478
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
445
479
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
480
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
446
481
|
});
|
|
447
482
|
it('should update member via non-proton user', async () => {
|
|
448
483
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -462,6 +497,7 @@ describe('SharingManagement', () => {
|
|
|
462
497
|
expect(apiService.updateMember).toHaveBeenCalled();
|
|
463
498
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
464
499
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
500
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
465
501
|
});
|
|
466
502
|
it('should be no-op if no change via non-proton user', async () => {
|
|
467
503
|
const sharingInfo = await sharingManagement.shareNode(nodeUid, {
|
|
@@ -476,6 +512,7 @@ describe('SharingManagement', () => {
|
|
|
476
512
|
expect(apiService.updateMember).not.toHaveBeenCalled();
|
|
477
513
|
expect(apiService.updateInvitation).not.toHaveBeenCalled();
|
|
478
514
|
expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
|
|
515
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
479
516
|
});
|
|
480
517
|
});
|
|
481
518
|
describe('public link', () => {
|
|
@@ -513,6 +550,7 @@ describe('SharingManagement', () => {
|
|
|
513
550
|
crypto: 'publicLinkCrypto',
|
|
514
551
|
srp: 'publicLinkSrp',
|
|
515
552
|
}));
|
|
553
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
516
554
|
});
|
|
517
555
|
it('should share node with custom password and expiration', async () => {
|
|
518
556
|
jest.useFakeTimers();
|
|
@@ -548,6 +586,7 @@ describe('SharingManagement', () => {
|
|
|
548
586
|
crypto: 'publicLinkCrypto',
|
|
549
587
|
srp: 'publicLinkSrp',
|
|
550
588
|
}));
|
|
589
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
551
590
|
});
|
|
552
591
|
it('should update public link with custom password and expiration', async () => {
|
|
553
592
|
jest.useFakeTimers();
|
|
@@ -591,6 +630,7 @@ describe('SharingManagement', () => {
|
|
|
591
630
|
crypto: 'publicLinkCrypto',
|
|
592
631
|
srp: 'publicLinkSrp',
|
|
593
632
|
}));
|
|
633
|
+
expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
594
634
|
});
|
|
595
635
|
it('should not allow updating legacy public link', async () => {
|
|
596
636
|
apiService.getPublicLink = jest.fn().mockResolvedValue({
|
|
@@ -678,6 +718,7 @@ describe('SharingManagement', () => {
|
|
|
678
718
|
expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
|
|
679
719
|
expect(apiService.removeMember).not.toHaveBeenCalled();
|
|
680
720
|
expect(apiService.removePublicLink).not.toHaveBeenCalled();
|
|
721
|
+
expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
681
722
|
});
|
|
682
723
|
it('should delete external invitation', async () => {
|
|
683
724
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['external-email'] });
|
|
@@ -692,6 +733,7 @@ describe('SharingManagement', () => {
|
|
|
692
733
|
expect(apiService.deleteExternalInvitation).toHaveBeenCalled();
|
|
693
734
|
expect(apiService.removeMember).not.toHaveBeenCalled();
|
|
694
735
|
expect(apiService.removePublicLink).not.toHaveBeenCalled();
|
|
736
|
+
expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
695
737
|
});
|
|
696
738
|
it('should remove member', async () => {
|
|
697
739
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['member-email'] });
|
|
@@ -706,6 +748,7 @@ describe('SharingManagement', () => {
|
|
|
706
748
|
expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
|
|
707
749
|
expect(apiService.removeMember).toHaveBeenCalled();
|
|
708
750
|
expect(apiService.removePublicLink).not.toHaveBeenCalled();
|
|
751
|
+
expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
709
752
|
});
|
|
710
753
|
it('should be no-op if not shared with email', async () => {
|
|
711
754
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['non-existing-email'] });
|
|
@@ -720,6 +763,7 @@ describe('SharingManagement', () => {
|
|
|
720
763
|
expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
|
|
721
764
|
expect(apiService.removeMember).not.toHaveBeenCalled();
|
|
722
765
|
expect(apiService.removePublicLink).not.toHaveBeenCalled();
|
|
766
|
+
expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
723
767
|
});
|
|
724
768
|
it('should remove public link', async () => {
|
|
725
769
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid, { publicLink: 'remove' });
|
|
@@ -734,6 +778,7 @@ describe('SharingManagement', () => {
|
|
|
734
778
|
expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
|
|
735
779
|
expect(apiService.removeMember).not.toHaveBeenCalled();
|
|
736
780
|
expect(apiService.removePublicLink).toHaveBeenCalled();
|
|
781
|
+
expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
|
|
737
782
|
});
|
|
738
783
|
it('should remove share if all is removed', async () => {
|
|
739
784
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid);
|
|
@@ -744,6 +789,7 @@ describe('SharingManagement', () => {
|
|
|
744
789
|
expect(apiService.removeMember).not.toHaveBeenCalled();
|
|
745
790
|
expect(apiService.removePublicLink).not.toHaveBeenCalled();
|
|
746
791
|
expect(nodesService.notifyNodeChanged).toHaveBeenCalled();
|
|
792
|
+
expect(cache.removeSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
|
|
747
793
|
});
|
|
748
794
|
it('should remove share if everything is manually removed', async () => {
|
|
749
795
|
const sharingInfo = await sharingManagement.unshareNode(nodeUid, {
|
|
@@ -756,6 +802,7 @@ describe('SharingManagement', () => {
|
|
|
756
802
|
expect(apiService.deleteExternalInvitation).toHaveBeenCalled();
|
|
757
803
|
expect(apiService.removeMember).toHaveBeenCalled();
|
|
758
804
|
expect(apiService.removePublicLink).toHaveBeenCalled();
|
|
805
|
+
expect(cache.removeSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
|
|
759
806
|
});
|
|
760
807
|
});
|
|
761
808
|
describe('resendInvitationEmail', () => {
|