@eclipse-che/che-e2e 7.110.0-next-4507346 → 7.110.0-next-5d75852
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pageobjects/dashboard/UserPreferences.js +77 -2
- package/dist/pageobjects/dashboard/UserPreferences.js.map +1 -1
- package/dist/specs/dashboard-samples/Documentation.spec.js +1 -1
- package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js +89 -0
- package/dist/specs/factory/SshUrlNoOauthPatFactory.spec.js.map +1 -0
- package/package.json +1 -1
- package/pageobjects/dashboard/UserPreferences.ts +68 -2
- package/resources/factory/pr-k.txt +1 -0
- package/resources/factory/pub-k.txt +1 -0
- package/specs/dashboard-samples/Documentation.spec.ts +1 -1
- package/specs/factory/SshUrlNoOauthPatFactory.spec.ts +101 -0
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
8
31
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
32
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
33
|
};
|
|
@@ -15,7 +38,7 @@ var UserPreferences_1;
|
|
|
15
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
39
|
exports.UserPreferences = void 0;
|
|
17
40
|
/** *******************************************************************
|
|
18
|
-
* copyright (c) 2019-
|
|
41
|
+
* copyright (c) 2019-2025 Red Hat, Inc.
|
|
19
42
|
*
|
|
20
43
|
* This program and the accompanying materials are made
|
|
21
44
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -25,6 +48,8 @@ exports.UserPreferences = void 0;
|
|
|
25
48
|
**********************************************************************/
|
|
26
49
|
const inversify_1 = require("inversify");
|
|
27
50
|
require("reflect-metadata");
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
28
53
|
const inversify_types_1 = require("../../configs/inversify.types");
|
|
29
54
|
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
30
55
|
const DriverHelper_1 = require("../../utils/DriverHelper");
|
|
@@ -47,7 +72,7 @@ let UserPreferences = UserPreferences_1 = class UserPreferences {
|
|
|
47
72
|
await this.openGitServicesTab();
|
|
48
73
|
await this.openPatTab();
|
|
49
74
|
await this.openGitConfigPage();
|
|
50
|
-
await this.
|
|
75
|
+
await this.checkAddSshKeyButtonAvailability();
|
|
51
76
|
}
|
|
52
77
|
async openContainerRegistriesTab() {
|
|
53
78
|
Logger_1.Logger.debug();
|
|
@@ -82,8 +107,49 @@ let UserPreferences = UserPreferences_1 = class UserPreferences {
|
|
|
82
107
|
async openSshKeyTab() {
|
|
83
108
|
Logger_1.Logger.debug();
|
|
84
109
|
await this.driverHelper.waitAndClick(UserPreferences_1.SSH_KEY_TAB);
|
|
110
|
+
}
|
|
111
|
+
async checkAddSshKeyButtonAvailability() {
|
|
112
|
+
Logger_1.Logger.debug();
|
|
113
|
+
await this.openSshKeyTab();
|
|
85
114
|
await this.driverHelper.waitVisibility(UserPreferences_1.ADD_NEW_SSH_KEY_BUTTON);
|
|
86
115
|
}
|
|
116
|
+
async addSshKeys(privateSshKeyPath, publicSshKeyPath) {
|
|
117
|
+
Logger_1.Logger.debug();
|
|
118
|
+
Logger_1.Logger.info('Adding new SSH keys');
|
|
119
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.ADD_NEW_SSH_KEY_BUTTON);
|
|
120
|
+
await this.driverHelper.waitVisibility(UserPreferences_1.ADD_SSH_KEYS_POPUP);
|
|
121
|
+
await this.uploadSshKeys(privateSshKeyPath, publicSshKeyPath);
|
|
122
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.ADD_SSH_KEYS_BUTTON);
|
|
123
|
+
await this.driverHelper.waitVisibility(UserPreferences_1.GIT_SSH_KEY_NAME);
|
|
124
|
+
Logger_1.Logger.info('SSH keys have been added');
|
|
125
|
+
}
|
|
126
|
+
async uploadSshKeys(privateSshKeyPath, publicSshKeyPath) {
|
|
127
|
+
Logger_1.Logger.debug();
|
|
128
|
+
const privateSshKey = Buffer.from(fs.readFileSync(path.resolve(privateSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
|
|
129
|
+
const publicSshKey = Buffer.from(fs.readFileSync(path.resolve(publicSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
|
|
130
|
+
Logger_1.Logger.info('Pasting private SSH key');
|
|
131
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.PASTE_PRIVATE_SSH_KEY_FIELD);
|
|
132
|
+
await this.driverHelper.getAction().sendKeys(privateSshKey).perform();
|
|
133
|
+
Logger_1.Logger.info('Pasting public SSH key');
|
|
134
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.PASTE_PUBLIC_SSH_KEY_FIELD);
|
|
135
|
+
await this.driverHelper.getAction().sendKeys(publicSshKey).perform();
|
|
136
|
+
}
|
|
137
|
+
async isSshKeyPresent() {
|
|
138
|
+
Logger_1.Logger.debug();
|
|
139
|
+
return this.driverHelper.isVisible(UserPreferences_1.GIT_SSH_KEY_NAME);
|
|
140
|
+
}
|
|
141
|
+
async deleteSshKeys() {
|
|
142
|
+
Logger_1.Logger.debug();
|
|
143
|
+
Logger_1.Logger.info('Deleting SSH keys');
|
|
144
|
+
await this.openSshKeyTab();
|
|
145
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.GIT_SSH_KEY_ACTIONS_BUTTON, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
|
|
146
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.DELETE_BUTTON);
|
|
147
|
+
await this.driverHelper.waitVisibility(UserPreferences_1.CONFIRM_DELETE_SSH_KEYS_POPUP);
|
|
148
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.CONFIRM_DELETE_SSH_KEYS_CHECKBOX);
|
|
149
|
+
await this.driverHelper.waitAndClick(UserPreferences_1.DELETE_BUTTON);
|
|
150
|
+
await this.driverHelper.waitDisappearance(UserPreferences_1.GIT_SSH_KEY_NAME);
|
|
151
|
+
Logger_1.Logger.info('SSH keys have been deleted');
|
|
152
|
+
}
|
|
87
153
|
getServiceConfig(service) {
|
|
88
154
|
const gitService = {
|
|
89
155
|
[FACTORY_TEST_CONSTANTS_1.GitProviderType.GITHUB]: 'GitHub',
|
|
@@ -110,6 +176,15 @@ UserPreferences.ADD_NEW_PAT_BUTTON = selenium_webdriver_1.By.xpath('//button[tex
|
|
|
110
176
|
UserPreferences.GIT_CONFIG_PAGE = selenium_webdriver_1.By.xpath('//button[text()="Gitconfig"]');
|
|
111
177
|
UserPreferences.SSH_KEY_TAB = selenium_webdriver_1.By.xpath('//button[text()="SSH Keys"]');
|
|
112
178
|
UserPreferences.ADD_NEW_SSH_KEY_BUTTON = selenium_webdriver_1.By.xpath('//button[text()="Add SSH Key"]');
|
|
179
|
+
UserPreferences.ADD_SSH_KEYS_POPUP = selenium_webdriver_1.By.xpath('//span[text()="Add SSH Keys"]');
|
|
180
|
+
UserPreferences.PASTE_PRIVATE_SSH_KEY_FIELD = selenium_webdriver_1.By.css('textarea[name="ssh-private-key"]');
|
|
181
|
+
UserPreferences.PASTE_PUBLIC_SSH_KEY_FIELD = selenium_webdriver_1.By.css('textarea[name="ssh-public-key"]');
|
|
182
|
+
UserPreferences.ADD_SSH_KEYS_BUTTON = selenium_webdriver_1.By.css('.pf-c-button.pf-m-primary');
|
|
183
|
+
UserPreferences.GIT_SSH_KEY_NAME = selenium_webdriver_1.By.css('[data-testid="title"]');
|
|
184
|
+
UserPreferences.GIT_SSH_KEY_ACTIONS_BUTTON = selenium_webdriver_1.By.css('section[id*="SshKeys-user-preferences"] button[aria-label="Actions"]');
|
|
185
|
+
UserPreferences.DELETE_BUTTON = selenium_webdriver_1.By.xpath('//button[text()="Delete"]');
|
|
186
|
+
UserPreferences.CONFIRM_DELETE_SSH_KEYS_POPUP = selenium_webdriver_1.By.css('div[id^="pf-modal-part"][role="dialog"]');
|
|
187
|
+
UserPreferences.CONFIRM_DELETE_SSH_KEYS_CHECKBOX = selenium_webdriver_1.By.id('delete-ssh-keys-warning-checkbox');
|
|
113
188
|
UserPreferences.CONFIRMATION_WINDOW = selenium_webdriver_1.By.xpath('//span[text()="Revoke Git Services"]');
|
|
114
189
|
UserPreferences.DELETE_CONFIRMATION_CHECKBOX = selenium_webdriver_1.By.xpath('//input[@data-testid="warning-info-checkbox"]');
|
|
115
190
|
UserPreferences.DELETE_ITEM_BUTTON_ENABLED = selenium_webdriver_1.By.xpath('//button[@data-testid="revoke-button" and not(@disabled)]');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/UserPreferences.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserPreferences.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/UserPreferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS_1.BA
|
|
|
37
37
|
});
|
|
38
38
|
suiteSetup('Get links from product version github branch', function () {
|
|
39
39
|
try {
|
|
40
|
-
({ docs, links, productVersion } = JSON.parse(shellExecutor.executeCommand(
|
|
40
|
+
({ docs, links, productVersion } = JSON.parse(shellExecutor.executeCommand('oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json')));
|
|
41
41
|
}
|
|
42
42
|
catch (e) {
|
|
43
43
|
Logger_1.Logger.error('Cannot fetch documentation links');
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** *******************************************************************
|
|
3
|
+
* copyright (c) 2025 Red Hat, Inc.
|
|
4
|
+
*
|
|
5
|
+
* This program and the accompanying materials are made
|
|
6
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
7
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
8
|
+
*
|
|
9
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
10
|
+
**********************************************************************/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const inversify_types_1 = require("../../configs/inversify.types");
|
|
13
|
+
const inversify_config_1 = require("../../configs/inversify.config");
|
|
14
|
+
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
15
|
+
const MochaHooks_1 = require("../MochaHooks");
|
|
16
|
+
const StringUtil_1 = require("../../utils/StringUtil");
|
|
17
|
+
const FACTORY_TEST_CONSTANTS_1 = require("../../constants/FACTORY_TEST_CONSTANTS");
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
20
|
+
const Logger_1 = require("../../utils/Logger");
|
|
21
|
+
suite(`The SshUrlNoOauthPatFactory userstory ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
22
|
+
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
23
|
+
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
24
|
+
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
25
|
+
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
26
|
+
const userPreferences = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.UserPreferences);
|
|
27
|
+
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
28
|
+
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
29
|
+
const factoryUrl = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL ||
|
|
30
|
+
'ssh://git@bitbucket-ssh.apps.ds-airgap2-v15.crw-qe.com/~admin/private-bb-repo.git';
|
|
31
|
+
const privateSshKeyPath = 'resources/factory/pr-k.txt';
|
|
32
|
+
const publicSshKeyPath = 'resources/factory/pub-k.txt';
|
|
33
|
+
let projectSection;
|
|
34
|
+
async function deleteSshKeys() {
|
|
35
|
+
Logger_1.Logger.debug('Deleting SSH keys if they are present');
|
|
36
|
+
await userPreferences.openUserPreferencesPage();
|
|
37
|
+
await userPreferences.openSshKeyTab();
|
|
38
|
+
if (await userPreferences.isSshKeyPresent()) {
|
|
39
|
+
await userPreferences.deleteSshKeys();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
suite(`Create workspace from factory:${factoryUrl}`, function () {
|
|
43
|
+
suiteSetup('Login', async function () {
|
|
44
|
+
await loginTests.loginIntoChe();
|
|
45
|
+
await deleteSshKeys();
|
|
46
|
+
});
|
|
47
|
+
test('Add SSH keys', async function () {
|
|
48
|
+
await userPreferences.openUserPreferencesPage();
|
|
49
|
+
await userPreferences.openSshKeyTab();
|
|
50
|
+
await userPreferences.addSshKeys(privateSshKeyPath, publicSshKeyPath);
|
|
51
|
+
});
|
|
52
|
+
test(`Create and open new workspace from factory:${factoryUrl}`, async function () {
|
|
53
|
+
await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
|
|
54
|
+
});
|
|
55
|
+
test('Obtain workspace name from workspace loader page', async function () {
|
|
56
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
57
|
+
});
|
|
58
|
+
test('Register running workspace', function () {
|
|
59
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
60
|
+
});
|
|
61
|
+
test('Wait workspace readiness', async function () {
|
|
62
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
63
|
+
});
|
|
64
|
+
test('Check a project folder has been created', async function () {
|
|
65
|
+
const projectName = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil_1.StringUtil.getProjectNameFromGitUrl(factoryUrl);
|
|
66
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
67
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not
|
|
68
|
+
.undefined;
|
|
69
|
+
});
|
|
70
|
+
test('Accept the project as a trusted one', async function () {
|
|
71
|
+
await projectAndFileTests.performTrustAuthorDialog();
|
|
72
|
+
});
|
|
73
|
+
test('Check the project files was imported', async function () {
|
|
74
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME), 'Project files were not imported').not.undefined;
|
|
75
|
+
});
|
|
76
|
+
suiteTeardown('Delete SSH keys', async function () {
|
|
77
|
+
await dashboard.openDashboard();
|
|
78
|
+
await deleteSshKeys();
|
|
79
|
+
});
|
|
80
|
+
suiteTeardown('Stop and delete the workspace by APII', async function () {
|
|
81
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
82
|
+
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
83
|
+
});
|
|
84
|
+
suiteTeardown('Unregister running workspace', function () {
|
|
85
|
+
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=SshUrlNoOauthPatFactory.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SshUrlNoOauthPatFactory.spec.js","sourceRoot":"","sources":["../../../specs/factory/SshUrlNoOauthPatFactory.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** *******************************************************************
|
|
2
|
-
* copyright (c) 2019-
|
|
2
|
+
* copyright (c) 2019-2025 Red Hat, Inc.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
**********************************************************************/
|
|
10
10
|
import { inject, injectable } from 'inversify';
|
|
11
11
|
import 'reflect-metadata';
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
12
14
|
import { CLASSES } from '../../configs/inversify.types';
|
|
13
15
|
import { By } from 'selenium-webdriver';
|
|
14
16
|
import { DriverHelper } from '../../utils/DriverHelper';
|
|
@@ -34,6 +36,15 @@ export class UserPreferences {
|
|
|
34
36
|
|
|
35
37
|
private static readonly SSH_KEY_TAB: By = By.xpath('//button[text()="SSH Keys"]');
|
|
36
38
|
private static readonly ADD_NEW_SSH_KEY_BUTTON: By = By.xpath('//button[text()="Add SSH Key"]');
|
|
39
|
+
private static readonly ADD_SSH_KEYS_POPUP: By = By.xpath('//span[text()="Add SSH Keys"]');
|
|
40
|
+
private static readonly PASTE_PRIVATE_SSH_KEY_FIELD: By = By.css('textarea[name="ssh-private-key"]');
|
|
41
|
+
private static readonly PASTE_PUBLIC_SSH_KEY_FIELD: By = By.css('textarea[name="ssh-public-key"]');
|
|
42
|
+
private static readonly ADD_SSH_KEYS_BUTTON: By = By.css('.pf-c-button.pf-m-primary');
|
|
43
|
+
private static readonly GIT_SSH_KEY_NAME: By = By.css('[data-testid="title"]');
|
|
44
|
+
private static readonly GIT_SSH_KEY_ACTIONS_BUTTON: By = By.css('section[id*="SshKeys-user-preferences"] button[aria-label="Actions"]');
|
|
45
|
+
private static readonly DELETE_BUTTON: By = By.xpath('//button[text()="Delete"]');
|
|
46
|
+
private static readonly CONFIRM_DELETE_SSH_KEYS_POPUP: By = By.css('div[id^="pf-modal-part"][role="dialog"]');
|
|
47
|
+
private static readonly CONFIRM_DELETE_SSH_KEYS_CHECKBOX: By = By.id('delete-ssh-keys-warning-checkbox');
|
|
37
48
|
|
|
38
49
|
private static readonly CONFIRMATION_WINDOW: By = By.xpath('//span[text()="Revoke Git Services"]');
|
|
39
50
|
private static readonly DELETE_CONFIRMATION_CHECKBOX: By = By.xpath('//input[@data-testid="warning-info-checkbox"]');
|
|
@@ -60,7 +71,7 @@ export class UserPreferences {
|
|
|
60
71
|
await this.openGitServicesTab();
|
|
61
72
|
await this.openPatTab();
|
|
62
73
|
await this.openGitConfigPage();
|
|
63
|
-
await this.
|
|
74
|
+
await this.checkAddSshKeyButtonAvailability();
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
async openContainerRegistriesTab(): Promise<void> {
|
|
@@ -116,9 +127,64 @@ export class UserPreferences {
|
|
|
116
127
|
Logger.debug();
|
|
117
128
|
|
|
118
129
|
await this.driverHelper.waitAndClick(UserPreferences.SSH_KEY_TAB);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async checkAddSshKeyButtonAvailability(): Promise<void> {
|
|
133
|
+
Logger.debug();
|
|
134
|
+
|
|
135
|
+
await this.openSshKeyTab();
|
|
119
136
|
await this.driverHelper.waitVisibility(UserPreferences.ADD_NEW_SSH_KEY_BUTTON);
|
|
120
137
|
}
|
|
121
138
|
|
|
139
|
+
async addSshKeys(privateSshKeyPath: string, publicSshKeyPath: string): Promise<void> {
|
|
140
|
+
Logger.debug();
|
|
141
|
+
|
|
142
|
+
Logger.info('Adding new SSH keys');
|
|
143
|
+
await this.driverHelper.waitAndClick(UserPreferences.ADD_NEW_SSH_KEY_BUTTON);
|
|
144
|
+
await this.driverHelper.waitVisibility(UserPreferences.ADD_SSH_KEYS_POPUP);
|
|
145
|
+
await this.uploadSshKeys(privateSshKeyPath, publicSshKeyPath);
|
|
146
|
+
await this.driverHelper.waitAndClick(UserPreferences.ADD_SSH_KEYS_BUTTON);
|
|
147
|
+
await this.driverHelper.waitVisibility(UserPreferences.GIT_SSH_KEY_NAME);
|
|
148
|
+
Logger.info('SSH keys have been added');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async uploadSshKeys(privateSshKeyPath: string, publicSshKeyPath: string): Promise<void> {
|
|
152
|
+
Logger.debug();
|
|
153
|
+
const privateSshKey: string = Buffer.from(fs.readFileSync(path.resolve(privateSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
|
|
154
|
+
const publicSshKey: string = Buffer.from(fs.readFileSync(path.resolve(publicSshKeyPath), 'utf-8'), 'base64').toString('utf-8');
|
|
155
|
+
|
|
156
|
+
Logger.info('Pasting private SSH key');
|
|
157
|
+
await this.driverHelper.waitAndClick(UserPreferences.PASTE_PRIVATE_SSH_KEY_FIELD);
|
|
158
|
+
await this.driverHelper.getAction().sendKeys(privateSshKey).perform();
|
|
159
|
+
|
|
160
|
+
Logger.info('Pasting public SSH key');
|
|
161
|
+
await this.driverHelper.waitAndClick(UserPreferences.PASTE_PUBLIC_SSH_KEY_FIELD);
|
|
162
|
+
await this.driverHelper.getAction().sendKeys(publicSshKey).perform();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async isSshKeyPresent(): Promise<boolean> {
|
|
166
|
+
Logger.debug();
|
|
167
|
+
|
|
168
|
+
return this.driverHelper.isVisible(UserPreferences.GIT_SSH_KEY_NAME);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async deleteSshKeys(): Promise<void> {
|
|
172
|
+
Logger.debug();
|
|
173
|
+
|
|
174
|
+
Logger.info('Deleting SSH keys');
|
|
175
|
+
await this.openSshKeyTab();
|
|
176
|
+
await this.driverHelper.waitAndClick(
|
|
177
|
+
UserPreferences.GIT_SSH_KEY_ACTIONS_BUTTON,
|
|
178
|
+
TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT
|
|
179
|
+
);
|
|
180
|
+
await this.driverHelper.waitAndClick(UserPreferences.DELETE_BUTTON);
|
|
181
|
+
await this.driverHelper.waitVisibility(UserPreferences.CONFIRM_DELETE_SSH_KEYS_POPUP);
|
|
182
|
+
await this.driverHelper.waitAndClick(UserPreferences.CONFIRM_DELETE_SSH_KEYS_CHECKBOX);
|
|
183
|
+
await this.driverHelper.waitAndClick(UserPreferences.DELETE_BUTTON);
|
|
184
|
+
await this.driverHelper.waitDisappearance(UserPreferences.GIT_SSH_KEY_NAME);
|
|
185
|
+
Logger.info('SSH keys have been deleted');
|
|
186
|
+
}
|
|
187
|
+
|
|
122
188
|
getServiceConfig(service: string): string {
|
|
123
189
|
const gitService: { [key: string]: string } = {
|
|
124
190
|
[GitProviderType.GITHUB]: 'GitHub',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNBUkFYazVMM3ZLdGl1cStYdUIzd1J3R21VWlV3eVJKOC9iYTRLQjVzZWR3QUFBQUpnTnUyT0NEYnRqCmdnQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDQVJBWGs1TDN2S3RpdXErWHVCM3dSd0dtVVpVd3lSSjgvYmE0S0I1c2Vkd0EKQUFBRUFBQ3pOVjdKUVpFUFNaVUZSQjU3c25oczZKZHlJSEhkUWk2cFBBRkNDUU5SRUJlVGt2ZThxMks2cjVlNEhmQkhBYQpaUmxUREpFbno5dHJnb0hteDUzQUFBQUFGV05vWlhCMWJHeHlaWEV4UUdkdFlXbHNMbU52YlE9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUJFQmVUa3ZlOHEySzZyNWU0SGZCSEFhWlJsVERKRW56OXRyZ29IbXg1M0EgY2hlcHVsbHJlcTFAZ21haWwuY29t
|
|
@@ -55,7 +55,7 @@ suite(`Check links to documentation page in Dashboard ${BASE_TEST_CONSTANTS.TEST
|
|
|
55
55
|
try {
|
|
56
56
|
({ docs, links, productVersion } = JSON.parse(
|
|
57
57
|
shellExecutor.executeCommand(
|
|
58
|
-
|
|
58
|
+
'oc exec deploy/devspaces-dashboard -n openshift-devspaces -- cat /public/dashboard/assets/branding/product.json'
|
|
59
59
|
)
|
|
60
60
|
));
|
|
61
61
|
} catch (e) {
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2025 Red Hat, Inc.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
**********************************************************************/
|
|
10
|
+
|
|
11
|
+
import { ViewSection } from 'monaco-page-objects';
|
|
12
|
+
import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
|
|
13
|
+
import { CLASSES, TYPES } from '../../configs/inversify.types';
|
|
14
|
+
import { e2eContainer } from '../../configs/inversify.config';
|
|
15
|
+
import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
|
|
16
|
+
import { registerRunningWorkspace } from '../MochaHooks';
|
|
17
|
+
import { LoginTests } from '../../tests-library/LoginTests';
|
|
18
|
+
import { StringUtil } from '../../utils/StringUtil';
|
|
19
|
+
import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
|
|
20
|
+
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
21
|
+
import { expect } from 'chai';
|
|
22
|
+
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
23
|
+
import { UserPreferences } from '../../pageobjects/dashboard/UserPreferences';
|
|
24
|
+
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
25
|
+
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
26
|
+
import { Logger } from '../../utils/Logger';
|
|
27
|
+
|
|
28
|
+
suite(`The SshUrlNoOauthPatFactory userstory ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
|
|
29
|
+
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
30
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
31
|
+
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
32
|
+
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
33
|
+
const userPreferences: UserPreferences = e2eContainer.get(CLASSES.UserPreferences);
|
|
34
|
+
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
35
|
+
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
36
|
+
const factoryUrl: string =
|
|
37
|
+
FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL ||
|
|
38
|
+
'ssh://git@bitbucket-ssh.apps.ds-airgap2-v15.crw-qe.com/~admin/private-bb-repo.git';
|
|
39
|
+
const privateSshKeyPath: string = 'resources/factory/pr-k.txt';
|
|
40
|
+
const publicSshKeyPath: string = 'resources/factory/pub-k.txt';
|
|
41
|
+
let projectSection: ViewSection;
|
|
42
|
+
|
|
43
|
+
async function deleteSshKeys(): Promise<void> {
|
|
44
|
+
Logger.debug('Deleting SSH keys if they are present');
|
|
45
|
+
await userPreferences.openUserPreferencesPage();
|
|
46
|
+
await userPreferences.openSshKeyTab();
|
|
47
|
+
if (await userPreferences.isSshKeyPresent()) {
|
|
48
|
+
await userPreferences.deleteSshKeys();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
suite(`Create workspace from factory:${factoryUrl}`, function (): void {
|
|
53
|
+
suiteSetup('Login', async function (): Promise<void> {
|
|
54
|
+
await loginTests.loginIntoChe();
|
|
55
|
+
await deleteSshKeys();
|
|
56
|
+
});
|
|
57
|
+
test('Add SSH keys', async function (): Promise<void> {
|
|
58
|
+
await userPreferences.openUserPreferencesPage();
|
|
59
|
+
await userPreferences.openSshKeyTab();
|
|
60
|
+
await userPreferences.addSshKeys(privateSshKeyPath, publicSshKeyPath);
|
|
61
|
+
});
|
|
62
|
+
test(`Create and open new workspace from factory:${factoryUrl}`, async function (): Promise<void> {
|
|
63
|
+
await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
|
|
64
|
+
});
|
|
65
|
+
test('Obtain workspace name from workspace loader page', async function (): Promise<void> {
|
|
66
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
67
|
+
});
|
|
68
|
+
test('Register running workspace', function (): void {
|
|
69
|
+
registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
70
|
+
});
|
|
71
|
+
test('Wait workspace readiness', async function (): Promise<void> {
|
|
72
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
73
|
+
});
|
|
74
|
+
test('Check a project folder has been created', async function (): Promise<void> {
|
|
75
|
+
const projectName: string = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil.getProjectNameFromGitUrl(factoryUrl);
|
|
76
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
77
|
+
expect(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not
|
|
78
|
+
.undefined;
|
|
79
|
+
});
|
|
80
|
+
test('Accept the project as a trusted one', async function (): Promise<void> {
|
|
81
|
+
await projectAndFileTests.performTrustAuthorDialog();
|
|
82
|
+
});
|
|
83
|
+
test('Check the project files was imported', async function (): Promise<void> {
|
|
84
|
+
expect(
|
|
85
|
+
await projectAndFileTests.getProjectTreeItem(projectSection, BASE_TEST_CONSTANTS.TS_SELENIUM_PROJECT_ROOT_FILE_NAME),
|
|
86
|
+
'Project files were not imported'
|
|
87
|
+
).not.undefined;
|
|
88
|
+
});
|
|
89
|
+
suiteTeardown('Delete SSH keys', async function (): Promise<void> {
|
|
90
|
+
await dashboard.openDashboard();
|
|
91
|
+
await deleteSshKeys();
|
|
92
|
+
});
|
|
93
|
+
suiteTeardown('Stop and delete the workspace by APII', async function (): Promise<void> {
|
|
94
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
95
|
+
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
|
|
96
|
+
});
|
|
97
|
+
suiteTeardown('Unregister running workspace', function (): void {
|
|
98
|
+
registerRunningWorkspace('');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|