Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Nightly Race / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
103 lines
3.2 KiB
JavaScript
103 lines
3.2 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {v4 as uuidv4} from 'uuid';
|
|
|
|
import messageMenusData from '../fixtures/hooks/message_menus.json';
|
|
import messageMenusWithDatasourceData from '../fixtures/hooks/message_menus_with_datasource.json';
|
|
|
|
export * from './constants';
|
|
export * from './email';
|
|
export * from './file';
|
|
export * from './plugins';
|
|
|
|
/**
|
|
* @param {Number} length - length on random string to return, e.g. 7 (default)
|
|
* @return {String} random string
|
|
*/
|
|
export function getRandomId(length = 7) {
|
|
const MAX_SUBSTRING_INDEX = 27;
|
|
|
|
return uuidv4().replace(/-/g, '').substring(MAX_SUBSTRING_INDEX - length, MAX_SUBSTRING_INDEX);
|
|
}
|
|
|
|
export function getRandomLetter(length) {
|
|
return Array.from({length}, () => String.fromCharCode(97 + Math.floor(Math.random() * 26))).join('');
|
|
}
|
|
|
|
export function getMessageMenusPayload({dataSource, options, prefix = Date.now()} = {}) {
|
|
let data;
|
|
if (dataSource) {
|
|
data = messageMenusWithDatasourceData;
|
|
data.attachments[0].actions[0].data_source = dataSource;
|
|
data.attachments[0].pretext = `${prefix}: This is attachment pretext with ${dataSource} options`;
|
|
data.attachments[0].text = `${prefix}: This is attachment text with ${dataSource} options`;
|
|
} else {
|
|
data = messageMenusData;
|
|
data.attachments[0].pretext = `${prefix}: This is attachment pretext with basic options`;
|
|
data.attachments[0].text = `${prefix}: This is attachment text with basic options`;
|
|
|
|
if (options) {
|
|
data.attachments[0].actions[0].options = options;
|
|
}
|
|
}
|
|
|
|
const callbackUrl = Cypress.expose().webhookBaseUrl + '/message_menus';
|
|
data.attachments[0].actions[0].integration.url = callbackUrl;
|
|
|
|
return data;
|
|
}
|
|
|
|
export function hexToRgbArray(hex) {
|
|
const rgbArr = hex.replace('#', '').match(/.{1,2}/g);
|
|
return [
|
|
parseInt(rgbArr[0], 16),
|
|
parseInt(rgbArr[1], 16),
|
|
parseInt(rgbArr[2], 16),
|
|
];
|
|
}
|
|
|
|
export function rgbArrayToString(rgbArr) {
|
|
return `rgb(${rgbArr[0]}, ${rgbArr[1]}, ${rgbArr[2]})`;
|
|
}
|
|
|
|
// Returns a FIPS-compliant test password (>= 14 chars with complexity).
|
|
// Static for now but could generate unique passwords if requirements change.
|
|
export function newTestPassword() {
|
|
return 'Passwd4Testing!';
|
|
}
|
|
|
|
export const reUrl = /(https?:\/\/[^ ]*)/;
|
|
|
|
const userAgent = () => window.navigator.userAgent;
|
|
|
|
export function isWindows() {
|
|
return userAgent().indexOf('Windows') !== -1;
|
|
}
|
|
|
|
export function isMac() {
|
|
return userAgent().indexOf('Macintosh') !== -1;
|
|
}
|
|
|
|
// Stubs out the clipboard so that we can intercept copy events. Note that this only stubs out calls to
|
|
// navigator.clipboard.writeText and not document.execCommand.
|
|
export function stubClipboard() {
|
|
const clipboard = {contents: '', wasCalled: false};
|
|
|
|
cy.window().then((win) => {
|
|
if (!win.navigator.clipboard) {
|
|
win.navigator.clipboard = {
|
|
writeText: () => {},
|
|
};
|
|
}
|
|
|
|
cy.stub(win.navigator.clipboard, 'writeText').callsFake((link) => {
|
|
clipboard.wasCalled = true;
|
|
clipboard.contents = link;
|
|
return Promise.resolve(true);
|
|
});
|
|
});
|
|
|
|
return cy.wrap(clipboard);
|
|
}
|