2.0.0 • Published 3 years ago
@bonniernews/httptest v2.0.0
HTTP Test
HTTP testing library
API
[new ]HttpTest([origin[, options]])
Arguments:
origin: Optional http request origin, defaults toprocess.env.PORTas port- origin: fully fledged origin with protocol, host, and port
- port: port number to local http server
- Express App: will be used to create a http server, can actually be any function that will act as
http.createServerrequestListener
options: Optional object with options to pass to got
Returns verb:
get(path): http getpost(path[, body]): http getput(path[, body]): http getdelete(path[, body]): http deletedel(path[, body]): http deletehead(path): http headrequest(method, path, options): make http request with method
Verb
All http verb functions returns a promise and some utility functions
set(arg[, arg]): set headerquery(arg): set querysend(arg): send bodyjson([bool = true]): set/unset expect json response, default is setredirects(maxRedirects): set number of max redirects, defaults to 0expect(arg[, arg]): expect statusCode, header with value, and body
HttpTest.agent(origin, options)
Returns HTTP tester with cookie jar exposed as property jar. Subsequent requests will forward cookies that match origin and path.
Example
const app = require("../app");
const HttpTest = require("@bonniernews/httptest");
it("get replies 200", async () => {
await new HttpTest(app)
.get("/")
.expect(200)
.expect("content-type", "text/html; charset=utf-8");
});
it("post also replies 200", async () => {
await HttpTest(app)
.post("/", {})
.json()
.expect(200)
.expect("content-type", "application/json; charset=utf-8")
.expect({ foo: "bar" });
});
it("origin replies with 200", async () => {
await HttpTest("https://example.com")
.get("/")
.expect(200)
.expect("content-type", "text/html; charset=utf-8");
});
it("ok if body matches string", () => {
return request(app)
.get("/")
.expect(200)
.expect((res) => {
expect(res.text).to.equal("<html/>");
});
});
it("response content-type json returns body as JSON", async () => {
await HttpTest(app)
.post("/", {})
.expect(200)
.expect("content-type", "application/json; charset=utf-8")
.expect({ foo: "bar" });
});