UNPKG

cypress-maildev

Version:

An easy-to-use cypress bunch of commands to use Maildev API for tests messages reception !

61 lines (49 loc) 1.35 kB
/* global cy */ export interface RequestConstructorParams { baseUrl: string; } export type Method = "POST" | "GET" | "PUT" | "DELETE"; export default class Request { public baseUrl: string; public headers: { [key: string]: string; }; constructor({ baseUrl }: RequestConstructorParams) { this.baseUrl = baseUrl || "http://localhost:1080"; this.headers = { Accept: "application/json", }; } buildOptions(method: Method, path: string): Partial<Cypress.RequestOptions> { return { method, url: `${this.baseUrl}${path}`, headers: { Accept: this.headers.Accept, }, body: {}, }; } request<T>( method: Method, path: string, body?: Pick<Cypress.RequestOptions, "body">, ): Cypress.Chainable<T> { const options = this.buildOptions(method, path); options.body = body || undefined; return cy.request(options).its("body"); } get<T>(path: string) { return this.request<T>("GET", path); } post<T>(path: string, body: Pick<Cypress.RequestOptions, "body">) { return this.request<T>("POST", path, body); } put<T>(path: string, body: Pick<Cypress.RequestOptions, "body">) { return this.request<T>("PUT", path, body); } delete<T>(path: string) { return this.request<T>("DELETE", path); } } module.exports = Request;