sso_organization.spec.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { test, expect, type TestInfo } from '@playwright/test';
  2. import { MailDev } from 'maildev';
  3. import * as utils from "../global-utils";
  4. import * as orgs from './setups/orgs';
  5. import { logNewUser, logUser } from './setups/sso';
  6. let users = utils.loadEnv();
  7. test.beforeAll('Setup', async ({ browser }, testInfo: TestInfo) => {
  8. await utils.startVault(browser, testInfo, {
  9. SSO_ENABLED: true,
  10. SSO_ONLY: true,
  11. });
  12. });
  13. test.afterAll('Teardown', async ({}) => {
  14. utils.stopVault();
  15. });
  16. test('Create user3', async ({ page }) => {
  17. await logNewUser(test, page, users.user3);
  18. });
  19. test('Invite users', async ({ page }) => {
  20. await logNewUser(test, page, users.user1);
  21. await orgs.create(test, page, '/Test');
  22. await orgs.members(test, page, '/Test');
  23. await orgs.invite(test, page, '/Test', users.user2.email);
  24. await orgs.invite(test, page, '/Test', users.user3.email);
  25. await orgs.confirm(test, page, '/Test', users.user3.email);
  26. });
  27. test('Create invited account', async ({ page }) => {
  28. await logNewUser(test, page, users.user2);
  29. });
  30. test('Confirm invited user', async ({ page }) => {
  31. await logUser(test, page, users.user1);
  32. await orgs.members(test, page, '/Test');
  33. await expect(page.getByRole('row', { name: users.user2.name })).toHaveText(/Needs confirmation/);
  34. await orgs.confirm(test, page, '/Test', users.user2.email);
  35. });
  36. test('Organization is visible', async ({ page }) => {
  37. await logUser(test, page, users.user2);
  38. await page.getByLabel('vault: /Test').click();
  39. await expect(page.getByLabel('Filter: Default collection')).toBeVisible();
  40. });
  41. test('Enforce password policy', async ({ page }) => {
  42. await logUser(test, page, users.user1);
  43. await orgs.policies(test, page, '/Test');
  44. await test.step(`Set master password policy`, async () => {
  45. await page.getByRole('button', { name: 'Master password requirements' }).click();
  46. await page.getByRole('checkbox', { name: 'Turn on' }).check();
  47. await page.getByRole('checkbox', { name: 'Require existing members to' }).check();
  48. await page.getByRole('spinbutton', { name: 'Minimum length' }).fill('42');
  49. await page.getByRole('button', { name: 'Save' }).click();
  50. await utils.checkNotification(page, 'Edited policy Master password requirements.');
  51. });
  52. await utils.logout(test, page, users.user1);
  53. await test.step(`Unlock trigger policy`, async () => {
  54. await page.locator("input[type=email].vw-email-sso").fill(users.user1.email);
  55. await page.getByRole('button', { name: 'Use single sign-on' }).click();
  56. await page.getByRole('textbox', { name: 'Master password (required)' }).fill(users.user1.password);
  57. await page.getByRole('button', { name: 'Unlock' }).click();
  58. await expect(page.getByRole('heading', { name: 'Update master password' })).toBeVisible();
  59. });
  60. });