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