diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 6f241896a6..c91c9493c8 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,12 +13,8 @@ "node": ">=8" }, "scripts": { - "unit-test": "ava --verbose test/*.test.js", - "start-proxy": "! pgrep cloud_sql_proxy > /dev/null && cloud_sql_proxy -dir=/cloudsql -instances=$CLOUD_SQL_INSTANCE_NAME &", - "system-test": "repo-tools test app -- server.js", - "system-test-proxy": "npm run start-proxy; npm run system-test", - "all-test": "npm run unit-test && npm run system-test", - "test": "repo-tools test run --cmd npm -- run all-test" + "system-test": "ava --verbose test/*.test.js", + "all-test": "npm run system-test" }, "dependencies": { "@google-cloud/logging-winston": "^0.10.2", diff --git a/cloud-sql/mysql/mysql/server.js b/cloud-sql/mysql/mysql/server.js index 50fd4e9ded..0ca64eb69a 100644 --- a/cloud-sql/mysql/mysql/server.js +++ b/cloud-sql/mysql/mysql/server.js @@ -15,9 +15,6 @@ 'use strict'; -// Require process, so we can mock environment variables. -const process = require('process'); - const express = require('express'); const mysql = require('promise-mysql'); const bodyParser = require('body-parser'); @@ -167,9 +164,9 @@ app.post('/', async (req, res) => { }); const PORT = process.env.PORT || 8080; -app.listen(PORT, () => { +const server = app.listen(PORT, () => { console.log(`App listening on port ${PORT}`); console.log('Press Ctrl+C to quit.'); }); -module.exports = app; +module.exports = server; diff --git a/cloud-sql/mysql/mysql/test/server.test.js b/cloud-sql/mysql/mysql/test/server.test.js index effbac8bcf..c36f6bc24f 100644 --- a/cloud-sql/mysql/mysql/test/server.test.js +++ b/cloud-sql/mysql/mysql/test/server.test.js @@ -15,63 +15,31 @@ 'use strict'; -const express = require(`express`); -const path = require(`path`); -const proxyquire = require(`proxyquire`).noCallThru(); const request = require(`supertest`); const sinon = require(`sinon`); const test = require(`ava`); const tools = require(`@google-cloud/nodejs-repo-tools`); -const SAMPLE_PATH = path.join(__dirname, `../server.js`); +// Stub out MySQL calls +const stubMysql = sinon.stub(require('promise-mysql')); +const poolStub = sinon.stub(); +const queryStub = sinon.stub(); +queryStub.withArgs(sinon.match('SELECT COUNT(vote_id)')).resolves([{count: 1}]); +queryStub.withArgs(sinon.match('SELECT candidate, time_cast')).resolves([]); +poolStub['query'] = queryStub; +stubMysql.createPool.returns(poolStub); -function getSample() { - const testApp = express(); - sinon.stub(testApp, `listen`).yields(); - const expressMock = sinon.stub().returns(testApp); - const timestamp = new Date(); - const resultsMock = [ - { - candidate: 'TABS', - time_cast: timestamp, - }, - ]; - - const processMock = { - env: { - DB_USER: 'user', - DB_PASS: 'password', - DB_NAME: 'database', - }, - }; - - const app = proxyquire(SAMPLE_PATH, { - express: expressMock, - process: processMock, - }); - - return { - app: app, - mocks: { - express: expressMock, - results: resultsMock, - process: processMock, - }, - }; -} +const server = require('../server.js'); test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); -test.cb(`should display the default page`, t => { - const sample = getSample(); - const expectedResult = `Tabs VS Spaces`; +test(`check index page`, async t => { + const response = await request(server) + .get('/') + .timeout(1000); - request(sample.app) - .get(`/`) - .expect(200) - .expect(response => { - t.is(response.text, expectedResult); - }) - .end(t.end); + t.is(response.status, 200); }); + +server.close();