]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/cypress/support/commands.ts
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / cypress / support / commands.ts
index 14b9f82acce9410d5ef5c9a1848355b1704fbfb1..2ab1b50025b8497f368b78669be4bf25d295bc94 100644 (file)
@@ -1,9 +1,10 @@
 declare global {
   namespace Cypress {
     interface Chainable<Subject> {
-      login(): void;
+      login(username?: string, password?: string): void;
       logToConsole(message: string, optional?: any): void;
       text(): Chainable<string>;
+      ceph2Login(username?: string, password?: string): Chainable<any>;
       checkAccessibility(subject: any, axeOptions?: any, skip?: boolean): void;
     }
   }
@@ -28,17 +29,9 @@ const fillAuth = () => {
   window.localStorage.setItem('sso', auth.sso);
 };
 
-Cypress.Commands.add('login', () => {
-  const username = Cypress.env('LOGIN_USER') || 'admin';
-  const password = Cypress.env('LOGIN_PWD') || 'admin';
-
-  if (auth === undefined) {
-    cy.request({
-      method: 'POST',
-      url: 'api/auth',
-      headers: { Accept: CdHelperClass.cdVersionHeader('1', '0') },
-      body: { username: username, password: password }
-    }).then((resp) => {
+Cypress.Commands.add('login', (username, password) => {
+  cy.session([username, password], () => {
+    requestAuth(username, password).then((resp) => {
       auth = resp.body;
       auth.permissions = JSON.stringify(new Permissions(auth.permissions));
       auth.pwdExpirationDate = String(auth.pwdExpirationDate);
@@ -46,11 +39,52 @@ Cypress.Commands.add('login', () => {
       auth.sso = String(auth.sso);
       fillAuth();
     });
-  } else {
-    fillAuth();
-  }
+  });
 });
 
+Cypress.Commands.add('ceph2Login', (username, password) => {
+  const url: string = Cypress.env('CEPH2_URL');
+  cy.session([username, password, url], () => {
+    requestAuth(username, password, url).then((resp) => {
+      auth = resp.body;
+      auth.permissions = JSON.stringify(new Permissions(auth.permissions));
+      auth.pwdExpirationDate = String(auth.pwdExpirationDate);
+      auth.pwdUpdateRequired = String(auth.pwdUpdateRequired);
+      auth.sso = String(auth.sso);
+      const args = {
+        username: auth.username,
+        permissions: auth.permissions,
+        pwdExpirationDate: auth.pwdExpirationDate,
+        pwdUpdateRequired: auth.pwdUpdateRequired,
+        sso: auth.sso
+      };
+      // @ts-ignore
+      cy.origin(
+        url,
+        { args },
+        ({ uname, permissions, pwdExpirationDate, pwdUpdateRequired, sso }: any) => {
+          window.localStorage.setItem('dashboard_username', uname);
+          window.localStorage.setItem('dashboard_permissions', permissions);
+          window.localStorage.setItem('user_pwd_expiration_date', pwdExpirationDate);
+          window.localStorage.setItem('user_pwd_update_required', pwdUpdateRequired);
+          window.localStorage.setItem('sso', sso);
+        }
+      );
+    });
+  });
+});
+
+function requestAuth(username: string, password: string, url = '') {
+  username = username ? username : Cypress.env('LOGIN_USER');
+  password = password ? password : Cypress.env('LOGIN_PWD');
+  return cy.request({
+    method: 'POST',
+    url: !url ? 'api/auth' : `${url}api/auth`,
+    headers: { Accept: CdHelperClass.cdVersionHeader('1', '0') },
+    body: { username: username, password: password }
+  });
+}
+
 // @ts-ignore
 Cypress.Commands.add('text', { prevSubject: true }, (subject: any) => {
   return subject.text();