cypress/integration/functions.js (69 lines of code) (raw):
/// <reference types="cypress" />
Cypress.Screenshot.defaults({
screenshotOnRunFailure: false,
});
context.only("/api", () => {
beforeEach(() => {
cy.visit("http://0.0.0.0:1234/");
});
describe(`Accessing /api/headers`, () => {
it(`should respond with valid body content`, () => {
cy.request({ url: `http://0.0.0.0:1234/api/headers`, failOnStatusCode: false }).then((response) => {
const body = Object.keys(response.body);
expect(response.status).to.eq(200);
expect(body).to.include("x-ms-original-url");
expect(body).to.include("x-ms-request-id");
expect(body).to.include("x-swa-custom");
});
});
it("Should correctly set x-ms-original-url to the full request url", () => {
const HEADER_URL = "http://0.0.0.0:1234/api/headers";
cy.request({ url: HEADER_URL, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(200);
expect(response.body["x-ms-original-url"]).to.equal(HEADER_URL);
});
});
});
describe(`Accessing /api/status`, () => {
it(`should respond with valid body content`, () => {
cy.request({ url: `http://0.0.0.0:1234/api/status`, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.eq("/api/status");
});
});
});
describe(`Accessing /api/info`, () => {
it(`should respond with 401 when user not logged in`, () => {
cy.request({ url: `http://0.0.0.0:1234/api/info`, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(401);
});
});
it(`should respond with with content when user is logged in`, () => {
const clientPrincipal = {
identityProvider: "facebook",
userId: "d75b260a64504067bfc5b2905e3b8182",
userDetails: "user@example.com",
userRoles: ["authenticated"],
};
const SWA_AUTH_COOKIE_NAME = "StaticWebAppsAuthCookie";
cy.setCookie(SWA_AUTH_COOKIE_NAME, window.btoa(JSON.stringify(clientPrincipal)));
cy.request({ url: `http://0.0.0.0:1234/api/info`, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.eq("authorized");
});
});
});
describe(`Accessing non existing endoint`, () => {
it(`should respond with valid body content`, () => {
cy.request({ url: `http://0.0.0.0:1234/api/path-does-not-exists`, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(404);
});
});
});
describe(`Accessing /api/error`, () => {
it(`should respond with valid status code 403`, () => {
cy.request({ url: `http://0.0.0.0:1234/api/error`, failOnStatusCode: false }).then((response) => {
expect(response.status).to.eq(403);
});
});
});
});