11import { nav } from '../../views/nav' ;
22import { guidedTour } from '../../views/tour' ;
33
4-
5-
64export { } ;
75declare global {
86 namespace Cypress {
@@ -22,6 +20,138 @@ declare global {
2220 }
2321}
2422
23+ // ── Auth orchestration (RBAC + OAuth discovery + login) ────────────
24+ // Moved from operator-commands.ts so all auth concerns live in one file.
25+
26+ export const operatorAuthUtils = {
27+ performLoginAndAuth ( useSession : boolean ) : void {
28+ if ( `${ Cypress . env ( 'LOGIN_USERNAME' ) } ` === 'kubeadmin' ) {
29+ cy . adminCLI (
30+ `oc adm policy add-cluster-role-to-user cluster-admin ${ Cypress . env ( 'LOGIN_USERNAME' ) } ` ,
31+ ) ;
32+ } else {
33+ cy . adminCLI ( `oc project openshift-monitoring` ) ;
34+ cy . adminCLI (
35+ `oc adm policy add-role-to-user monitoring-edit ${ Cypress . env ( 'LOGIN_USERNAME' ) } -n openshift-monitoring` ,
36+ ) ;
37+ cy . adminCLI (
38+ `oc adm policy add-role-to-user monitoring-alertmanager-edit --role-namespace openshift-monitoring ${ Cypress . env ( 'LOGIN_USERNAME' ) } ` ,
39+ ) ;
40+ cy . adminCLI (
41+ `oc adm policy add-role-to-user view ${ Cypress . env ( 'LOGIN_USERNAME' ) } -n openshift-monitoring` ,
42+ ) ;
43+ cy . adminCLI ( `oc project default` ) ;
44+ cy . adminCLI (
45+ `oc adm policy add-role-to-user monitoring-edit ${ Cypress . env ( 'LOGIN_USERNAME' ) } -n default` ,
46+ ) ;
47+ cy . adminCLI (
48+ `oc adm policy add-role-to-user monitoring-alertmanager-edit --role-namespace default ${ Cypress . env ( 'LOGIN_USERNAME' ) } ` ,
49+ ) ;
50+ cy . adminCLI (
51+ `oc adm policy add-role-to-user view ${ Cypress . env ( 'LOGIN_USERNAME' ) } -n default` ,
52+ ) ;
53+ }
54+ cy . exec (
55+ `oc get oauthclient openshift-browser-client -o go-template --template="{{index .redirectURIs 0}}" --kubeconfig ${ Cypress . env ( 'KUBECONFIG_PATH' ) } ` ,
56+ ) . then ( ( result ) => {
57+ if ( result . stderr === '' ) {
58+ const oauth = result . stdout ;
59+ const oauthurl = new URL ( oauth ) ;
60+ const oauthorigin = oauthurl . origin ;
61+ cy . log ( oauthorigin ) ;
62+ cy . wrap ( oauthorigin as string ) . as ( 'oauthorigin' ) ;
63+ } else {
64+ throw new Error ( `Execution of oc get oauthclient failed
65+ Exit code: ${ result . code }
66+ Stdout:\n${ result . stdout }
67+ Stderr:\n${ result . stderr } ` ) ;
68+ }
69+ } ) ;
70+ cy . get ( '@oauthorigin' ) . then ( ( oauthorigin ) => {
71+ if ( useSession ) {
72+ cy . login (
73+ Cypress . env ( 'LOGIN_IDP' ) ,
74+ Cypress . env ( 'LOGIN_USERNAME' ) ,
75+ Cypress . env ( 'LOGIN_PASSWORD' ) ,
76+ oauthorigin as unknown as string ,
77+ ) ;
78+ } else {
79+ cy . loginNoSession (
80+ Cypress . env ( 'LOGIN_IDP' ) ,
81+ Cypress . env ( 'LOGIN_USERNAME' ) ,
82+ Cypress . env ( 'LOGIN_PASSWORD' ) ,
83+ oauthorigin as unknown as string ,
84+ ) ;
85+ }
86+ } ) ;
87+ } ,
88+
89+ loginAndAuth ( ) : void {
90+ cy . log ( 'Before block' ) ;
91+ operatorAuthUtils . performLoginAndAuth ( true ) ;
92+ } ,
93+
94+ loginAndAuthNoSession ( ) : void {
95+ cy . log ( 'Before block (no session)' ) ;
96+ operatorAuthUtils . performLoginAndAuth ( false ) ;
97+ } ,
98+
99+ generateCOOSessionKey (
100+ MCP : { namespace : string ; operatorName : string ; packageName : string } ,
101+ MP : { namespace : string ; operatorName : string } ,
102+ ) : string [ ] {
103+ const baseKey = [
104+ Cypress . env ( 'LOGIN_IDP' ) ,
105+ Cypress . env ( 'LOGIN_USERNAME' ) ,
106+ MCP . namespace ,
107+ MCP . operatorName ,
108+ MCP . packageName ,
109+ MP . namespace ,
110+ MP . operatorName ,
111+ ] ;
112+ const envVars = [
113+ Cypress . env ( 'SKIP_ALL_INSTALL' ) ,
114+ Cypress . env ( 'SKIP_COO_INSTALL' ) ,
115+ Cypress . env ( 'COO_UI_INSTALL' ) ,
116+ Cypress . env ( 'KONFLUX_COO_BUNDLE_IMAGE' ) ,
117+ Cypress . env ( 'CUSTOM_COO_BUNDLE_IMAGE' ) ,
118+ Cypress . env ( 'FBC_STAGE_COO_IMAGE' ) ,
119+ Cypress . env ( 'MP_IMAGE' ) ,
120+ Cypress . env ( 'MCP_CONSOLE_IMAGE' ) ,
121+ Cypress . env ( 'CHA_IMAGE' ) ,
122+ ] ;
123+ return [ ...baseKey , ...envVars . map ( ( v ) => v || '' ) ] ;
124+ } ,
125+
126+ generateMPSessionKey ( MP : { namespace : string ; operatorName : string } ) : string [ ] {
127+ const baseKey = [
128+ Cypress . env ( 'LOGIN_IDP' ) ,
129+ Cypress . env ( 'LOGIN_USERNAME' ) ,
130+ MP . namespace ,
131+ MP . operatorName ,
132+ ] ;
133+ const envVars = [
134+ Cypress . env ( 'SKIP_ALL_INSTALL' ) ,
135+ Cypress . env ( 'MP_IMAGE' ) ,
136+ ] ;
137+ return [ ...baseKey , ...envVars . map ( ( v ) => v || '' ) ] ;
138+ } ,
139+
140+ generateKBVSessionKey ( KBV : { namespace : string ; packageName : string } ) : string [ ] {
141+ const baseKey = [
142+ Cypress . env ( 'LOGIN_IDP' ) ,
143+ Cypress . env ( 'LOGIN_USERNAME' ) ,
144+ KBV . namespace ,
145+ KBV . packageName ,
146+ ] ;
147+ const envVars = [
148+ Cypress . env ( 'SKIP_KBV_INSTALL' ) ,
149+ Cypress . env ( 'KBV_UI_INSTALL' ) ,
150+ ] ;
151+ return [ ...baseKey , ...envVars . map ( ( v ) => v || '' ) ] ;
152+ } ,
153+ } ;
154+
25155
26156// Core login function (used by both session and non-session versions)
27157function performLogin (
0 commit comments