Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions tests/e2e-playwright/specs/app-provider/lock.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ test.describe('lock', { tag: '@sse' }, () => {

// file-locked
// And "Alice" should get "file-locked" SSE event
await api.userShouldGetSSEEvent({
await ui.userShouldGetSSEEvent({
usersEnvironment,
stepUser: 'Alice',
event: 'file-locked'
Expand Down Expand Up @@ -152,7 +152,7 @@ test.describe('lock', { tag: '@sse' }, () => {
stepUser: 'Brian'
})
// Then "Alice" should get "file-unlocked" SSE event
await api.userShouldGetSSEEvent({
await ui.userShouldGetSSEEvent({
usersEnvironment,
stepUser: 'Alice',
event: 'file-unlocked'
Expand Down
279 changes: 279 additions & 0 deletions tests/e2e-playwright/specs/file-action/groupActions.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
import { test } from '../../support/test'
import { config } from '../../../e2e/config.js'
import { ActorsEnvironment, UsersEnvironment } from '../../../e2e/support/environment'
import { setAccessAndRefreshToken } from '../../helpers/setAccessAndRefreshToken.js'
import * as ui from '../../steps/ui/index'
import * as api from '../../steps/api/api'

test.describe('Group actions', { tag: '@predefined-users' }, () => {
let actorsEnvironment
const usersEnvironment = new UsersEnvironment()

test.beforeEach(async ({ browser }) => {
actorsEnvironment = new ActorsEnvironment({
context: {
acceptDownloads: config.acceptDownloads,
reportDir: config.reportDir,
tracingReportDir: config.tracingReportDir,
reportHar: config.reportHar,
reportTracing: config.reportTracing,
reportVideo: config.reportVideo,
failOnUncaughtConsoleError: config.failOnUncaughtConsoleError
},
browser: browser
})

await setAccessAndRefreshToken(usersEnvironment)

// Given "Admin" creates following user using API
// | id |
// | Alice |
// | Brian |
// | Carol |
// | David |
// | Edith |
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'Alice' })
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'Brian' })
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'Carol' })
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'David' })
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'Edith' })

// And "Admin" creates following group using API
// | id |
// | sales |
// | finance |
// | security |
await api.groupsHaveBeenCreated({
groupIds: ['sales', 'finance', 'security'],
admin: usersEnvironment.getUser({ key: 'Admin' })
})

// And "Admin" adds user to the group using API
// | user | group |
// | Brian | sales |
// | Brian | finance |
// | Brian | security |
await api.addUserToGroup({
usersEnvironment,
stepUser: 'Admin',
groupName: 'sales',
userToAdd: 'Brian'
})
await api.addUserToGroup({
usersEnvironment,
stepUser: 'Admin',
groupName: 'finance',
userToAdd: 'Brian'
})
await api.addUserToGroup({
usersEnvironment,
stepUser: 'Admin',
groupName: 'security',
userToAdd: 'Brian'
})

// And "Brian" logs in
await ui.logInUser({ usersEnvironment, actorsEnvironment, stepUser: 'Brian' })
})

test.afterEach(async () => {
// clean up users
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'Alice' })
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'Brian' })
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'Carol' })
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'David' })
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'Edith' })
})

test('batch share a resource to multiple users and groups', async () => {
// disabling auto accepting to check accepting share
// And "Brian" disables auto-accepting using API
await api.userHasDisabledAutoAcceptingShare({ usersEnvironment, stepUser: 'Brian' })

// And "Alice" creates the following folders in personal space using API
// | name |
// | sharedFolder |
// | folder1 |
// | folder2 |
// | folder3 |
// | folder4 |
// | folder5 |
// | parentFolder/SubFolder |
await api.userHasCreatedFolders({
usersEnvironment,
stepUser: 'Alice',
folderNames: [
'sharedFolder',
'folder1',
'folder2',
'folder3',
'folder4',
'folder5',
'parentFolder/SubFolder'
]
})
// And "Alice" shares the following resource using API
// | resource | recipient | type | role | resourceType |
// | folder1 | Brian | user | Can edit with trashbin | folder |
// | folder2 | Brian | user | Can edit with trashbin | folder |
// | folder3 | Brian | user | Can edit with trashbin | folder |
// | folder4 | Brian | user | Can edit with trashbin | folder |
// | folder5 | Brian | user | Can edit with trashbin | folder |
// | parentFolder | Brian | user | Can edit with trashbin | folder |
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'folder1',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'folder2',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'folder3',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'folder4',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'folder5',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await api.userHasSharedResource({
usersEnvironment,
stepUser: 'Alice',
resource: 'parentFolder',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
// And "Alice" logs in
await ui.logInUser({ usersEnvironment, actorsEnvironment, stepUser: 'Alice' })

// # multiple share
// And "Alice" shares the following resources using the sidebar panel
// | resource | recipient | type | role | resourceType |
// | sharedFolder | Brian | user | Can edit with trashbin | folder |
// | sharedFolder | Carol | user | Can edit with trashbin | folder |
// | sharedFolder | David | user | Can edit with trashbin | folder |
// | sharedFolder | Edith | user | Can edit with trashbin | folder |
// | sharedFolder | sales | group | Can edit with trashbin | folder |
// | sharedFolder | finance | group | Can edit with trashbin | folder |
// | sharedFolder | security | group | Can edit with trashbin | folder |
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'Brian',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'Carol',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'David',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'Edith',
type: 'user',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'sales',
type: 'group',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'finance',
type: 'group',
role: 'Can edit with trashbin',
resourceType: 'folder'
})
await ui.shareResource({
actorsEnvironment,
usersEnvironment,
stepUser: 'Alice',
actionType: 'SIDEBAR_PANEL',
resource: 'sharedFolder',
recipient: 'security',
type: 'group',
role: 'Can edit with trashbin',
resourceType: 'folder'
})

// And "Brian" navigates to the shared with me page
await ui.navigateToSharedWithMePage({ actorsEnvironment, stepUser: 'Brian' })

// And "Brian" enables the sync for all shares using the batch action
await ui.userEnablesSyncForAllShares({ actorsEnvironment, stepUser: 'Brian' })

// And "Alice" logs out
await ui.logOutUser({ actorsEnvironment, stepUser: 'Alice' })
// And "Brian" logs out
await ui.logOutUser({ actorsEnvironment, stepUser: 'Brian' })
})
})
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { test, expect } from '@playwright/test'
import { test } from '../../support/test'
import { expect } from '@playwright/test'
import { config } from './../../../e2e/config.js'
import {
ActorsEnvironment,
Expand Down
11 changes: 4 additions & 7 deletions tests/e2e-playwright/steps/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { integer } from 'vscode-languageserver-types'

import { checkResponseStatus, request } from '../../../e2e/support/api/http'
import { join } from 'path'
import { waitForSSEEvent } from '../../../e2e/support/utils/locator.js'

export async function userHasBeenCreated({
usersEnvironment,
Expand Down Expand Up @@ -451,15 +450,13 @@ export async function userHasAddedTagsToResource({
await api.dav.addTagToResource({ user, resource, tags })
}

export async function userShouldGetSSEEvent({
export async function userHasDisabledAutoAcceptingShare({
usersEnvironment,
stepUser,
event
stepUser
}: {
usersEnvironment: UsersEnvironment
stepUser: string
event: string
}): Promise<void> {
const user = usersEnvironment.getCreatedUser({ key: stepUser })
await waitForSSEEvent(user, event)
const user = usersEnvironment.getUser({ key: stepUser })
await api.settings.configureAutoAcceptShare({ user, state: false })
}
14 changes: 14 additions & 0 deletions tests/e2e-playwright/steps/ui/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ActorsEnvironment, UsersEnvironment } from '../../../e2e/support/enviro
import { User } from '../../../e2e/support/types'
import { listenSSE } from '../../../e2e/support/environment/sse.js'
import { test } from '@playwright/test'
import { waitForSSEEvent } from '../../../e2e/support/utils/locator.js'

async function createNewSession(actorsEnvironment: ActorsEnvironment, stepUser: string) {
const { page } = await actorsEnvironment.createActor({
Expand Down Expand Up @@ -80,3 +81,16 @@ export async function logOutUser({
canLogout && (await sessionObject.logout())
await actor.close()
}

export async function userShouldGetSSEEvent({
usersEnvironment,
stepUser,
event
}: {
usersEnvironment: UsersEnvironment
stepUser: string
event: string
}): Promise<void> {
const user = usersEnvironment.getCreatedUser({ key: stepUser })
await waitForSSEEvent(user, event)
}
12 changes: 12 additions & 0 deletions tests/e2e-playwright/steps/ui/shares.ts
Original file line number Diff line number Diff line change
Expand Up @@ -270,3 +270,15 @@ export async function userShouldNotBeAbleToManageShareOfFile({
expect(canChangeRole).toBe(false)
expect(canChangeShare).toBe(false)
}

export async function userEnablesSyncForAllShares({
actorsEnvironment,
stepUser
}: {
actorsEnvironment: ActorsEnvironment
stepUser: string
}): Promise<void> {
const { page } = actorsEnvironment.getActor({ key: stepUser })
const shareObject = new objects.applicationFiles.Share({ page })
await shareObject.syncAll()
}
Loading