cypress/integration/authorization.js (54 lines of code) (raw):

/// <reference types="cypress" /> Cypress.Screenshot.defaults({ screenshotOnRunFailure: false, }); const SWA_AUTH_COOKIE_NAME = "StaticWebAppsAuthCookie"; const clientPrincipal = { identityProvider: "facebook", userId: "d75b260a64504067bfc5b2905e3b8182", userDetails: "user@example.com", userRoles: ["authenticated"], claims: [ { typ: "name", val: "Azure Static Web Apps", }, ], }; context("Authorization", () => { beforeEach(() => { cy.visit("http://0.0.0.0:1234"); }); ["GET", "POST", "PUT", "DELETE", "HEAD", "PATCH", "OPTIONS"].forEach(test); function test(method) { describe(`accessing /api/info using ${method} method`, () => { it("should return 401 if no roles provided", () => { clientPrincipal.userRoles = []; cy.setCookie(SWA_AUTH_COOKIE_NAME, window.btoa(JSON.stringify(clientPrincipal))); cy.request({ url: "http://0.0.0.0:1234/api/info", method, failOnStatusCode: false }).then((response) => { expect(response.status).to.eq(401); }); }); it("should return 401 for non 'authenticated' roles", () => { clientPrincipal.userRoles = ["admin"]; cy.setCookie(SWA_AUTH_COOKIE_NAME, window.btoa(JSON.stringify(clientPrincipal))); cy.request({ url: "http://0.0.0.0:1234/api/info", method, failOnStatusCode: false }).then((response) => { expect(response.status).to.eq(401); }); }); it("should return 404 for 'authenticated' roles but invalid api endpoint", () => { clientPrincipal.userRoles = ["authenticated"]; cy.setCookie(SWA_AUTH_COOKIE_NAME, window.btoa(JSON.stringify(clientPrincipal))); cy.request({ url: "http://0.0.0.0:1234/api/foo/bar", method, failOnStatusCode: false }).then((response) => { expect(response.status).to.eq(404); }); }); }); } describe("Accessing /.auth/login/aad", () => { it("should return 404", () => { cy.request({ url: "http://0.0.0.0:1234/.auth/login/aad", failOnStatusCode: false }).then((response) => { expect(response.status).to.eq(404); }); }); }); });