Files
standardnotes-app-web/packages/snjs/mocha/lib/Collaboration.js
Karol Sójko eb062220d6 chore: fix endpoints and properties used in shared vaults to match the server (#2370)
* chore: upgrade @standardnotes/domain-core

* chore: enable vault tests by default

* chore: fix asymmetric messages paths

* chore: fix message property from user_uuid to recipient_uuid

* chore: fix server response properties for messages and notifications

* chore: fix user_uuid to recipient_uuid in resend all message use case

* chore: use notification payload and type from domain-core

* chore: fix non existent uuid in conflicts tests

* chore: use shared vault user permission from domain-core

* chore: enable all e2e tests

* chore: upgrade domain-core

* chore: mark failing tests as skipped

* chore: skip test

* chore: fix recipient_uuid in specs

* chore: skip test

* chore: skip test

* chore: skip test

* chore: skip test

* chore: fix remove unused var and unskip test

* Revert "chore: skip test"

This reverts commit 26bb876cf55e2c4fa9eeea56f73b3c2917a26f5c.

* chore: unskip passing tests

* chore: skip test

* chore: skip test

* fix: handle invite creation error

* chore: skip tests

* fix: disable vault tests to merge the PR

* chore: unskip asymmetric messages tests
2023-07-27 15:43:45 +02:00

170 lines
5.7 KiB
JavaScript

import * as Factory from './factory.js'
export const createContactContext = async () => {
const contactContext = await Factory.createAppContextWithRealCrypto()
await contactContext.launch()
await contactContext.register()
return {
contactContext,
deinitContactContext: contactContext.deinit.bind(contactContext),
}
}
export const createTrustedContactForUserOfContext = async (
contextAddingNewContact,
contextImportingContactInfoFrom,
) => {
const contact = await contextAddingNewContact.contacts.createOrEditTrustedContact({
name: 'John Doe',
publicKey: contextImportingContactInfoFrom.publicKey,
signingPublicKey: contextImportingContactInfoFrom.signingPublicKey,
contactUuid: contextImportingContactInfoFrom.userUuid,
})
return contact
}
export const acceptAllInvites = async (context) => {
const inviteRecords = context.vaultInvites.getCachedPendingInviteRecords()
if (inviteRecords.length === 0) {
throw new Error('No pending invites to accept')
}
for (const record of inviteRecords) {
await context.vaultInvites.acceptInvite(record)
}
}
export const createSharedVaultWithAcceptedInvite = async (context, permission = SharedVaultUserPermission.PERMISSIONS.Write) => {
const { sharedVault, contact, contactContext, deinitContactContext } =
await createSharedVaultWithUnacceptedButTrustedInvite(context, permission)
const promise = contactContext.awaitNextSyncSharedVaultFromScratchEvent()
await acceptAllInvites(contactContext)
await promise
const contactVault = contactContext.vaults.getVault({ keySystemIdentifier: sharedVault.systemIdentifier })
return { sharedVault, contact, contactVault, contactContext, deinitContactContext }
}
export const createSharedVaultWithAcceptedInviteAndNote = async (
context,
permission = SharedVaultUserPermission.PERMISSIONS.Write,
) => {
const { sharedVault, contactContext, contact, deinitContactContext } = await createSharedVaultWithAcceptedInvite(
context,
permission,
)
const note = await context.createSyncedNote('foo', 'bar')
const updatedNote = await moveItemToVault(context, sharedVault, note)
await contactContext.sync()
return { sharedVault, note: updatedNote, contact, contactContext, deinitContactContext }
}
export const createSharedVaultWithUnacceptedButTrustedInvite = async (
context,
permission = SharedVaultUserPermission.PERMISSIONS.Write,
) => {
const sharedVault = await createSharedVault(context)
const { contactContext, deinitContactContext } = await createContactContext()
const contact = await createTrustedContactForUserOfContext(context, contactContext)
await createTrustedContactForUserOfContext(contactContext, context)
const inviteOrError = await context.vaultInvites.inviteContactToSharedVault(sharedVault, contact, permission)
if (inviteOrError.isFailed()) {
throw new Error(inviteOrError.getError())
}
const invite = inviteOrError.getValue()
await contactContext.sync()
return { sharedVault, contact, contactContext, deinitContactContext, invite }
}
export const createSharedVaultAndInviteContact = async (
createInContext,
inviteContext,
inviteContact,
permission = SharedVaultUserPermission.PERMISSIONS.Write,
) => {
const sharedVault = await createSharedVault(createInContext)
await createInContext.vaultInvites.inviteContactToSharedVault(sharedVault, inviteContact, permission)
const promise = inviteContext.awaitNextSyncSharedVaultFromScratchEvent()
await inviteContext.sync()
await acceptAllInvites(inviteContext)
await promise
return { sharedVault }
}
export const createSharedVaultWithUnacceptedAndUntrustedInvite = async (
context,
permission = SharedVaultUserPermission.PERMISSIONS.Write,
) => {
const sharedVault = await createSharedVault(context)
const { contactContext, deinitContactContext } = await createContactContext()
const contact = await createTrustedContactForUserOfContext(context, contactContext)
const invite = (await context.vaultInvites.inviteContactToSharedVault(sharedVault, contact, permission)).getValue()
await contactContext.sync()
return { sharedVault, contact, contactContext, deinitContactContext, invite }
}
export const inviteNewPartyToSharedVault = async (context, sharedVault, permission = SharedVaultUserPermission.PERMISSIONS.Write) => {
const { contactContext: thirdPartyContext, deinitContactContext: deinitThirdPartyContext } =
await createContactContext()
const thirdPartyContact = await createTrustedContactForUserOfContext(context, thirdPartyContext)
await createTrustedContactForUserOfContext(thirdPartyContext, context)
await context.vaultInvites.inviteContactToSharedVault(sharedVault, thirdPartyContact, permission)
await thirdPartyContext.sync()
return { thirdPartyContext, thirdPartyContact, deinitThirdPartyContext }
}
export const createPrivateVault = async (context) => {
const privateVault = await context.vaults.createRandomizedVault({
name: 'My Private Vault',
})
return privateVault
}
export const createSharedVault = async (context) => {
const sharedVault = await context.sharedVaults.createSharedVault({ name: 'My Shared Vault' })
if (isClientDisplayableError(sharedVault)) {
throw new Error(sharedVault.text)
}
return sharedVault
}
export const createSharedVaultWithNote = async (context) => {
const sharedVault = await createSharedVault(context)
const note = await context.createSyncedNote()
const updatedNote = await moveItemToVault(context, sharedVault, note)
return { sharedVault, note: updatedNote }
}
export const moveItemToVault = async (context, sharedVault, item) => {
const promise = context.resolveWhenItemCompletesAddingToVault(item)
const updatedItem = await context.vaults.moveItemToVault(sharedVault, item)
await promise
return updatedItem
}