import { ImpersonateUser } from '@admin-lib/expense_impersonate/impersonation';
import { stagingUsers } from '@fixtures/staging-users';
import { impersonationData } from '@fixtures/admin/impersonation_data';

const { impersonation } = stagingUsers.liquid;
const liquidCredentials = Cypress.env('liquid').impersonation.LIQUID_PASSWORD;

describe('Admin: Admin - Impersonate users', () => {
  it(
    'C4908779: Delegate can sign into Admin as impersonated admin user',
    { tags: ['@tier1'] },
    () => {
      cy.loginWithAuthToken({
        email: impersonation.email,
        password: liquidCredentials,
        isSA: true
      });
      ImpersonateUser.visitNavanHomePage();
      ImpersonateUser.verifyDelegateNameOnUserMenuButton(
        impersonationData.impersonationAdmin
      );
      ImpersonateUser.searchForAndSelectUserToImpersonate(
        impersonationData.impersonationUserTwo
      );
      ImpersonateUser.verifyImpersonatedUserNameOnUserMenuButton(
        impersonationData.impersonationUserTwo
      );
      ImpersonateUser.visitExpenseAdminHomePage();
      ImpersonateUser.verifyImpersonatedUserNameOnUserMenuButtoInAdmin(
        impersonationData.impersonationUserTwo
      );
    }
  );
});
