delete accounts
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
Feature: Accounts
|
||||
|
||||
Scenario: admin checks accounts list
|
||||
Given user "Moss" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then user "einstein" should be displayed in the accounts list on the WebUI
|
||||
And user "konnectd" should be displayed in the accounts list on the WebUI
|
||||
And user "marie" should be displayed in the accounts list on the WebUI
|
||||
And user "reva" should be displayed in the accounts list on the WebUI
|
||||
And user "richard" should be displayed in the accounts list on the WebUI
|
||||
|
||||
Scenario: admin changes non-admin user's role to admin
|
||||
Given user "Moss" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then user "einstein" should be displayed in the accounts list on the WebUI
|
||||
When the user changes the role of user "einstein" to "Admin" using the WebUI
|
||||
Then the displayed role of user "einstein" should be "Admin" on the WebUI
|
||||
When the user reloads the current page of the webUI
|
||||
Then the displayed role of user "einstein" should be "Admin" on the WebUI
|
||||
|
||||
Scenario: regular user should not be able to see accounts list
|
||||
Given user "Marie" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then the user should not be able to see the accounts list on the WebUI
|
||||
|
||||
Scenario: guest user should not be able to see accounts list
|
||||
Given user "Moss" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then user "einstein" should be displayed in the accounts list on the WebUI
|
||||
When the user changes the role of user "einstein" to "Guest" using the WebUI
|
||||
And the user logs out of the webUI
|
||||
And user "Einstein" logs in using the webUI
|
||||
And the user browses to the accounts page
|
||||
Then the user should not be able to see the accounts list on the WebUI
|
||||
|
||||
# We want to separate this into own scenarios but because we do not have clean env for each scenario yet
|
||||
# we are resetting it manually by combining them into one
|
||||
Scenario: disable/enable account
|
||||
Given user "Moss" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then user "einstein" should be displayed in the accounts list on the WebUI
|
||||
When the user disables user "einstein" using the WebUI
|
||||
Then the status indicator of user "einstein" should be "disabled" on the WebUI
|
||||
# And user "einstein" should not be able to log in
|
||||
When the user enables user "einstein" using the WebUI
|
||||
Then the status indicator of user "einstein" should be "enabled" on the WebUI
|
||||
# And user "einstein" should be able to log in
|
||||
|
||||
Scenario: disable/enable multiple accounts
|
||||
Given user "Moss" has logged in using the webUI
|
||||
When the user browses to the accounts page
|
||||
Then user "einstein" should be displayed in the accounts list on the WebUI
|
||||
And user "marie" should be displayed in the accounts list on the WebUI
|
||||
When the user disables users "einstein,marie" using the WebUI
|
||||
Then the status indicator of users "einstein,marie" should be "disabled" on the WebUI
|
||||
# And user "einstein" should not be able to log in
|
||||
# And user "marie" should not be able to log in
|
||||
When the user enables users "einstein,marie" using the WebUI
|
||||
Then the status indicator of user "einstein,marie" should be "enabled" on the WebUI
|
||||
# And user "einstein" should be able to log in
|
||||
# And user "marie" should be able to log in
|
||||
|
||||
Scenario: create a user
|
||||
Given user "Moss" has logged in using the webUI
|
||||
And the user browses to the accounts page
|
||||
When the user creates a new user with username "bob", email "bob@example.org" and password "bob" using the WebUI
|
||||
Then user "bob" should be displayed in the accounts list on the WebUI
|
||||
|
||||
Scenario: delete a user
|
||||
Given user "Moss" has logged in using the webUI
|
||||
And the user browses to the accounts page
|
||||
When the user deletes user "bob" using the WebUI
|
||||
Then user "bob" should not be displayed in the accounts list on the WebUI
|
||||
@@ -1,170 +0,0 @@
|
||||
const util = require('util')
|
||||
|
||||
module.exports = {
|
||||
url: function () {
|
||||
return this.api.launchUrl + '/#/accounts'
|
||||
},
|
||||
|
||||
commands: {
|
||||
navigateAndWaitUntilMounted: async function () {
|
||||
const url = this.url()
|
||||
return this.navigate(url).waitForElementVisible('@accountsApp')
|
||||
},
|
||||
accountsList: function () {
|
||||
return this.waitForElementVisible('@accountsListTable')
|
||||
},
|
||||
isUserListed: async function (username) {
|
||||
const usernameInTable = util.format(this.elements.userInAccountsList.selector, username)
|
||||
await this.useXpath().waitForElementVisible(usernameInTable)
|
||||
return true
|
||||
},
|
||||
isUserDeleted: async function (username) {
|
||||
const usernameInTable = util.format(this.elements.userInAccountsList.selector, username)
|
||||
await this.useXpath().waitForElementNotPresent(usernameInTable)
|
||||
return true
|
||||
},
|
||||
|
||||
selectRole: function (username, role) {
|
||||
const roleSelector =
|
||||
util.format(this.elements.rowByUsername.selector, username) +
|
||||
util.format(this.elements.roleInRolesDropdown.selector, role)
|
||||
|
||||
return this
|
||||
.initAjaxCounters()
|
||||
.waitForElementVisible('@rolesDropdownTrigger')
|
||||
.click('@rolesDropdownTrigger')
|
||||
.waitForElementVisible(roleSelector)
|
||||
.click(roleSelector)
|
||||
.waitForOutstandingAjaxCalls()
|
||||
},
|
||||
|
||||
checkUsersRole: function (username, role) {
|
||||
const roleSelector =
|
||||
util.format(this.elements.rowByUsername.selector, username) +
|
||||
util.format(this.elements.currentRole.selector, role)
|
||||
|
||||
return this.useXpath().expect.element(roleSelector).to.be.visible
|
||||
},
|
||||
|
||||
setUserActivated: function (usernames, activated) {
|
||||
this.selectUsers(usernames)
|
||||
return this.click(activated === true ? this.elements.batchActionEnable : this.elements.batchActionDisable)
|
||||
},
|
||||
|
||||
checkUsersStatus: function (usernames, status) {
|
||||
usernames = usernames.split(',')
|
||||
|
||||
for (const username of usernames) {
|
||||
const indicatorSelector =
|
||||
util.format(this.elements.rowByUsername.selector, username) +
|
||||
util.format(this.elements.statusIndicator.selector, status)
|
||||
|
||||
this.useXpath().waitForElementVisible(indicatorSelector)
|
||||
}
|
||||
|
||||
return this
|
||||
},
|
||||
|
||||
deleteUsers: function (usernames) {
|
||||
this.selectUsers(usernames)
|
||||
return this.click(this.elements.batchActionDelete)
|
||||
.waitForElementVisible(this.elements.batchActionDeleteConfirm)
|
||||
.click(this.elements.batchActionDeleteConfirm)
|
||||
},
|
||||
|
||||
selectUsers: function (usernames) {
|
||||
usernames = usernames.split(',')
|
||||
|
||||
for (const username of usernames) {
|
||||
const checkboxSelector =
|
||||
util.format(this.elements.rowByUsername.selector, username) +
|
||||
this.elements.rowCheckbox.selector
|
||||
|
||||
this.useXpath().click(checkboxSelector)
|
||||
}
|
||||
|
||||
return this
|
||||
},
|
||||
|
||||
createUser: function (username, email, password) {
|
||||
return this
|
||||
.click('@accountsNewAccountTrigger')
|
||||
.setValue('@newAccountInputUsername', username)
|
||||
.setValue('@newAccountInputEmail', email)
|
||||
.setValue('@newAccountInputPassword', password)
|
||||
.click('@newAccountButtonConfirm')
|
||||
}
|
||||
},
|
||||
|
||||
elements: {
|
||||
accountsApp: {
|
||||
selector: '#accounts-app'
|
||||
},
|
||||
accountsListTable: {
|
||||
selector: "//table[@class='uk-table uk-table-middle uk-table-divider']",
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
userInAccountsList: {
|
||||
selector: '//table//td[text()="%s"]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
rowByUsername: {
|
||||
selector: '//table//td[text()="%s"]/ancestor::tr',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
currentRole: {
|
||||
selector: '//span[contains(@class, "accounts-roles-current-role") and normalize-space()="%s"]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
roleInRolesDropdown: {
|
||||
selector: '//label[contains(@class, "accounts-roles-dropdown-role") and normalize-space()="%s"]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
rolesDropdownTrigger: {
|
||||
selector: '//button[contains(@class, "accounts-roles-select-trigger")]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
loadingAccountsList: {
|
||||
selector: '//div[contains(@class, "oc-loader")]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
rowCheckbox: {
|
||||
selector: '//input[@class="oc-checkbox"]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
batchActionDisable: {
|
||||
selector: '#accounts-batch-action-disable'
|
||||
},
|
||||
batchActionEnable: {
|
||||
selector: '#accounts-batch-action-enable'
|
||||
},
|
||||
batchActionDelete: {
|
||||
selector: '#accounts-batch-action-delete'
|
||||
},
|
||||
batchActionDeleteCancel: {
|
||||
selector: '#accounts-batch-action-delete-cancel'
|
||||
},
|
||||
batchActionDeleteConfirm: {
|
||||
selector: '#accounts-batch-action-delete-confirm'
|
||||
},
|
||||
statusIndicator: {
|
||||
selector: '//span[contains(@class, "accounts-status-indicator-%s")]',
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
newAccountInputUsername: {
|
||||
selector: '#accounts-new-account-input-username'
|
||||
},
|
||||
newAccountInputEmail: {
|
||||
selector: '#accounts-new-account-input-email'
|
||||
},
|
||||
newAccountInputPassword: {
|
||||
selector: '#accounts-new-account-input-password'
|
||||
},
|
||||
newAccountButtonConfirm: {
|
||||
selector: '#accounts-new-account-button-confirm'
|
||||
},
|
||||
accountsNewAccountTrigger: {
|
||||
selector: '#accounts-new-account-trigger'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
const assert = require('assert')
|
||||
const { client } = require('nightwatch-api')
|
||||
const { Given, When, Then } = require('cucumber')
|
||||
|
||||
When('the user browses to the accounts page', function () {
|
||||
return client.page.accountsPage().navigateAndWaitUntilMounted()
|
||||
})
|
||||
|
||||
Then('user {string} should be displayed in the accounts list on the WebUI', async function (username) {
|
||||
await client.page.accountsPage().accountsList()
|
||||
const userListed = await client.page.accountsPage().isUserListed(username)
|
||||
return assert.strictEqual(userListed, true)
|
||||
})
|
||||
|
||||
Then('user {string} should not be displayed in the accounts list on the WebUI', async function (username) {
|
||||
await client.page.accountsPage().accountsList()
|
||||
const userDeleted = await client.page.accountsPage().isUserDeleted(username)
|
||||
return assert.strictEqual(userDeleted, true)
|
||||
})
|
||||
|
||||
Given('the user has changed the role of user {string} to {string}', function (username, role) {
|
||||
return client.page.accountsPage().selectRole(username, role)
|
||||
})
|
||||
|
||||
When('the user changes the role of user {string} to {string} using the WebUI', function (username, role) {
|
||||
return client.page.accountsPage().selectRole(username, role)
|
||||
})
|
||||
|
||||
Then('the displayed role of user {string} should be {string} on the WebUI', function (username, role) {
|
||||
return client.page.accountsPage().checkUsersRole(username, role)
|
||||
})
|
||||
|
||||
Then('the user should not be able to see the accounts list on the WebUI', async function () {
|
||||
return client.page.accountsPage()
|
||||
.waitForAjaxCallsToStartAndFinish()
|
||||
.waitForElementVisible('@loadingAccountsList')
|
||||
.waitForElementNotPresent('@accountsListTable')
|
||||
})
|
||||
|
||||
When('the user disables user/users {string} using the WebUI', function (usernames) {
|
||||
return client.page.accountsPage().setUserActivated(usernames, false)
|
||||
})
|
||||
|
||||
When('the user enables user/users {string} using the WebUI', function (usernames) {
|
||||
return client.page.accountsPage().setUserActivated(usernames, true)
|
||||
})
|
||||
|
||||
Then('the status indicator of user/users {string} should be {string} on the WebUI', function (usernames, status) {
|
||||
return client.page.accountsPage().checkUsersStatus(usernames, status)
|
||||
})
|
||||
|
||||
When(
|
||||
'the user creates a new user with username {string}, email {string} and password {string} using the WebUI',
|
||||
function (username, email, password) {
|
||||
return client.page.accountsPage().createUser(username, email, password)
|
||||
}
|
||||
)
|
||||
|
||||
When('the user deletes user/users {string} using the WebUI', function (usernames) {
|
||||
return client.page.accountsPage().deleteUsers(usernames)
|
||||
})
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
|
||||
# OpenID Connect client registry.
|
||||
clients:
|
||||
- id: phoenix
|
||||
name: OCIS
|
||||
application_type: web
|
||||
insecure: yes
|
||||
trusted: yes
|
||||
redirect_uris:
|
||||
- https://ocis-server:9200/oidc-callback.html
|
||||
- https://ocis-server:9200/
|
||||
origins:
|
||||
- https://ocis-server:9200
|
||||
|
||||
authorities:
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"server": "https://ocis-server:9200",
|
||||
"theme": "owncloud",
|
||||
"version": "0.1.0",
|
||||
"openIdConnect": {
|
||||
"metadata_url": "https://ocis-server:9200/.well-known/openid-configuration",
|
||||
"authority": "https://ocis-server:9200",
|
||||
"client_id": "phoenix",
|
||||
"response_type": "code",
|
||||
"scope": "openid profile email"
|
||||
},
|
||||
"apps": [
|
||||
"files",
|
||||
"draw-io",
|
||||
"pdf-viewer",
|
||||
"markdown-editor",
|
||||
"media-viewer"
|
||||
],
|
||||
"external_apps": [
|
||||
{
|
||||
"id": "accounts",
|
||||
"path": "https://ocis-server:9200/accounts.js",
|
||||
"config": {
|
||||
"url": "https://ocis-server:9200"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$PHOENIX_PATH" ]
|
||||
then
|
||||
echo "PHOENIX_PATH env variable is not set, cannot find files for tests infrastructure"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$OCIS_SKELETON_DIR" ]
|
||||
then
|
||||
echo "OCIS_SKELETON_DIR env variable is not set, cannot find skeleton directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$PHOENIX_CONFIG" ]
|
||||
then
|
||||
echo "PHOENIX_CONFIG env variable is not set, cannot find phoenix config file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Features path not given, exiting test run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap clean_up SIGHUP SIGINT SIGTERM
|
||||
|
||||
if [ -z "$TEST_INFRA_DIRECTORY" ]
|
||||
then
|
||||
cleanup=true
|
||||
testFolder=$(< /dev/urandom tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
|
||||
printf "creating folder $testFolder for Test infrastructure setup\n\n"
|
||||
export TEST_INFRA_DIRECTORY=$testFolder
|
||||
fi
|
||||
|
||||
clean_up() {
|
||||
if $cleanup
|
||||
then
|
||||
if [ -d "$testFolder" ]; then
|
||||
printf "\n\n\n\nDeleting folder $testFolder Test infrastructure setup..."
|
||||
rm -rf "$testFolder"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
trap clean_up SIGHUP SIGINT SIGTERM EXIT
|
||||
|
||||
cp -r "$PHOENIX_PATH"/tests ./"$testFolder"
|
||||
|
||||
export SERVER_HOST=${SERVER_HOST:-https://localhost:9200}
|
||||
export BACKEND_HOST=${BACKEND_HOST:-https://localhost:9200}
|
||||
export RUN_ON_OCIS='true'
|
||||
export TEST_TAGS=${TEST_TAGS:-"not @skip"}
|
||||
|
||||
yarn run acceptance-tests "$1"
|
||||
|
||||
status=$?
|
||||
exit $status
|
||||
Reference in New Issue
Block a user