123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- const {Given, When, Then} = require('cucumber');
- const {client} = require('nightwatch-api');
- const fetch = require('node-fetch');
- const assert = require('assert');
- const {getDolApiKey} = require('../setup');
- let Login = {};
- Given('the administrator has browsed to the new users page', function () {
- return client.page.homePage().browsedToNewUserPage();
- });
- When('the admin creates user with following details', function (datatable) {
- return client.page.addUsersPage().adminCreatesUser(datatable);
- });
- Then('new user {string} should be created', function (lastname) {
- return client.page.addUsersPage().newUserShouldBeCreated(lastname);
- });
- Then('message {string} should be displayed in the webUI', function (message) {
- return client.page.addUsersPage().noPermissionMessage(message);
- });
- Then('message {string} should not be displayed in the webUI', function (message) {
- return client.page.addUsersPage().noPermissionDefinedMessageNotShown(message);
- });
- Then('new user {string} should not be created', function (lastname) {
- return client.page.addUsersPage().userNotCreated(lastname);
- });
- Given('a user has been created with following details', function (dataTable) {
- return adminHasCreatedUser(dataTable);
- });
- Given('the admin has created the following users', function (dataTable) {
- return adminHasCreatedUser(dataTable);
- });
- When('the admin creates user with following details using API', function (dataTable) {
- return adminCreatesUserWithAPI(dataTable);
- });
- Given('the user with login {string} does not exist', async function (login) {
- await userDoesNotExist(login);
- });
- Then('the response status code should be {string}', function (expectedStatusCode) {
- return getStatusCode(expectedStatusCode);
- });
- Then('user with login {string} should exist', function (login) {
- return userShouldExist(login);
- });
- Then('the response message should be {string}', function (expectedResponseMessage) {
- return getResponseMessage(expectedResponseMessage);
- });
- When('the non-admin user {string} with password {string} creates user with following details using API', async function (login, password, dataTable) {
- const userDolApikey = await getDolApiKey(login, password);
- return userCreatesUserWithApi(dataTable, userDolApikey);
- });
- const createUserRequest = function (login, lastname, password, api_key = null, dolApiKey = null) {
- const header = {};
- const url = client.globals.backend_url + 'api/index.php/users';
- header['Accept'] = 'application/json';
- if (dolApiKey === null) {
- header['DOLAPIKEY'] = client.globals.dolApiKey;
- } else {
- header['DOLAPIKEY'] = dolApiKey;
- }
- header['Content-Type'] = 'application/json';
- return fetch(url, {
- method: 'POST',
- headers: header,
- body: JSON.stringify(
- {
- login: login,
- lastname: lastname,
- pass: password,
- api_key: api_key
- }
- )
- });
- };
- const adminCreatesUserWithAPI = function (dataTable) {
- const userDetails = dataTable.rowsHash();
- return createUserRequest(userDetails['login'], userDetails['last name'], userDetails['password'])
- .then((res) => {
- client.globals.response = res;
- });
- };
- const userCreatesUserWithApi = function (dataTable, dolApiKey) {
- const userDetails = dataTable.rowsHash();
- return createUserRequest(userDetails['login'], userDetails['last name'], userDetails['password'], null, dolApiKey)
- .then((res) => {
- client.globals.response = res;
- });
- };
- const adminHasCreatedUser = async function (dataTable) {
- const userDetails = dataTable.hashes();
- for (const user of userDetails) {
- if (user['api_key']) {
- await createUserRequest(user['login'], user['last name'], user['password'], user['api_key'])
- .then((response) => {
- if (response.status < 200 || response.status >= 400) {
- throw new Error('Failed to create user: ' + user['login'] +
- ' ' + response.statusText);
- }
- });
- } else {
- await createUserRequest(user['login'], user['last name'], user['password'])
- .then((response) => {
- if (response.status < 200 || response.status >= 400) {
- throw new Error('Failed to create user: ' + user['login'] +
- ' ' + response.statusText);
- }
- });
- }
- }
- };
- const getUsersLogin = async function () {
- const header = {};
- const url = client.globals.backend_url + 'api/index.php/users/';
- header['Accept'] = 'application/json';
- header['DOLAPIKEY'] = client.globals.dolApiKey;
- header['Content-Type'] = 'application/json';
- await fetch(url, {
- method: 'GET',
- headers: header
- })
- .then(async (response) => {
- const json_response = await response.json();
- for (const user of json_response) {
- Login[user.login] = user.login;
- }
- });
- };
- const userDoesNotExist = async function (login) {
- await getUsersLogin();
- if (login in Login) {
- Login = {};
- throw new Error(`user ${login} exists`);
- }
- Login = {};
- return;
- };
- const userShouldExist = async function (login) {
- await getUsersLogin();
- if (login in Login) {
- Login = {};
- return;
- } else {
- Login = {};
- throw new Error(`User ${login} does not Exist`);
- }
- };
- const getStatusCode = async function (expectedStatusCode) {
- const actualStatusCode = client.globals.response.status.toString();
- return assert.strictEqual(actualStatusCode, expectedStatusCode,
- `The expected status code was ${expectedStatusCode} but got ${actualStatusCode}`);
- };
- const getResponseMessage = async function (expectedResponseMessage) {
- const json_response = await client.globals.response.json();
- const actualResponseMessage = json_response['error']['0'];
- return assert.strictEqual(actualResponseMessage, expectedResponseMessage,
- `the expected response message was ${expectedResponseMessage} but got ${actualResponseMessage}`);
- };
|