From 7150b37831d682a54d51dd5e79fd3d29840def53 Mon Sep 17 00:00:00 2001 From: Paul Melnikow <github@paulmelnikow.com> Date: Tue, 1 Jan 2019 22:58:54 -0500 Subject: [PATCH] Add test of the server entrypoint (#2613) The server's entrypoint is an important bit of code which is not covered by our tests. This adds a test which should cover it. --- entrypoint.spec.js | 29 +++++++++++++++++++++++++++++ package.json | 6 ++++-- server.js | 4 +++- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 entrypoint.spec.js diff --git a/entrypoint.spec.js b/entrypoint.spec.js new file mode 100644 index 0000000000..dd2d509b08 --- /dev/null +++ b/entrypoint.spec.js @@ -0,0 +1,29 @@ +'use strict' + +const { expect } = require('chai') +const fetch = require('node-fetch') +const isSvg = require('is-svg') +const serverConfig = require('./lib/server-config') + +let server +before(function() { + this.timeout('5s') + serverConfig.bind = { + port: 1111, + address: 'localhost', + } + server = require('./server') +}) + +after('shut down the server', async function() { + await server.stop() +}) + +it('should render a badge', async function() { + const res = await fetch('http://localhost:1111/badge/fruit-apple-green.svg') + expect(res.ok).to.be.true + expect(await res.text()) + .to.satisfy(isSvg) + .and.to.include('fruit') + .and.to.include('apple') +}) diff --git a/package.json b/package.json index 027a5f6218..6c5ac92ab6 100644 --- a/package.json +++ b/package.json @@ -61,11 +61,12 @@ "coverage:test:server": "nyc npm run test:server", "coverage:test:frontend": "nyc --nycrc-path .nycrc-frontend.json npm run test:frontend", "coverage:test:package": "nyc npm run test:package", + "coverage:test:entrypoint": "nyc npm run test:entrypoint", "coverage:test:integration": "nyc npm run test:integration", "coverage:test:services": "nyc npm run test:services", "coverage:clean": "rimraf .nyc_output coverage", "precoverage:test": "run-s --silent coverage:clean defs features", - "coverage:test": "run-s --silent --continue-on-error coverage:test:server coverage:test:package coverage:test:frontend coverage:test:integration", + "coverage:test": "run-s --silent --continue-on-error coverage:test:server coverage:test:package coverage:test:entrypoint coverage:test:frontend coverage:test:integration", "coverage:report:generate": "nyc report", "coverage:report:open": "opn coverage/lcov-report/index.html", "coverage:report": "run-s --silent coverage:report:generate coverage:report:open", @@ -79,6 +80,7 @@ "test:frontend": "cross-env BABEL_ENV=test mocha --opts mocha.opts --require @babel/polyfill --require @babel/register --require mocha-yaml-loader \"frontend/**/*.spec.js\"", "test:server": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts \"lib/**/*.spec.js\" \"services/**/*.spec.js\"", "test:package": "mocha --opts mocha.opts \"gh-badges/**/*.spec.js\"", + "test:entrypoint": "mocha --opts mocha.opts entrypoint.spec.js", "test:integration": "mocha --opts mocha.opts \"lib/**/*.integration.js\" \"services/**/*.integration.js\"", "test:services": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts --delay lib/service-test-runner/cli.js", "test:services:trace": "cross-env TRACE_SERVICES=true run-s --silent test:services -- $*", @@ -86,7 +88,7 @@ "test:services:pr:run": "cross-env HANDLE_INTERNAL_ERRORS=false mocha --opts mocha.opts --delay lib/service-test-runner/cli.js --stdin < pull-request-services.log", "test:services:pr": "run-s --silent test:services:pr:prepare test:services:pr:run", "pretest": "run-s --silent defs features", - "test": "run-s --silent --continue-on-error lint test:frontend test:package test:server prettier-check", + "test": "run-s --silent --continue-on-error lint test:frontend test:package test:server test:entrypoint prettier-check", "depcheck": "check-node-version --node \">= 8.0\"", "postinstall": "run-s --silent depcheck", "prebuild": "run-s --silent depcheck", diff --git a/server.js b/server.js index 7ddd43b366..44407033bc 100644 --- a/server.js +++ b/server.js @@ -9,9 +9,11 @@ Raven.disableConsoleAlerts() const Server = require('./lib/server') const config = require('./lib/server-config') +const server = (module.exports = new Server(config)) + ;(async () => { try { - await new Server(config).start() + await server.start() } catch (e) { console.error(e) process.exit(1) -- GitLab