@red-hat-developer-hub/e2e-test-utils 1.1.11 → 1.1.13
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/deployment/rhdh/config/auth/github/app-config.yaml +17 -0
- package/dist/deployment/rhdh/config/auth/github/secrets.yaml +12 -0
- package/dist/deployment/rhdh/constants.d.ts +2 -0
- package/dist/deployment/rhdh/constants.d.ts.map +1 -1
- package/dist/deployment/rhdh/constants.js +6 -0
- package/dist/deployment/rhdh/deployment.d.ts +3 -1
- package/dist/deployment/rhdh/deployment.d.ts.map +1 -1
- package/dist/deployment/rhdh/deployment.js +7 -3
- package/dist/deployment/rhdh/types.d.ts +1 -1
- package/dist/deployment/rhdh/types.d.ts.map +1 -1
- package/dist/playwright/helpers/api-helper.js +1 -1
- package/dist/playwright/helpers/common.d.ts.map +1 -1
- package/dist/playwright/helpers/common.js +7 -7
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
auth:
|
|
2
|
+
environment: production
|
|
3
|
+
session:
|
|
4
|
+
secret: superSecretSecret
|
|
5
|
+
providers:
|
|
6
|
+
github:
|
|
7
|
+
production:
|
|
8
|
+
clientSecret: ${GITHUB_OAUTH_APP_SECRET}
|
|
9
|
+
clientId: ${GITHUB_OAUTH_APP_ID}
|
|
10
|
+
callbackUrl: ${RHDH_BASE_URL}/api/auth/github/handler/frame
|
|
11
|
+
signInPage: github
|
|
12
|
+
catalog:
|
|
13
|
+
locations:
|
|
14
|
+
- type: url
|
|
15
|
+
target: https://github.com/janus-qe/test-user-entity/blob/main/user.yaml
|
|
16
|
+
rules:
|
|
17
|
+
- allow: [User]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Secret
|
|
3
|
+
metadata:
|
|
4
|
+
name: rhdh-secrets
|
|
5
|
+
type: Opaque
|
|
6
|
+
stringData:
|
|
7
|
+
GITHUB_OAUTH_APP_ID: $VAULT_GITHUB_OAUTH_OVERLAYS_APP_ID
|
|
8
|
+
GITHUB_OAUTH_APP_SECRET: $VAULT_GITHUB_OAUTH_OVERLAYS_APP_SECRET
|
|
9
|
+
GH_USER_ID: $VAULT_GH_USER_ID
|
|
10
|
+
GH_USER_PASS: $VAULT_GH_USER_PASS
|
|
11
|
+
GH_2FA_SECRET: $VAULT_GH_2FA_SECRET
|
|
12
|
+
GH_RHDH_QE_USER_TOKEN: $VAULT_GITHUB_USER_TOKEN
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AuthProvider } from "./types.js";
|
|
2
|
+
import { MergeOptions } from "../../utils/merge-yamls.js";
|
|
2
3
|
export declare const DEFAULT_CONFIG_PATHS: {
|
|
3
4
|
appConfig: string;
|
|
4
5
|
secrets: string;
|
|
@@ -14,6 +15,7 @@ export declare const AUTH_CONFIG_PATHS: Record<AuthProvider, {
|
|
|
14
15
|
appConfig: string;
|
|
15
16
|
secrets: string;
|
|
16
17
|
dynamicPlugins: string;
|
|
18
|
+
mergeStrategy?: MergeOptions;
|
|
17
19
|
}>;
|
|
18
20
|
export declare const CHART_URL = "oci://quay.io/rhdh/chart";
|
|
19
21
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK1D,eAAO,MAAM,oBAAoB;;;;;;;;;;CAyBhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,YAAY,EACZ;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B,CAoCF,CAAC;AAEF,eAAO,MAAM,SAAS,6BAA6B,CAAC"}
|
|
@@ -23,5 +23,11 @@ export const AUTH_CONFIG_PATHS = {
|
|
|
23
23
|
secrets: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/auth/keycloak/secrets.yaml"),
|
|
24
24
|
dynamicPlugins: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/auth/keycloak/dynamic-plugins.yaml"),
|
|
25
25
|
},
|
|
26
|
+
github: {
|
|
27
|
+
appConfig: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/auth/github/app-config.yaml"),
|
|
28
|
+
secrets: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/auth/github/secrets.yaml"),
|
|
29
|
+
dynamicPlugins: "",
|
|
30
|
+
mergeStrategy: { arrayMergeStrategy: { byKey: "target" } },
|
|
31
|
+
},
|
|
26
32
|
};
|
|
27
33
|
export const CHART_URL = "oci://quay.io/rhdh/chart";
|
|
@@ -5,7 +5,9 @@ export declare class RHDHDeployment {
|
|
|
5
5
|
rhdhUrl: string;
|
|
6
6
|
deploymentConfig: DeploymentConfig;
|
|
7
7
|
constructor(namespace: string);
|
|
8
|
-
deploy(
|
|
8
|
+
deploy(options?: {
|
|
9
|
+
timeout?: number | null;
|
|
10
|
+
}): Promise<void>;
|
|
9
11
|
private _applyAppConfig;
|
|
10
12
|
private _applySecrets;
|
|
11
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAiB1E,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAClB,SAAS,yBAAgC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;gBAE9B,SAAS,EAAE,MAAM;IAUvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAiB1E,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAClB,SAAS,yBAAgC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;gBAE9B,SAAS,EAAE,MAAM;IAUvB,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAyBpD,eAAe;YAmBf,aAAa;IAqB3B;;;OAGG;YACW,0BAA0B;YAuC1B,oBAAoB;YAWpB,eAAe;YAmCf,mBAAmB;IAiD3B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,cAAc,CAAC,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,oBAAoB;IAsClC;;;OAGG;YACW,0BAA0B;IAwCxC,OAAO,CAAC,sBAAsB;IAoCxB,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrE,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -19,9 +19,13 @@ export class RHDHDeployment {
|
|
|
19
19
|
this._log("RHDH Base URL: " + this.rhdhUrl);
|
|
20
20
|
console.table(this.deploymentConfig);
|
|
21
21
|
}
|
|
22
|
-
async deploy() {
|
|
22
|
+
async deploy(options) {
|
|
23
23
|
this._log("Starting RHDH deployment...");
|
|
24
|
-
|
|
24
|
+
// Default 600s, custom number to override, null to skip and let consumer control the timeout
|
|
25
|
+
const timeout = options?.timeout === undefined ? 600_000 : options.timeout;
|
|
26
|
+
if (timeout !== null) {
|
|
27
|
+
test.setTimeout(timeout);
|
|
28
|
+
}
|
|
25
29
|
await this.k8sClient.createNamespaceIfNotExists(this.deploymentConfig.namespace);
|
|
26
30
|
await this._applyAppConfig();
|
|
27
31
|
await this._applySecrets();
|
|
@@ -41,7 +45,7 @@ export class RHDHDeployment {
|
|
|
41
45
|
DEFAULT_CONFIG_PATHS.appConfig,
|
|
42
46
|
authConfig.appConfig,
|
|
43
47
|
this.deploymentConfig.appConfig,
|
|
44
|
-
]);
|
|
48
|
+
], authConfig.mergeStrategy);
|
|
45
49
|
this._logBoxen("App Config", appConfigYaml);
|
|
46
50
|
await this.k8sClient.applyConfigMapFromObject("app-config-rhdh", appConfigYaml, this.deploymentConfig.namespace);
|
|
47
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,CAAC"}
|
|
@@ -11,7 +11,7 @@ export class APIHelper {
|
|
|
11
11
|
method: method,
|
|
12
12
|
headers: {
|
|
13
13
|
Accept: "application/vnd.github+json",
|
|
14
|
-
Authorization: `Bearer ${process.env.
|
|
14
|
+
Authorization: `Bearer ${process.env.VAULT_GITHUB_USER_TOKEN}`,
|
|
15
15
|
"X-GitHub-Api-Version": this.githubAPIVersion,
|
|
16
16
|
},
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/playwright/helpers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOhE,qBAAa,WAAW;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;gBAEP,IAAI,EAAE,IAAI;IAKhB,YAAY;IAcZ,OAAO;YAMC,aAAa;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/playwright/helpers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOhE,qBAAa,WAAW;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;gBAEP,IAAI,EAAE,IAAI;IAKhB,YAAY;IAcZ,OAAO;YAMC,aAAa;IAyCrB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYhD,mBAAmB,CACvB,MAAM,GAAE,MAAkC,EAC1C,QAAQ,GAAE,MAAkC;IASxC,iBAAiB,CACrB,MAAM,GAAE,MAA+C;IA6BnD,4BAA4B;IAqB5B,YAAY,CAAC,KAAK,EAAE,MAAM;IA2B1B,2BAA2B,CAAC,KAAK,UAAQ;IAU/C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIxC,mBAAmB,IAAI,MAAM;IAIvB,mBAAmB;IAgBzB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAevC,eAAe,IAAI,MAAM;IAKnB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;YAqCxC,sBAAsB;IAoD9B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYjE,2BAA2B,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAYb,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CA2C7D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;;;GAWtE"}
|
|
@@ -35,11 +35,11 @@ export class LoginHelper {
|
|
|
35
35
|
await this.page.waitForSelector("#login_field");
|
|
36
36
|
await this.page.fill("#login_field", userid);
|
|
37
37
|
switch (userid) {
|
|
38
|
-
case process.env.
|
|
39
|
-
await this.page.fill("#password", process.env.
|
|
38
|
+
case process.env.VAULT_GH_USER_ID:
|
|
39
|
+
await this.page.fill("#password", process.env.VAULT_GH_USER_PASS);
|
|
40
40
|
break;
|
|
41
|
-
case process.env.
|
|
42
|
-
await this.page.fill("#password", process.env.
|
|
41
|
+
case process.env.VAULT_GH_USER2_ID:
|
|
42
|
+
await this.page.fill("#password", process.env.VAULT_GH_USER2_PASS);
|
|
43
43
|
break;
|
|
44
44
|
default:
|
|
45
45
|
throw new Error("Invalid User ID");
|
|
@@ -72,7 +72,7 @@ export class LoginHelper {
|
|
|
72
72
|
await this.logintoKeycloak(userid, password);
|
|
73
73
|
await this.page.waitForSelector("nav a", { timeout: 10_000 });
|
|
74
74
|
}
|
|
75
|
-
async loginAsGithubUser(userid = process.env.
|
|
75
|
+
async loginAsGithubUser(userid = process.env.VAULT_GH_USER_ID) {
|
|
76
76
|
const sessionFileName = `authState_${userid}.json`;
|
|
77
77
|
// Check if a session file for this specific user already exists
|
|
78
78
|
if (fs.existsSync(sessionFileName)) {
|
|
@@ -173,8 +173,8 @@ export class LoginHelper {
|
|
|
173
173
|
}
|
|
174
174
|
getGitHub2FAOTP(userid) {
|
|
175
175
|
const secrets = {
|
|
176
|
-
[process.env.
|
|
177
|
-
[process.env.
|
|
176
|
+
[process.env.VAULT_GH_USER_ID]: process.env.VAULT_GH_2FA_SECRET,
|
|
177
|
+
[process.env.VAULT_GH_USER2_ID]: process.env.VAULT_GH_USER2_2FA_SECRET,
|
|
178
178
|
};
|
|
179
179
|
const secret = secrets[userid];
|
|
180
180
|
if (!secret) {
|