mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
171 lines
4.7 KiB
TypeScript
171 lines
4.7 KiB
TypeScript
"use strict";
|
|
|
|
var express = require("express"),
|
|
request = require("supertest"),
|
|
assert = require("node:assert");
|
|
|
|
describe("res", function () {
|
|
describe(".json(object)", function () {
|
|
it("should not support jsonp callbacks", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json({ foo: "bar" });
|
|
});
|
|
|
|
request(app).get("/?callback=foo").expect('{"foo":"bar"}', done);
|
|
});
|
|
|
|
it("should not override previous Content-Types", function (done) {
|
|
var app = express();
|
|
|
|
app.get("/", function (req, res) {
|
|
res.type("application/vnd.example+json");
|
|
res.json({ hello: "world" });
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/vnd.example+json; charset=utf-8")
|
|
.expect(200, '{"hello":"world"}', done);
|
|
});
|
|
|
|
describe("when given primitives", function () {
|
|
it("should respond with json for null", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json(null);
|
|
});
|
|
|
|
request(app).get("/").expect("Content-Type", "application/json; charset=utf-8").expect(200, "null", done);
|
|
});
|
|
|
|
it("should respond with json for Number", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json(300);
|
|
});
|
|
|
|
request(app).get("/").expect("Content-Type", "application/json; charset=utf-8").expect(200, "300", done);
|
|
});
|
|
|
|
it("should respond with json for String", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json("str");
|
|
});
|
|
|
|
request(app).get("/").expect("Content-Type", "application/json; charset=utf-8").expect(200, '"str"', done);
|
|
});
|
|
});
|
|
|
|
describe("when given an array", function () {
|
|
it("should respond with json", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json(["foo", "bar", "baz"]);
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/json; charset=utf-8")
|
|
.expect(200, '["foo","bar","baz"]', done);
|
|
});
|
|
});
|
|
|
|
describe("when given an object", function () {
|
|
it("should respond with json", function (done) {
|
|
var app = express();
|
|
|
|
app.use(function (req, res) {
|
|
res.json({ name: "tobi" });
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/json; charset=utf-8")
|
|
.expect(200, '{"name":"tobi"}', done);
|
|
});
|
|
});
|
|
|
|
describe('"json escape" setting', function () {
|
|
it("should be undefined by default", function () {
|
|
var app = express();
|
|
assert.strictEqual(app.get("json escape"), undefined);
|
|
});
|
|
|
|
it("should unicode escape HTML-sniffing characters", function (done) {
|
|
var app = express();
|
|
|
|
app.enable("json escape");
|
|
|
|
app.use(function (req, res) {
|
|
res.json({ "&": "<script>" });
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/json; charset=utf-8")
|
|
.expect(200, '{"\\u0026":"\\u003cscript\\u003e"}', done);
|
|
});
|
|
|
|
it("should not break undefined escape", function (done) {
|
|
var app = express();
|
|
|
|
app.enable("json escape");
|
|
|
|
app.use(function (req, res) {
|
|
res.json(undefined);
|
|
});
|
|
|
|
request(app).get("/").expect("Content-Type", "application/json; charset=utf-8").expect(200, "", done);
|
|
});
|
|
});
|
|
|
|
describe('"json replacer" setting', function () {
|
|
it("should be passed to JSON.stringify()", function (done) {
|
|
var app = express();
|
|
|
|
app.set("json replacer", function (key, val) {
|
|
return key[0] === "_" ? undefined : val;
|
|
});
|
|
|
|
app.use(function (req, res) {
|
|
res.json({ name: "tobi", _id: 12345 });
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/json; charset=utf-8")
|
|
.expect(200, '{"name":"tobi"}', done);
|
|
});
|
|
});
|
|
|
|
describe('"json spaces" setting', function () {
|
|
it("should be undefined by default", function () {
|
|
var app = express();
|
|
assert(undefined === app.get("json spaces"));
|
|
});
|
|
|
|
it("should be passed to JSON.stringify()", function (done) {
|
|
var app = express();
|
|
|
|
app.set("json spaces", 2);
|
|
|
|
app.use(function (req, res) {
|
|
res.json({ name: "tobi", age: 2 });
|
|
});
|
|
|
|
request(app)
|
|
.get("/")
|
|
.expect("Content-Type", "application/json; charset=utf-8")
|
|
.expect(200, '{\n "name": "tobi",\n "age": 2\n}', done);
|
|
});
|
|
});
|
|
});
|
|
});
|