supertest-graphql
Version:
Extends supertest to test a GraphQL endpoint
85 lines (84 loc) • 3.43 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuperTestGraphQL = exports.supertestWs = void 0;
const https = __importStar(require("https"));
const supertest_1 = require("supertest");
const SuperTestGraphQL_1 = __importDefault(require("./SuperTestGraphQL"));
exports.SuperTestGraphQL = SuperTestGraphQL_1.default;
const SuperTestWSGraphQL_1 = __importStar(require("./SuperTestWSGraphQL"));
/**
* Test against the given `app` returnig a new `SuperTestGraphQL`.
*/
const supertest = (app) => {
const supertest = (0, supertest_1.agent)(app);
return new SuperTestGraphQL_1.default(supertest);
};
// todo: put me somewhere
function getWSBase(server) {
if (typeof server === "string") {
return server;
}
const address = server.address();
if (!address) {
// see https://github.com/visionmedia/supertest/issues/566
throw new Error("Server must be listening:\n" +
"beforeEach((done) => server.listen(0, 'localhost', done));\n" +
"afterEach((done) => server.close(done));\n" +
"\n" +
"supertest's request(app) syntax is not supported (find out more: https://github.com/davidje13/superwstest#why-isnt-requestapp-supported)");
}
const protocol = server instanceof https.Server ? "wss" : "ws";
let hostname;
if (typeof address === "object") {
if (address.family.toLowerCase() === "ipv6") {
hostname = `[${address.address}]`;
}
else {
hostname = address.address;
}
}
else {
hostname = address;
}
// @ts-expect-error fix me
return `${protocol}://${hostname}:${address.port}`;
}
const mainPool = new SuperTestWSGraphQL_1.SuperTestExecutionStreamingResultPool();
exports.supertestWs = Object.assign((
// todo: accept string
app) => {
// todo: prametrize
const base = typeof app === "string" ? app : getWSBase(app);
return new SuperTestWSGraphQL_1.default(base, mainPool);
}, {
end: () => mainPool.endAll(),
});
__exportStar(require("./SuperTestGraphQL"), exports);
__exportStar(require("./SuperTestWSGraphQL"), exports);
__exportStar(require("./types"), exports);
exports.default = supertest;