@eclipse-che/che-e2e 7.93.0 → 7.94.0-next-3074f2b

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.
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** *******************************************************************
4
+ * copyright (c) 2020-2024 Red Hat, Inc.
5
+ *
6
+ * This program and the accompanying materials are made
7
+ * available under the terms of the Eclipse Public License 2.0
8
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
9
+ *
10
+ * SPDX-License-Identifier: EPL-2.0
11
+ **********************************************************************/
12
+ const inversify_config_1 = require("../../configs/inversify.config");
13
+ const inversify_types_1 = require("../../configs/inversify.types");
14
+ const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
15
+ const MochaHooks_1 = require("../MochaHooks");
16
+ const shelljs_1 = require("shelljs");
17
+ const chai_1 = require("chai");
18
+ const OAUTH_CONSTANTS_1 = require("../../constants/OAUTH_CONSTANTS");
19
+ suite('"User secrets in workspace" test', function () {
20
+ const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
21
+ const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
22
+ const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
23
+ const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
24
+ const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
25
+ let kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
26
+ const shellExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ShellExecutor);
27
+ const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
28
+ const userProject = OAUTH_CONSTANTS_1.OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME + `-devspaces`;
29
+ const stackName = 'Empty Workspace';
30
+ const mountEnvCommand = `echo '
31
+ apiVersion: v1
32
+ kind: Secret
33
+ metadata:
34
+ name: mount
35
+ labels:
36
+ controller.devfile.io/mount-to-devworkspace: "true"
37
+ controller.devfile.io/watch-secret: "true"
38
+ annotations:
39
+ controller.devfile.io/mount-as: env
40
+ data:
41
+ mykey: bXl2YWx1ZQ==
42
+ type: Opaque
43
+ ' | oc apply -f -`;
44
+ suiteSetup('Mount kubernetes secret to the DevWorkspace containers', function () {
45
+ kubernetesCommandLineToolsExecutor.loginToOcp();
46
+ shellExecutor.executeCommand('oc project ' + userProject);
47
+ shellExecutor.executeCommand('oc delete secret mount || true');
48
+ (0, shelljs_1.ShellString)(shellExecutor.executeCommand(mountEnvCommand));
49
+ });
50
+ suiteSetup('Login', async function () {
51
+ await loginTests.loginIntoChe();
52
+ });
53
+ test(`Create and open new workspace, stack:${stackName} and wait workspace readiness`, async function () {
54
+ await workspaceHandlingTests.createAndOpenWorkspace(stackName);
55
+ await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
56
+ (0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
57
+ await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
58
+ });
59
+ test('Check that mounted secret exists in envs list', async function () {
60
+ kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
61
+ kubernetesCommandLineToolsExecutor.workspaceName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
62
+ kubernetesCommandLineToolsExecutor.loginToOcp();
63
+ kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
64
+ const output = kubernetesCommandLineToolsExecutor.execInContainerCommand('env | grep mykey');
65
+ (0, chai_1.expect)(output, 'Environment variable "mykey" from the user secret is not found').contains('mykey=myvalue');
66
+ });
67
+ suiteTeardown('Open dashboard and close all other tabs', async function () {
68
+ await dashboard.openDashboard();
69
+ await browserTabsUtil.closeAllTabsExceptCurrent();
70
+ });
71
+ suiteTeardown('Stop and delete the workspace by API', async function () {
72
+ await testWorkspaceUtil.deleteWorkspaceByName(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
73
+ });
74
+ suiteTeardown('Unregister running workspace', function () {
75
+ (0, MochaHooks_1.registerRunningWorkspace)('');
76
+ });
77
+ });
78
+ //# sourceMappingURL=UserSecretsInWorkspace.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSecretsInWorkspace.spec.js","sourceRoot":"","sources":["../../../specs/miscellaneous/UserSecretsInWorkspace.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-che/che-e2e",
3
- "version": "7.93.0",
3
+ "version": "7.94.0-next-3074f2b",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -66,8 +66,7 @@
66
66
  "dependencies": {
67
67
  "@eclipse-che/api": "latest",
68
68
  "inversify": "6.0.1",
69
- "reflect-metadata": "0.1.13",
70
- "@eclipse-che/che-devworkspace-generator": "7.93.0"
69
+ "reflect-metadata": "0.1.13"
71
70
  },
72
71
  "resolutions": {
73
72
  "minimist": "^1.2.5"
@@ -0,0 +1,97 @@
1
+ /** *******************************************************************
2
+ * copyright (c) 2020-2024 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
+ import { e2eContainer } from '../../configs/inversify.config';
11
+ import { CLASSES, TYPES } from '../../configs/inversify.types';
12
+ import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
13
+ import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
14
+ import { LoginTests } from '../../tests-library/LoginTests';
15
+ import { registerRunningWorkspace } from '../MochaHooks';
16
+ import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
17
+ import { ShellExecutor } from '../../utils/ShellExecutor';
18
+ import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
19
+ import { ShellString } from 'shelljs';
20
+ import { expect } from 'chai';
21
+ import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
22
+ import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
23
+ import { OAUTH_CONSTANTS } from '../../constants/OAUTH_CONSTANTS';
24
+
25
+ suite('"User secrets in workspace" test', function (): void {
26
+ const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
27
+ const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
28
+ const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
29
+ const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
30
+ const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
31
+
32
+ let kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
33
+ CLASSES.KubernetesCommandLineToolsExecutor
34
+ );
35
+ const shellExecutor: ShellExecutor = e2eContainer.get(CLASSES.ShellExecutor);
36
+ const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
37
+ const userProject: string = OAUTH_CONSTANTS.TS_SELENIUM_OCP_USERNAME + `-devspaces`;
38
+ const stackName: string = 'Empty Workspace';
39
+
40
+ const mountEnvCommand: string = `echo '
41
+ apiVersion: v1
42
+ kind: Secret
43
+ metadata:
44
+ name: mount
45
+ labels:
46
+ controller.devfile.io/mount-to-devworkspace: "true"
47
+ controller.devfile.io/watch-secret: "true"
48
+ annotations:
49
+ controller.devfile.io/mount-as: env
50
+ data:
51
+ mykey: bXl2YWx1ZQ==
52
+ type: Opaque
53
+ ' | oc apply -f -`;
54
+
55
+ suiteSetup('Mount kubernetes secret to the DevWorkspace containers', function (): void {
56
+ kubernetesCommandLineToolsExecutor.loginToOcp();
57
+ shellExecutor.executeCommand('oc project ' + userProject);
58
+ shellExecutor.executeCommand('oc delete secret mount || true');
59
+
60
+ ShellString(shellExecutor.executeCommand(mountEnvCommand));
61
+ });
62
+
63
+ suiteSetup('Login', async function (): Promise<void> {
64
+ await loginTests.loginIntoChe();
65
+ });
66
+
67
+ test(`Create and open new workspace, stack:${stackName} and wait workspace readiness`, async function (): Promise<void> {
68
+ await workspaceHandlingTests.createAndOpenWorkspace(stackName);
69
+ await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
70
+
71
+ registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
72
+ await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
73
+ });
74
+
75
+ test('Check that mounted secret exists in envs list', async function (): Promise<void> {
76
+ kubernetesCommandLineToolsExecutor = e2eContainer.get(CLASSES.KubernetesCommandLineToolsExecutor);
77
+ kubernetesCommandLineToolsExecutor.workspaceName = WorkspaceHandlingTests.getWorkspaceName();
78
+ kubernetesCommandLineToolsExecutor.loginToOcp();
79
+ kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
80
+
81
+ const output: ShellString = kubernetesCommandLineToolsExecutor.execInContainerCommand('env | grep mykey');
82
+ expect(output, 'Environment variable "mykey" from the user secret is not found').contains('mykey=myvalue');
83
+ });
84
+
85
+ suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
86
+ await dashboard.openDashboard();
87
+ await browserTabsUtil.closeAllTabsExceptCurrent();
88
+ });
89
+
90
+ suiteTeardown('Stop and delete the workspace by API', async function (): Promise<void> {
91
+ await testWorkspaceUtil.deleteWorkspaceByName(WorkspaceHandlingTests.getWorkspaceName());
92
+ });
93
+
94
+ suiteTeardown('Unregister running workspace', function (): void {
95
+ registerRunningWorkspace('');
96
+ });
97
+ });