Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions cloud-sql/mysql/mysql/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
7 changes: 2 additions & 5 deletions cloud-sql/mysql/mysql/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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;
64 changes: 16 additions & 48 deletions cloud-sql/mysql/mysql/test/server.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();