HTTP Test
HTTP testing library
API
[new ]HttpTest([origin[, options]])
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 get -
post(path[, body])
: http get -
put(path[, body])
: http get -
delete(path[, body])
: http delete -
del(path[, body])
: http delete -
head(path)
: http head -
request(method, path, options)
: make http request with method
Verb
All http verb functions returns a promise and some utility functions
-
set(arg[, arg])
: set header -
query(arg)
: set query -
send(arg)
: send body -
json([bool = true])
: set/unset expect json response, default is set -
redirects(maxRedirects)
: set number of max redirects, defaults to 0 -
expect(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" });
});