From 981417f95231628775654e41df65ee5fb5400f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Wed, 27 Sep 2023 14:27:12 +0200 Subject: [PATCH] chore: designated survivor test suite (#2540) * chore: designated survivor test suite * add more tests * fix: tests exclusivness * fix removing account from shared vaults test --- ...core-npm-1.34.1-ad84c73ba0-29fa0ee786.zip} | Bin 75369 -> 75434 bytes packages/api/package.json | 2 +- packages/desktop/package.json | 2 +- packages/encryption/package.json | 2 +- packages/features/package.json | 2 +- packages/models/package.json | 2 +- packages/services/package.json | 2 +- .../Domain/SharedVaults/SharedVaultService.ts | 22 +- packages/snjs/mocha/TestRegistry/BaseTests.js | 122 +++--- .../snjs/mocha/TestRegistry/VaultTests.js | 1 + packages/snjs/mocha/lib/Collaboration.js | 11 +- packages/snjs/mocha/test.html | 29 +- packages/snjs/mocha/vaults/deletion.test.js | 44 +++ packages/snjs/mocha/vaults/surviving.test.js | 363 ++++++++++++++++++ packages/snjs/package.json | 2 +- packages/ui-services/package.json | 2 +- yarn.lock | 24 +- 17 files changed, 537 insertions(+), 95 deletions(-) rename .yarn/cache/{@standardnotes-domain-core-npm-1.33.1-7384cc311d-4caba6cd6f.zip => @standardnotes-domain-core-npm-1.34.1-ad84c73ba0-29fa0ee786.zip} (82%) create mode 100644 packages/snjs/mocha/vaults/surviving.test.js diff --git a/.yarn/cache/@standardnotes-domain-core-npm-1.33.1-7384cc311d-4caba6cd6f.zip b/.yarn/cache/@standardnotes-domain-core-npm-1.34.1-ad84c73ba0-29fa0ee786.zip similarity index 82% rename from .yarn/cache/@standardnotes-domain-core-npm-1.33.1-7384cc311d-4caba6cd6f.zip rename to .yarn/cache/@standardnotes-domain-core-npm-1.34.1-ad84c73ba0-29fa0ee786.zip index a45021733f82571bb6d5ebb9e2fef1412fed3dcd..4f76236bb46c5542bf97875ba6a33585dad57a49 100644 GIT binary patch delta 4750 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 delta 4754 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 b&5rx@3lL?3K^U1B9{R%wkzXDr9GU+C3?3Kq diff --git a/packages/api/package.json b/packages/api/package.json index b71659235..3b07adc4e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "@standardnotes/common": "^1.50.0", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "@standardnotes/models": "workspace:*", "@standardnotes/responses": "workspace:*", "@standardnotes/utils": "workspace:*", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 025f7aa9d..4876e860e 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@electron/remote": "^2.0.9", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "@standardnotes/electron-clear-data": "1.1.1", "@standardnotes/web": "workspace:*", "axios": "^1.1.3", diff --git a/packages/encryption/package.json b/packages/encryption/package.json index aa0612063..e4f242e6d 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -29,7 +29,7 @@ }, "dependencies": { "@standardnotes/common": "^1.50.0", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "@standardnotes/models": "workspace:*", "@standardnotes/responses": "workspace:*", "@standardnotes/sncrypto-common": "workspace:*", diff --git a/packages/features/package.json b/packages/features/package.json index ce5146c88..e86e668db 100644 --- a/packages/features/package.json +++ b/packages/features/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@standardnotes/common": "^1.50.0", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "reflect-metadata": "^0.1.13" }, "devDependencies": { diff --git a/packages/models/package.json b/packages/models/package.json index 7c257cf0a..1d20ccc45 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@standardnotes/common": "^1.50.0", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "@standardnotes/features": "workspace:*", "@standardnotes/responses": "workspace:*", "@standardnotes/sncrypto-common": "workspace:^", diff --git a/packages/services/package.json b/packages/services/package.json index f47c58148..a9184c3e1 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -18,7 +18,7 @@ "dependencies": { "@standardnotes/api": "workspace:^", "@standardnotes/common": "^1.50.0", - "@standardnotes/domain-core": "^1.33.1", + "@standardnotes/domain-core": "^1.34.1", "@standardnotes/encryption": "workspace:^", "@standardnotes/features": "workspace:^", "@standardnotes/files": "workspace:^", diff --git a/packages/services/src/Domain/SharedVaults/SharedVaultService.ts b/packages/services/src/Domain/SharedVaults/SharedVaultService.ts index a63f9dd12..21d084727 100644 --- a/packages/services/src/Domain/SharedVaults/SharedVaultService.ts +++ b/packages/services/src/Domain/SharedVaults/SharedVaultService.ts @@ -96,7 +96,7 @@ export class SharedVaultService await this.handleNotification(event.payload as NotificationServiceEventPayload) break case SyncEvent.ReceivedRemoteSharedVaults: - void this.notifyEventSync(SharedVaultServiceEvent.SharedVaultStatusChanged) + void this.notifyEvent(SharedVaultServiceEvent.SharedVaultStatusChanged) break } } @@ -113,7 +113,20 @@ export class SharedVaultService break } case NotificationType.TYPES.UserRemovedFromSharedVault: { - this.vaultUsers.invalidateVaultUsersCache(event.eventPayload.props.primaryIdentifier.value).catch(console.error) + const vaultOrError = this._getVault.execute({ + sharedVaultUuid: event.eventPayload.props.primaryIdentifier.value, + }) + if (!vaultOrError.isFailed()) { + const vault = vaultOrError.getValue() + + this.vaultUsers + .invalidateVaultUsersCache(event.eventPayload.props.primaryIdentifier.value) + .catch(console.error) + + await this._syncLocalVaultsWithRemoteSharedVaults.execute([vault]) + + void this.notifyEvent(SharedVaultServiceEvent.SharedVaultStatusChanged) + } break } case NotificationType.TYPES.SharedVaultItemRemoved: { @@ -124,14 +137,15 @@ export class SharedVaultService break } case NotificationType.TYPES.SharedVaultFileRemoved: - case NotificationType.TYPES.SharedVaultFileUploaded: { + case NotificationType.TYPES.SharedVaultFileUploaded: + case NotificationType.TYPES.UserDesignatedAsSurvivor: { const vaultOrError = this._getVault.execute({ sharedVaultUuid: event.eventPayload.props.primaryIdentifier.value, }) if (!vaultOrError.isFailed()) { await this._syncLocalVaultsWithRemoteSharedVaults.execute([vaultOrError.getValue()]) - void this.notifyEventSync(SharedVaultServiceEvent.SharedVaultStatusChanged) + void this.notifyEvent(SharedVaultServiceEvent.SharedVaultStatusChanged) } break diff --git a/packages/snjs/mocha/TestRegistry/BaseTests.js b/packages/snjs/mocha/TestRegistry/BaseTests.js index 9e8c38d70..f0c296012 100644 --- a/packages/snjs/mocha/TestRegistry/BaseTests.js +++ b/packages/snjs/mocha/TestRegistry/BaseTests.js @@ -1,59 +1,63 @@ -export const BaseTests = [ - 'memory.test.js', - 'protocol.test.js', - 'utils.test.js', - '000.test.js', - '001.test.js', - '002.test.js', - '003.test.js', - '004.test.js', - 'username.test.js', - 'app-group.test.js', - 'application.test.js', - 'payload.test.js', - 'payload_encryption.test.js', - 'item.test.js', - 'item_manager.test.js', - 'features.test.js', - 'settings.test.js', - 'mfa_service.test.js', - 'mutator.test.js', - 'mutator_service.test.js', - 'payload_manager.test.js', - 'collections.test.js', - 'note_display_criteria.test.js', - 'keys.test.js', - 'key_params.test.js', - 'key_recovery_service.test.js', - 'backups.test.js', - 'upgrading.test.js', - 'model_tests/importing.test.js', - 'model_tests/appmodels.test.js', - 'model_tests/items.test.js', - 'model_tests/mapping.test.js', - 'model_tests/notes_smart_tags.test.js', - 'model_tests/notes_tags.test.js', - 'model_tests/notes_tags_folders.test.js', - 'model_tests/performance.test.js', - 'sync_tests/offline.test.js', - 'sync_tests/notes_tags.test.js', - 'sync_tests/online.test.js', - 'sync_tests/conflicting.test.js', - 'sync_tests/integrity.test.js', - 'auth-fringe-cases.test.js', - 'auth.test.js', - 'device_auth.test.js', - 'storage.test.js', - 'protection.test.js', - 'singletons.test.js', - 'migrations/migration.test.js', - 'migrations/tags-to-folders.test.js', - 'history.test.js', - 'actions.test.js', - 'preferences.test.js', - 'files.test.js', - 'session.test.js', - 'session-invalidation.test.js', - 'subscriptions.test.js', - 'recovery.test.js', -] +export const BaseTests = { + enabled: true, + exclusive: false, + files: [ + 'memory.test.js', + 'protocol.test.js', + 'utils.test.js', + '000.test.js', + '001.test.js', + '002.test.js', + '003.test.js', + '004.test.js', + 'username.test.js', + 'app-group.test.js', + 'application.test.js', + 'payload.test.js', + 'payload_encryption.test.js', + 'item.test.js', + 'item_manager.test.js', + 'features.test.js', + 'settings.test.js', + 'mfa_service.test.js', + 'mutator.test.js', + 'mutator_service.test.js', + 'payload_manager.test.js', + 'collections.test.js', + 'note_display_criteria.test.js', + 'keys.test.js', + 'key_params.test.js', + 'key_recovery_service.test.js', + 'backups.test.js', + 'upgrading.test.js', + 'model_tests/importing.test.js', + 'model_tests/appmodels.test.js', + 'model_tests/items.test.js', + 'model_tests/mapping.test.js', + 'model_tests/notes_smart_tags.test.js', + 'model_tests/notes_tags.test.js', + 'model_tests/notes_tags_folders.test.js', + 'model_tests/performance.test.js', + 'sync_tests/offline.test.js', + 'sync_tests/notes_tags.test.js', + 'sync_tests/online.test.js', + 'sync_tests/conflicting.test.js', + 'sync_tests/integrity.test.js', + 'auth-fringe-cases.test.js', + 'auth.test.js', + 'device_auth.test.js', + 'storage.test.js', + 'protection.test.js', + 'singletons.test.js', + 'migrations/migration.test.js', + 'migrations/tags-to-folders.test.js', + 'history.test.js', + 'actions.test.js', + 'preferences.test.js', + 'files.test.js', + 'session.test.js', + 'session-invalidation.test.js', + 'subscriptions.test.js', + 'recovery.test.js', + ] +} diff --git a/packages/snjs/mocha/TestRegistry/VaultTests.js b/packages/snjs/mocha/TestRegistry/VaultTests.js index d1df71260..38c846164 100644 --- a/packages/snjs/mocha/TestRegistry/VaultTests.js +++ b/packages/snjs/mocha/TestRegistry/VaultTests.js @@ -23,5 +23,6 @@ export const VaultTests = { 'vaults/files.test.js', 'vaults/limits.test.js', 'vaults/quota.test.js', + 'vaults/surviving.test.js', ], } diff --git a/packages/snjs/mocha/lib/Collaboration.js b/packages/snjs/mocha/lib/Collaboration.js index 2edb42629..38fe83938 100644 --- a/packages/snjs/mocha/lib/Collaboration.js +++ b/packages/snjs/mocha/lib/Collaboration.js @@ -41,7 +41,7 @@ export const acceptAllInvites = async (context) => { } } -const inviteContext = async (context, contactContext, sharedVault, contact, permission) => { +export const inviteContext = async (context, contactContext, sharedVault, contact, permission) => { contactContext.lockSyncing() const inviteOrError = await context.vaultInvites.inviteContactToSharedVault(sharedVault, contact, permission) @@ -207,3 +207,12 @@ export const moveItemToVault = async (context, sharedVault, item) => { return result.getValue() } + +export const designateSharedVaultSurvior = async (context, sharedVault, survivorUuid) => { + const result = await context.vaultUsers.designateSurvivor(sharedVault, survivorUuid) + if (result.isFailed()) { + throw new Error(result.getError()) + } + + return result.getValue() +} diff --git a/packages/snjs/mocha/test.html b/packages/snjs/mocha/test.html index a3ba9fc8c..461c1bdf2 100644 --- a/packages/snjs/mocha/test.html +++ b/packages/snjs/mocha/test.html @@ -38,6 +38,14 @@