diff --git a/.drone.star b/.drone.star index 0642eef66a3..2174f403467 100644 --- a/.drone.star +++ b/.drone.star @@ -80,7 +80,6 @@ config = { "earlyFail": True, "skip": False, "features": [ - "cucumber/features/journeys", "cucumber/features/admin-settings/users.feature:20", "cucumber/features/admin-settings/users.feature:43", "cucumber/features/admin-settings/users.feature:106", @@ -111,6 +110,7 @@ config = { "earlyFail": True, "skip": False, "suites": [ + "journeys", "smoke", ], }, diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e96c0a36a7..2321e3e9be3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,7 +76,7 @@ jobs: matrix: suites: - suite: part-1 - test_suites: admin-settings,spaces + test_suites: admin-settings,spaces,journeys - suite: part-2 test_suites: navigation,user-settings,app-store,file-action - suite: part-3 @@ -100,7 +100,7 @@ jobs: test_suites: mfa mfa: true - suite: keycloak - feature_files: specs/admin-settings/spaces.spec.ts + feature_files: specs/admin-settings/spaces.spec.ts,specs/journeys/kindergarten.spec.ts keycloak: true env: BASE_URL_OCIS: localhost:9200 diff --git a/tests/e2e-playwright/specs/app-provider/officeSuites.spec.ts b/tests/e2e-playwright/specs/app-provider/officeSuites.spec.ts index dbb86526cd2..1f7dd2827bf 100644 --- a/tests/e2e-playwright/specs/app-provider/officeSuites.spec.ts +++ b/tests/e2e-playwright/specs/app-provider/officeSuites.spec.ts @@ -209,14 +209,18 @@ test.describe('Integrate with online office suites like Collabora and OnlyOffice // When "Alice" updates following sharee role // | resource | recipient | type | role | resourceType | // | OpenDocument.odt | Brian | user | Can edit with trashbin | file | - await ui.userUpdatesShareeRole({ + await ui.userUpdatesShareeRoles({ world, stepUser: 'Alice', - resource: 'OpenDocument.odt', - recipient: 'Brian', - type: 'user', - role: 'Can edit with trashbin', - resourceType: 'file' + roleUpdates: [ + { + resource: 'OpenDocument.odt', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'file' + } + ] }) // And "Alice" opens the following file in Collabora @@ -510,14 +514,18 @@ test.describe('Integrate with online office suites like Collabora and OnlyOffice // When "Alice" updates following sharee role // | resource | recipient | type | role | resourceType | // | MicrosoftWord.docx | Brian | user | Can edit with trashbin | file | - await ui.userUpdatesShareeRole({ + await ui.userUpdatesShareeRoles({ world, stepUser: 'Alice', - resource: 'MicrosoftWord.docx', - recipient: 'Brian', - type: 'user', - role: 'Can edit with trashbin', - resourceType: 'file' + roleUpdates: [ + { + resource: 'MicrosoftWord.docx', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'file' + } + ] }) // And "Alice" opens the following file in OnlyOffice diff --git a/tests/e2e-playwright/specs/journeys/kindergarten.spec.ts b/tests/e2e-playwright/specs/journeys/kindergarten.spec.ts new file mode 100644 index 00000000000..3025bbac6b4 --- /dev/null +++ b/tests/e2e-playwright/specs/journeys/kindergarten.spec.ts @@ -0,0 +1,444 @@ +import { test } from '../../support/test' +import { fileAction } from '../../support/constants' +import * as api from '../../steps/api/api.js' +import * as ui from '../../steps/ui/index' + +test.describe('Kindergarten can use web to organize a day', () => { + test.beforeEach(async ({ world }) => { + // Given "Admin" creates following users using API + // | id | + // | Alice | + // | Brian | + // | Carol | + await api.usersHaveBeenCreated({ + world, + stepUser: 'Admin', + users: ['Alice', 'Brian', 'Carol'] + }) + + // And "Admin" creates following group using API + // | id | + // | sales | + // | security | + await api.groupsHaveBeenCreated({ + world, + groupIds: ['sales', 'security'], + stepUser: 'Admin' + }) + + // And "Admin" adds user to the group using API + // | user | group | + // | Brian | sales | + await api.usersHaveBeenAddedToGroup({ + world, + stepUser: 'Admin', + usersToAdd: [{ user: 'Brian', group: 'sales' }] + }) + }) + + test('Alice can share this weeks meal plan with all parents', async ({ world }) => { + // When "Alice" logs in + await ui.userLogsIn({ world, stepUser: 'Alice' }) + + // And "Alice" navigates to the personal space page + await ui.userNavigatesToPersonalSpacePage({ world, stepUser: 'Alice' }) + + // And "Alice" creates the following resources + // | resource | type | + // | groups/Kindergarten Koalas/meal plan | folder | + // | groups/Pre-Schools Pirates/meal plan | folder | + // | groups/Teddy Bear Daycare/meal plan | folder | + await ui.userCreatesResources({ + world, + stepUser: 'Alice', + resources: [ + { name: 'groups/Kindergarten Koalas/meal plan', type: 'folder' }, + { name: 'groups/Pre-Schools Pirates/meal plan', type: 'folder' }, + { name: 'groups/Teddy Bear Daycare/meal plan', type: 'folder' } + ] + }) + + // And "Alice" uploads the following resources + // | resource | to | + // | PARENT/parent.txt | groups/Kindergarten Koalas/meal plan | + // | lorem.txt | groups/Kindergarten Koalas/meal plan | + // | lorem-big.txt | groups/Kindergarten Koalas/meal plan | + // | data.zip | groups/Pre-Schools Pirates/meal plan | + // | lorem.txt | groups/Pre-Schools Pirates/meal plan | + // | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | + // | data.zip | groups/Teddy Bear Daycare/meal plan | + // | lorem.txt | groups/Teddy Bear Daycare/meal plan | + // | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | + await ui.userUploadsResources({ + world, + stepUser: 'Alice', + resources: [ + { name: 'PARENT/parent.txt', to: 'groups/Kindergarten Koalas/meal plan' }, + { name: 'lorem.txt', to: 'groups/Kindergarten Koalas/meal plan' }, + { name: 'lorem-big.txt', to: 'groups/Kindergarten Koalas/meal plan' }, + { name: 'data.zip', to: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'lorem.txt', to: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'lorem-big.txt', to: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'data.zip', to: 'groups/Teddy Bear Daycare/meal plan' }, + { name: 'lorem.txt', to: 'groups/Teddy Bear Daycare/meal plan' }, + { name: 'lorem-big.txt', to: 'groups/Teddy Bear Daycare/meal plan' } + ] + }) + + // Implementation of sharing with different roles is currently broken + // since we switched to bulk creating of shares with a single dropdown + + // And "Alice" shares the following resources using the sidebar panel + // | resource | recipient | type | role | resourceType | + // | groups/Pre-Schools Pirates/meal plan | Brian | user | Can edit with trashbin | folder | + // | groups/Pre-Schools Pirates/meal plan | Carol | user | Can edit with trashbin | folder | + // | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | sales | group | Can view | file | + // | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | Carol | user | Can view | file | + // | groups/Kindergarten Koalas/meal plan | sales | group | Can view | folder | + // | groups/Kindergarten Koalas/meal plan | security | group | Can edit with trashbin | folder | + // | groups/Kindergarten Koalas/meal plan/lorem.txt | sales | group | Can view | file | + // | groups/Kindergarten Koalas/meal plan/lorem.txt | security | group | Can view | file | + // | groups/Teddy Bear Daycare/meal plan | Brian | user | Can edit with trashbin | folder | + // | groups/Teddy Bear Daycare/meal plan | Carol | user | Can edit with trashbin | folder | + // | groups/Teddy Bear Daycare/meal plan/data.zip | Brian | user | Can edit with trashbin | file | + // | groups/Teddy Bear Daycare/meal plan/data.zip | Carol | user | Can edit with trashbin | file | + await ui.userSharesResources({ + world, + actionType: fileAction.sideBarPanel, + stepUser: 'Alice', + shares: [ + { + resource: 'groups/Pre-Schools Pirates/meal plan', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Pre-Schools Pirates/meal plan', + recipient: 'Carol', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Pre-Schools Pirates/meal plan/lorem-big.txt', + recipient: 'sales', + type: 'group', + role: 'Can view', + resourceType: 'file' + }, + { + resource: 'groups/Pre-Schools Pirates/meal plan/lorem-big.txt', + recipient: 'Carol', + type: 'user', + role: 'Can view', + resourceType: 'file' + }, + { + resource: 'groups/Kindergarten Koalas/meal plan', + recipient: 'sales', + type: 'group', + role: 'Can view', + resourceType: 'folder' + }, + { + resource: 'groups/Kindergarten Koalas/meal plan', + recipient: 'security', + type: 'group', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Kindergarten Koalas/meal plan/lorem.txt', + recipient: 'sales', + type: 'group', + role: 'Can view', + resourceType: 'file' + }, + { + resource: 'groups/Kindergarten Koalas/meal plan/lorem.txt', + recipient: 'security', + type: 'group', + role: 'Can view', + resourceType: 'file' + }, + { + resource: 'groups/Teddy Bear Daycare/meal plan', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Teddy Bear Daycare/meal plan', + recipient: 'Carol', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Teddy Bear Daycare/meal plan/data.zip', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'file' + }, + { + resource: 'groups/Teddy Bear Daycare/meal plan/data.zip', + recipient: 'Carol', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'file' + } + ] + }) + + // update share + // And "Alice" updates following sharee role + // | resource | recipient | type | role | resourceType | + // | groups/Pre-Schools Pirates/meal plan | Carol | user | Can view | folder | + // | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | sales | group | Can edit with trashbin | file | + // | groups/Kindergarten Koalas/meal plan | sales | group | Can edit with trashbin | folder | + // | groups/Teddy Bear Daycare/meal plan/data.zip | Carol | user | Can edit with trashbin | file | + await ui.userUpdatesShareeRoles({ + world, + stepUser: 'Alice', + roleUpdates: [ + { + resource: 'groups/Pre-Schools Pirates/meal plan', + recipient: 'Carol', + type: 'user', + role: 'Can view', + resourceType: 'folder' + }, + { + resource: 'groups/Pre-Schools Pirates/meal plan/lorem-big.txt', + recipient: 'sales', + type: 'group', + role: 'Can edit with trashbin', + resourceType: 'file' + }, + { + resource: 'groups/Kindergarten Koalas/meal plan', + recipient: 'sales', + type: 'group', + role: 'Can edit with trashbin', + resourceType: 'folder' + }, + { + resource: 'groups/Teddy Bear Daycare/meal plan/data.zip', + recipient: 'Carol', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'file' + } + ] + }) + // Then what do we check for to be confident that the above things done by Alice have worked? + // When "Brian" logs in + await ui.userLogsIn({ world, stepUser: 'Brian' }) + + // And "Brian" navigates to the shared with me page + await ui.userNavigatesToSharedWithMePage({ world, stepUser: 'Brian' }) + + // And "Brian" downloads the following resources using the sidebar panel + // | resource | from | type | + // | data.zip | meal plan | file | + await ui.userDownloadsResource({ + world, + stepUser: 'Brian', + resourceToDownload: [{ resource: 'data.zip', from: 'meal plan', type: 'file' }], + actionType: fileAction.sideBarPanel + }) + + // Then what do we check for to be confident that the above things done by Brian have worked? + // Then the downloaded zip should contain... ? + // When "Carol" logs in + await ui.userLogsIn({ world, stepUser: 'Carol' }) + + // And "Carol" navigates to the shared with me page + await ui.userNavigatesToSharedWithMePage({ world, stepUser: 'Carol' }) + // And "Carol" downloads the following resources using the sidebar panel + // | resource | from | type | + // | data.zip | meal plan | file | + // | lorem.txt | meal plan | file | + // | lorem-big.txt | meal plan | file | + // | meal plan | | folder | + // Then what do we check for to be confident that the above things done by Carol have worked? + // Then the downloaded files should have content "abc..." + await ui.userDownloadsResource({ + world, + stepUser: 'Carol', + resourceToDownload: [ + { resource: 'data.zip', from: 'meal plan', type: 'file' }, + { resource: 'lorem.txt', from: 'meal plan', type: 'file' }, + { resource: 'lorem-big.txt', from: 'meal plan', type: 'file' }, + { resource: 'meal plan', type: 'folder' } + ], + actionType: fileAction.sideBarPanel + }) + // And "Carol" logs out + await ui.userLogsOut({ world, stepUser: 'Carol' }) + + // When "Brian" downloads the following resources using the sidebar panel + // | resource | from | type | + // | lorem.txt | meal plan | file | + // | lorem-big.txt | meal plan | file | + // | meal plan | | folder | + // Then what do we check for to be confident that the above things done by Brian have worked? + // Then the downloaded files should have content "abc..." + await ui.userDownloadsResource({ + world, + stepUser: 'Brian', + resourceToDownload: [ + { resource: 'lorem.txt', from: 'meal plan', type: 'file' }, + { resource: 'lorem-big.txt', from: 'meal plan', type: 'file' }, + { resource: 'meal plan', type: 'folder' } + ], + actionType: fileAction.sideBarPanel + }) + + // And "Brian" logs out + await ui.userLogsOut({ world, stepUser: 'Brian' }) + // And "Alice" downloads the following resources using the sidebar panel + // | resource | from | type | + // | parent.txt | groups/Kindergarten Koalas/meal plan | file | + // | lorem.txt | groups/Kindergarten Koalas/meal plan | file | + // | lorem-big.txt | groups/Kindergarten Koalas/meal plan | file | + // | data.zip | groups/Pre-Schools Pirates/meal plan | file | + // | lorem.txt | groups/Pre-Schools Pirates/meal plan | file | + // | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | file | + // | data.zip | groups/Teddy Bear Daycare/meal plan | file | + // | lorem.txt | groups/Teddy Bear Daycare/meal plan | file | + // | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | file | + // | meal plan | groups/Kindergarten Koalas | folder | + // | meal plan | groups/Pre-Schools Pirates | folder | + // | meal plan | groups/Teddy Bear Daycare | folder | + // | Kindergarten Koalas | groups | folder | + // | Pre-Schools Pirates | groups | folder | + // | Teddy Bear Daycare | groups | folder | + // | groups | | folder | + await ui.userDownloadsResource({ + world, + stepUser: 'Alice', + resourceToDownload: [ + { + resource: 'parent.txt', + from: 'groups/Kindergarten Koalas/meal plan', + type: 'file' + }, + { + resource: 'lorem.txt', + from: 'groups/Kindergarten Koalas/meal plan', + type: 'file' + }, + { + resource: 'lorem-big.txt', + from: 'groups/Kindergarten Koalas/meal plan', + type: 'file' + }, + { + resource: 'data.zip', + from: 'groups/Pre-Schools Pirates/meal plan', + type: 'file' + }, + { + resource: 'lorem.txt', + from: 'groups/Pre-Schools Pirates/meal plan', + type: 'file' + }, + { + resource: 'lorem-big.txt', + from: 'groups/Pre-Schools Pirates/meal plan', + type: 'file' + }, + { + resource: 'data.zip', + from: 'groups/Teddy Bear Daycare/meal plan', + type: 'file' + }, + { + resource: 'lorem.txt', + from: 'groups/Teddy Bear Daycare/meal plan', + type: 'file' + }, + { + resource: 'lorem-big.txt', + from: 'groups/Teddy Bear Daycare/meal plan', + type: 'file' + }, + { + resource: 'meal plan', + from: 'groups/Kindergarten Koalas', + type: 'folder' + }, + { + resource: 'meal plan', + from: 'groups/Pre-Schools Pirates', + type: 'folder' + }, + { + resource: 'meal plan', + from: 'groups/Teddy Bear Daycare', + type: 'folder' + }, + { + resource: 'Kindergarten Koalas', + from: 'groups', + type: 'folder' + }, + { + resource: 'Pre-Schools Pirates', + from: 'groups', + type: 'folder' + }, + { + resource: 'Teddy Bear Daycare', + from: 'groups', + type: 'folder' + }, + { + resource: 'groups', + type: 'folder' + } + ], + actionType: fileAction.sideBarPanel + }) + // And "Alice" deletes the following resources using the batch action + // | resource | from | + // | lorem.txt | groups/Kindergarten Koalas/meal plan | + // | lorem-big.txt | groups/Kindergarten Koalas/meal plan | + // | data.zip | groups/Pre-Schools Pirates/meal plan | + // | lorem.txt | groups/Pre-Schools Pirates/meal plan | + // | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | + // | data.zip | groups/Teddy Bear Daycare/meal plan | + // | lorem.txt | groups/Teddy Bear Daycare/meal plan | + // | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | + // | Kindergarten Koalas | groups | + // | Pre-Schools Pirates | groups | + // | Teddy Bear Daycare | groups | + // # Then what do we check for to be confident that the above things done by Alice have worked? + // # Then the downloaded files should have content "abc..." + await ui.userDeletesResources({ + world, + stepUser: 'Alice', + actionType: fileAction.sideBarPanel, + resources: [ + { name: 'lorem.txt', from: 'groups/Kindergarten Koalas/meal plan' }, + { name: 'lorem-big.txt', from: 'groups/Kindergarten Koalas/meal plan' }, + { name: 'data.zip', from: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'lorem.txt', from: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'lorem-big.txt', from: 'groups/Pre-Schools Pirates/meal plan' }, + { name: 'data.zip', from: 'groups/Teddy Bear Daycare/meal plan' }, + { name: 'lorem.txt', from: 'groups/Teddy Bear Daycare/meal plan' }, + { name: 'lorem-big.txt', from: 'groups/Teddy Bear Daycare/meal plan' }, + { name: 'Kindergarten Koalas', from: 'groups' }, + { name: 'Pre-Schools Pirates', from: 'groups' }, + { name: 'Teddy Bear Daycare', from: 'groups' } + ] + }) + // And "Alice" logs out + await ui.userLogsOut({ world, stepUser: 'Alice' }) + }) +}) diff --git a/tests/e2e-playwright/specs/smoke/sse.spec.ts b/tests/e2e-playwright/specs/smoke/sse.spec.ts index 94ba6d5d023..7ec6b48908f 100644 --- a/tests/e2e-playwright/specs/smoke/sse.spec.ts +++ b/tests/e2e-playwright/specs/smoke/sse.spec.ts @@ -193,14 +193,18 @@ test.describe('server sent events', { tag: '@sse' }, () => { // When "Alice" updates following sharee role // | resource | recipient | type | role | resourceType | // | space-folder | Carol | user | Can view | folder | - await ui.userUpdatesShareeRole({ + await ui.userUpdatesShareeRoles({ world, stepUser: 'Alice', - resource: 'space-folder', - recipient: 'Carol', - type: 'user', - role: 'Can view', - resourceType: 'folder' + roleUpdates: [ + { + resource: 'space-folder', + recipient: 'Carol', + type: 'user', + role: 'Can view', + resourceType: 'folder' + } + ] }) // Then "Alice" should get "share-updated" SSE event await ui.userShouldGetSSEEvent({ @@ -418,14 +422,18 @@ test.describe('server sent events', { tag: '@sse' }, () => { // When "Alice" updates following sharee role // | resource | recipient | type | role | resourceType | // | sharedFolder | Brian | user | Can edit with trashbin | folder | - await ui.userUpdatesShareeRole({ + await ui.userUpdatesShareeRoles({ world, stepUser: 'Alice', - resource: 'sharedFolder', - recipient: 'Brian', - type: 'user', - role: 'Can edit with trashbin', - resourceType: 'folder' + roleUpdates: [ + { + resource: 'sharedFolder', + recipient: 'Brian', + type: 'user', + role: 'Can edit with trashbin', + resourceType: 'folder' + } + ] }) // Then "Alice" should get "share-updated" SSE event await ui.userShouldGetSSEEvent({ diff --git a/tests/e2e-playwright/steps/ui/shares.ts b/tests/e2e-playwright/steps/ui/shares.ts index e00ea0a6225..fd8a661ecc0 100644 --- a/tests/e2e-playwright/steps/ui/shares.ts +++ b/tests/e2e-playwright/steps/ui/shares.ts @@ -77,52 +77,51 @@ export async function userNavigatesToSharedWithOthersPage({ await pageObject.navigate() } -export async function userUpdatesShareeRole({ +export async function userUpdatesShareeRoles({ world, stepUser, - resource, - recipient, - type, - role, - resourceType, - expirationDate, - shareType + roleUpdates }: { world: World stepUser: string - resource: string - recipient: string - type: CollaboratorType - role: string - resourceType: string - expirationDate?: string - shareType?: string + roleUpdates: { + resource: string + recipient: string + type: CollaboratorType + role: string + resourceType: string + expirationDate?: string + shareType?: string + }[] }) { const { page } = world.actorsEnvironment.getActor({ key: stepUser }) const shareObject = new objects.applicationFiles.Share({ page }) - const shareInfo = parseShareTable( - world, - resource, - recipient, - type, - role, - resourceType, - expirationDate, - shareType - ) const sharer = world.usersEnvironment.getUser({ key: stepUser }) - for (const [resource, shareObj] of Object.entries(shareInfo)) { - const roleId = await getDynamicRoleIdByName( - sharer, - shareObj[0].role, - shareObj[0].resourceType as ResourceType + for (const update of roleUpdates) { + const shareInfo = parseShareTable( + world, + update.resource, + update.recipient, + update.type, + update.role, + update.resourceType, + update.expirationDate, + update.shareType ) - shareObj.forEach((item) => (item.role = roleId)) - await shareObject.changeShareeRole({ - resource, - recipients: shareObj - }) + + for (const [resource, shareObj] of Object.entries(shareInfo)) { + const roleId = await getDynamicRoleIdByName( + sharer, + shareObj[0].role, + shareObj[0].resourceType as ResourceType + ) + shareObj.forEach((item) => (item.role = roleId)) + await shareObject.changeShareeRole({ + resource, + recipients: shareObj + }) + } } } diff --git a/tests/e2e/config.js b/tests/e2e/config.js index ee0921b9a49..54fc9802395 100644 --- a/tests/e2e/config.js +++ b/tests/e2e/config.js @@ -42,7 +42,7 @@ export const config = { retry: parseInt(process.env.RETRY) || 0, // playwright slowMo: parseInt(process.env.SLOW_MO) || 0, - timeout: parseInt(process.env.TIMEOUT) || 120, + timeout: parseInt(process.env.TIMEOUT) || 180, minTimeout: parseInt(process.env.MIN_TIMEOUT) || 5, tokenTimeout: parseInt(process.env.TOKEN_TIMEOUT) || 40, headless: process.env.HEADLESS === 'true', diff --git a/tests/e2e/cucumber/features/journeys/kindergarten.feature b/tests/e2e/cucumber/features/journeys/kindergarten.feature deleted file mode 100644 index c7d5ef2fc41..00000000000 --- a/tests/e2e/cucumber/features/journeys/kindergarten.feature +++ /dev/null @@ -1,123 +0,0 @@ -Feature: Kindergarten can use web to organize a day - - As a kindergarten operator named Alice - I want to manage all file related operations by using ownCloud WEB - So that i'm sure all parents are informed and have the latest information in a easy and secure way - - Background: - Given "Admin" creates following users using API - | id | - | Alice | - | Brian | - | Carol | - And "Admin" creates following group using API - | id | - | sales | - | security | - And "Admin" adds user to the group using API - | user | group | - | Brian | sales | - - Scenario: Alice can share this weeks meal plan with all parents - When "Alice" logs in - And "Alice" navigates to the personal space page - And "Alice" creates the following resources - | resource | type | - | groups/Kindergarten Koalas/meal plan | folder | - | groups/Pre-Schools Pirates/meal plan | folder | - | groups/Teddy Bear Daycare/meal plan | folder | - And "Alice" uploads the following resources - | resource | to | - | PARENT/parent.txt | groups/Kindergarten Koalas/meal plan | - | lorem.txt | groups/Kindergarten Koalas/meal plan | - | lorem-big.txt | groups/Kindergarten Koalas/meal plan | - | data.zip | groups/Pre-Schools Pirates/meal plan | - | lorem.txt | groups/Pre-Schools Pirates/meal plan | - | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | - | data.zip | groups/Teddy Bear Daycare/meal plan | - | lorem.txt | groups/Teddy Bear Daycare/meal plan | - | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | - # Implementation of sharing with different roles is currently broken - # since we switched to bulk creating of shares with a single dropdown - And "Alice" shares the following resources using the sidebar panel - | resource | recipient | type | role | resourceType | - | groups/Pre-Schools Pirates/meal plan | Brian | user | Can edit with trashbin | folder | - | groups/Pre-Schools Pirates/meal plan | Carol | user | Can edit with trashbin | folder | - | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | sales | group | Can view | file | - | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | Carol | user | Can view | file | - | groups/Kindergarten Koalas/meal plan | sales | group | Can view | folder | - | groups/Kindergarten Koalas/meal plan | security | group | Can edit with trashbin | folder | - | groups/Kindergarten Koalas/meal plan/lorem.txt | sales | group | Can view | file | - | groups/Kindergarten Koalas/meal plan/lorem.txt | security | group | Can view | file | - | groups/Teddy Bear Daycare/meal plan | Brian | user | Can edit with trashbin | folder | - | groups/Teddy Bear Daycare/meal plan | Carol | user | Can edit with trashbin | folder | - | groups/Teddy Bear Daycare/meal plan/data.zip | Brian | user | Can edit with trashbin | file | - | groups/Teddy Bear Daycare/meal plan/data.zip | Carol | user | Can edit with trashbin | file | - # update share - And "Alice" updates following sharee role - | resource | recipient | type | role | resourceType | - | groups/Pre-Schools Pirates/meal plan | Carol | user | Can view | folder | - | groups/Pre-Schools Pirates/meal plan/lorem-big.txt | sales | group | Can edit with trashbin | file | - | groups/Kindergarten Koalas/meal plan | sales | group | Can edit with trashbin | folder | - | groups/Teddy Bear Daycare/meal plan/data.zip | Carol | user | Can edit with trashbin | file | - # Then what do we check for to be confident that the above things done by Alice have worked? - When "Brian" logs in - And "Brian" navigates to the shared with me page - And "Brian" downloads the following resources using the sidebar panel - | resource | from | type | - | data.zip | meal plan | file | - # Then what do we check for to be confident that the above things done by Brian have worked? - # Then the downloaded zip should contain... ? - When "Carol" logs in - And "Carol" navigates to the shared with me page - And "Carol" downloads the following resources using the sidebar panel - | resource | from | type | - | data.zip | meal plan | file | - | lorem.txt | meal plan | file | - | lorem-big.txt | meal plan | file | - | meal plan | | folder | - # Then what do we check for to be confident that the above things done by Carol have worked? - # Then the downloaded files should have content "abc..." - And "Carol" logs out - When "Brian" downloads the following resources using the sidebar panel - | resource | from | type | - | lorem.txt | meal plan | file | - | lorem-big.txt | meal plan | file | - | meal plan | | folder | - # Then what do we check for to be confident that the above things done by Brian have worked? - # Then the downloaded files should have content "abc..." - And "Brian" logs out - And "Alice" downloads the following resources using the sidebar panel - | resource | from | type | - | parent.txt | groups/Kindergarten Koalas/meal plan | file | - | lorem.txt | groups/Kindergarten Koalas/meal plan | file | - | lorem-big.txt | groups/Kindergarten Koalas/meal plan | file | - | data.zip | groups/Pre-Schools Pirates/meal plan | file | - | lorem.txt | groups/Pre-Schools Pirates/meal plan | file | - | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | file | - | data.zip | groups/Teddy Bear Daycare/meal plan | file | - | lorem.txt | groups/Teddy Bear Daycare/meal plan | file | - | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | file | - | meal plan | groups/Kindergarten Koalas | folder | - | meal plan | groups/Pre-Schools Pirates | folder | - | meal plan | groups/Teddy Bear Daycare | folder | - | Kindergarten Koalas | groups | folder | - | Pre-Schools Pirates | groups | folder | - | Teddy Bear Daycare | groups | folder | - | groups | | folder | - And "Alice" deletes the following resources using the batch action - | resource | from | - | lorem.txt | groups/Kindergarten Koalas/meal plan | - | lorem-big.txt | groups/Kindergarten Koalas/meal plan | - | data.zip | groups/Pre-Schools Pirates/meal plan | - | lorem.txt | groups/Pre-Schools Pirates/meal plan | - | lorem-big.txt | groups/Pre-Schools Pirates/meal plan | - | data.zip | groups/Teddy Bear Daycare/meal plan | - | lorem.txt | groups/Teddy Bear Daycare/meal plan | - | lorem-big.txt | groups/Teddy Bear Daycare/meal plan | - | Kindergarten Koalas | groups | - | Pre-Schools Pirates | groups | - | Teddy Bear Daycare | groups | - # Then what do we check for to be confident that the above things done by Alice have worked? - # Then the downloaded files should have content "abc..." - And "Alice" logs out