UNPKG

cumulocity-cypress

Version:
49 lines (48 loc) 2.07 kB
import { getAuthOptions, getBaseUrlFromEnv } from "../utils"; import { BearerAuthFromSessionStorage } from "@c8y/client"; Cypress.Commands.add("oauthLogin", { prevSubject: "optional" }, (...args) => { const auth = getAuthOptions(...args); if (!auth || !auth.user || !auth.password) { const error = new Error("C8yAuthOptions missing. cy.oauthLogin requires at least user and password as C8yAuthOptions."); error.name = "C8yPactError"; throw error; } const baseUrl = getBaseUrlFromEnv(); if (!baseUrl) { const error = new Error("No base URL configured. oauthLogin requires a baseUrl. For component testing use C8Y_BASEURL or C8Y_HOST env variable."); error.name = "C8yPactError"; throw error; } const consoleProps = {}; const logger = Cypress.log({ autoEnd: false, name: "oauthLogin", message: `${auth.userAlias || auth.user} -> ${baseUrl}`, consoleProps: () => consoleProps, }); cy.task("c8ypact:oauthLogin", { auth, baseUrl }, { log: Cypress.c8ypact.debugLog }).then((a) => { consoleProps.auth = a; consoleProps.baseUrl = baseUrl; consoleProps.token = a.token || null; consoleProps.xsrfToken = a.xsrfToken || null; Cypress.env("C8Y_LOGGED_IN_USER", auth.user); Cypress.env("C8Y_LOGGED_IN_USER_ALIAS", auth.userAlias); if (a.token && a.xsrfToken && Cypress.testingType !== "component") { // must be upper case so CookieAuth does use it cy.setCookie("Authorization", a.token, { log: Cypress.c8ypact.debugLog, }); // must be upper case so CookieAuth does use it cy.setCookie("XSRF-TOKEN", a.xsrfToken, { log: Cypress.c8ypact.debugLog, }); } else { if (a.token) { sessionStorage.setItem(BearerAuthFromSessionStorage.sessionStorageKey, a.token); } } logger.end(); return cy.wrap(a, { log: false }); }); });