/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { create, visitable, fillable, clickable } from 'ember-cli-page-object'; import { settled } from '@ember/test-helpers'; import VAULT_KEYS from 'vault/tests/helpers/vault-keys'; const { rootToken } = VAULT_KEYS; export default create({ visit: visitable('/vault/auth'), logout: visitable('/vault/logout'), submit: clickable('[data-test-auth-submit]'), tokenInput: fillable('[data-test-token]'), usernameInput: fillable('[data-test-username]'), passwordInput: fillable('[data-test-password]'), namespaceInput: fillable('[data-test-auth-form-ns-input]'), optionsToggle: clickable('[data-test-auth-form-options-toggle]'), mountPath: fillable('[data-test-auth-form-mount-path]'), login: async function (token = rootToken) { // make sure we're always logged out and logged back in await this.logout(); await settled(); // clear session storage to ensure we have a clean state window.localStorage.clear(); await this.visit({ with: 'token' }); await settled(); return this.tokenInput(token).submit(); }, loginUsername: async function (username, password, path) { // make sure we're always logged out and logged back in await this.logout(); await settled(); // clear local storage to ensure we have a clean state window.localStorage.clear(); await this.visit({ with: 'userpass' }); await settled(); if (path) { await this.optionsToggle(); await this.mountPath(path); } await this.usernameInput(username); return this.passwordInput(password).submit(); }, loginNs: async function (ns) { // make sure we're always logged out and logged back in await this.logout(); await settled(); // clear session storage to ensure we have a clean state window.localStorage.clear(); await this.visit({ with: 'token' }); await settled(); await this.namespaceInput(ns); await settled(); await this.tokenInput(rootToken).submit(); return; }, });