a498149a76
* Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
Cypress.Commands.add('apiRegisterUser', (data: Cypress.UserData, token?: string, failOnError?: boolean) => {
|
|
return cy.request({
|
|
method: 'POST',
|
|
url: '/api/v1/register',
|
|
body: {
|
|
...data,
|
|
token,
|
|
},
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
},
|
|
failOnStatusCode: failOnError,
|
|
})
|
|
})
|
|
|
|
Cypress.Commands.add('apiLoginUser', (data: Cypress.LoginData) => {
|
|
return cy.request({
|
|
method: 'POST',
|
|
url: '/api/v1/login',
|
|
body: {
|
|
...data,
|
|
type: 'normal',
|
|
},
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
},
|
|
}).then((response) => {
|
|
expect(response.body).to.have.property('token')
|
|
localStorage.setItem('focalboardSessionId', response.body.token)
|
|
})
|
|
})
|
|
|
|
Cypress.Commands.add('apiInitServer', () => {
|
|
const data: Cypress.UserData = {
|
|
username: Cypress.env('username'),
|
|
password: Cypress.env('password'),
|
|
email: Cypress.env('email'),
|
|
}
|
|
return cy.apiRegisterUser(data, '', false).apiLoginUser(data)
|
|
})
|
|
|
|
const headers = () => ({
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
Authorization: `Bearer ${localStorage.getItem('focalboardSessionId')}`,
|
|
},
|
|
})
|
|
|
|
Cypress.Commands.add('apiGetMe', () => {
|
|
return cy.request({
|
|
method: 'GET',
|
|
url: '/api/v1/users/me',
|
|
...headers(),
|
|
}).then((response) => response.body.id)
|
|
})
|
|
|
|
Cypress.Commands.add('apiChangePassword', (userId: string, oldPassword: string, newPassword: string) => {
|
|
const body = {oldPassword, newPassword}
|
|
return cy.request({
|
|
method: 'POST',
|
|
url: `/api/v1/users/${encodeURIComponent(userId)}/changepassword`,
|
|
...headers(),
|
|
body,
|
|
})
|
|
})
|