HTTP testing library
Arguments:
origin
: Optional http request origin, defaults toprocess.env.PORT
as 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.createServer
requestListener
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
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
Returns HTTP tester with cookie jar exposed as property jar
. Subsequent requests will forward cookies that match origin and path.
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" });
});