ci: fix testing
parent
1c1b8f66c8
commit
3ef44a5ce5
|
@ -1,4 +1,4 @@
|
||||||
name: CI
|
name: Build and test
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
@ -12,5 +12,5 @@ jobs:
|
||||||
run: docker build -t retropilot-server:latest .
|
run: docker build -t retropilot-server:latest .
|
||||||
- name: Run linter
|
- name: Run linter
|
||||||
run: docker run --rm retropilot-server:latest npm run lint
|
run: docker run --rm retropilot-server:latest npm run lint
|
||||||
# - name: Run tests
|
- name: Run tests
|
||||||
# run: docker run --rm -v $(pwd)/config.sample.js:/app/config.js retropilot-server:latest npm test
|
run: docker run --rm --env-file .env.sample -v /tmp/realdata:/app/realdata retropilot-server:latest npm test
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
import dummyGenerator from './../dummyGenerator';
|
import dummyGenerator from '../dummyGenerator';
|
||||||
|
|
||||||
export default (app) => {
|
export default (app) => {
|
||||||
describe('/v2/pilotauth/ - Testing device registration', function () {
|
let server;
|
||||||
it('Returns dongle ID on valid registration', function (done) {
|
|
||||||
request(app)
|
before(async () => {
|
||||||
|
server = await app;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('/v2/pilotauth/ - Testing device registration', () => {
|
||||||
|
it('Returns dongle ID on valid registration', (done) => {
|
||||||
|
request(server)
|
||||||
.post('/v2/pilotauth/')
|
.post('/v2/pilotauth/')
|
||||||
.query({
|
.query({
|
||||||
imei: dummyGenerator.getImei(),
|
imei: dummyGenerator.getImei(),
|
||||||
|
@ -24,8 +30,8 @@ export default (app) => {
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Returns 400 when incorrect public key given', function (done) {
|
it('Returns 400 when incorrect public key given', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.post('/v2/pilotauth/')
|
.post('/v2/pilotauth/')
|
||||||
.query({
|
.query({
|
||||||
imei: dummyGenerator.getImei(),
|
imei: dummyGenerator.getImei(),
|
||||||
|
@ -40,8 +46,8 @@ export default (app) => {
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Returns 400 when missing register_token', function (done) {
|
it('Returns 400 when missing register_token', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.post('/v2/pilotauth/')
|
.post('/v2/pilotauth/')
|
||||||
.query({
|
.query({
|
||||||
imei: dummyGenerator.getImei(),
|
imei: dummyGenerator.getImei(),
|
||||||
|
@ -56,8 +62,8 @@ export default (app) => {
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Returns 400 when missing query', function (done) {
|
it('Returns 400 when missing query', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.post('/v2/pilotauth/')
|
.post('/v2/pilotauth/')
|
||||||
|
|
||||||
.set('Accept', 'application/x-www-form-urlencoded')
|
.set('Accept', 'application/x-www-form-urlencoded')
|
||||||
|
|
|
@ -1,29 +1,39 @@
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
export default (app) => {
|
export default (app) => {
|
||||||
describe('/api', function () {
|
let server;
|
||||||
it('Load general app stats', function (done) {
|
|
||||||
request(app)
|
before(async () => {
|
||||||
|
server = await app;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('/api', () => {
|
||||||
|
it('Load general app stats', (done) => {
|
||||||
|
request(server)
|
||||||
.get('/retropilot/0/useradmin')
|
.get('/retropilot/0/useradmin')
|
||||||
.expect('Content-Type', /json/)
|
.expect('Content-Type', /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.expect((req) => {
|
.expect((req) => {
|
||||||
const body = req.body;
|
const { body } = req;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (
|
if (
|
||||||
body.hasOwnProperty('success') && body.success === true &&
|
body.hasOwnProperty('success')
|
||||||
body.hasOwnProperty('data') &&
|
&& body.success === true
|
||||||
body.data.hasOwnProperty('appStats') &&
|
&& body.hasOwnProperty('data')
|
||||||
body.data.appStats.hasOwnProperty('config') &&
|
&& body.data.hasOwnProperty('appStats')
|
||||||
typeof body.data.appStats.config.registerAllowed === 'boolean' &&
|
&& body.data.appStats.hasOwnProperty('config')
|
||||||
typeof body.data.appStats.process.env.WELCOME_MESSAGE === 'string' &&
|
&& typeof body.data.appStats.config.registerAllowed === 'boolean'
|
||||||
typeof body.data.appStats['accounts'] === 'number' &&
|
&& typeof body.data.appStats.process.env.WELCOME_MESSAGE === 'string'
|
||||||
typeof body.data.appStats['devices'] === 'number' &&
|
&& typeof body.data.appStats.accounts === 'number'
|
||||||
typeof body.data.appStats['drives'] === 'number' &&
|
&& typeof body.data.appStats.devices === 'number'
|
||||||
(typeof body.data.appStats['storageUsed'] === 'number' || body.data.appStats['storageUsed'] === 'Unsupported Platform')) {
|
&& typeof body.data.appStats.drives === 'number'
|
||||||
|
&& (typeof body.data.appStats.storageUsed === 'number'
|
||||||
|
|| body.data.appStats.storageUsed === 'Unsupported Platform')
|
||||||
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// eslint-disable-next-line no-empty
|
||||||
} catch (ignored) {
|
} catch (ignored) {
|
||||||
}
|
}
|
||||||
throw new Error('Invalid returned parameters in GET /retropilot/0/useradmin ');
|
throw new Error('Invalid returned parameters in GET /retropilot/0/useradmin ');
|
||||||
|
|
|
@ -2,9 +2,15 @@ import request from 'supertest';
|
||||||
import dummyGenerator from '../dummyGenerator';
|
import dummyGenerator from '../dummyGenerator';
|
||||||
|
|
||||||
export default (app) => {
|
export default (app) => {
|
||||||
|
let server;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
server = await app;
|
||||||
|
});
|
||||||
|
|
||||||
describe('/useradmin', () => {
|
describe('/useradmin', () => {
|
||||||
it('Page load', (done) => {
|
it('Page load', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.get('/useradmin')
|
.get('/useradmin')
|
||||||
.expect('Content-Type', /html/)
|
.expect('Content-Type', /html/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
@ -12,7 +18,7 @@ export default (app) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Redirect on existing session', (done) => {
|
it('Redirect on existing session', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.get('/useradmin')
|
.get('/useradmin')
|
||||||
// pull sessions from a store
|
// pull sessions from a store
|
||||||
.set('Cookie', ['session=s%3Aj%3A%7B%22account%22%3A%22adam%40adamblack.us%22%2C%22expires%22%3A1653171350726%7D.cRX19pNfx6mCGZ9ZYHcUIyy5CAQVMDgKrp%2F%2Bf7NFVYA;'])
|
.set('Cookie', ['session=s%3Aj%3A%7B%22account%22%3A%22adam%40adamblack.us%22%2C%22expires%22%3A1653171350726%7D.cRX19pNfx6mCGZ9ZYHcUIyy5CAQVMDgKrp%2F%2Bf7NFVYA;'])
|
||||||
|
@ -24,7 +30,7 @@ export default (app) => {
|
||||||
|
|
||||||
describe('/useradmin/register/token', () => {
|
describe('/useradmin/register/token', () => {
|
||||||
it('No duplicate emails', (done) => {
|
it('No duplicate emails', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.post('/useradmin/register/token')
|
.post('/useradmin/register/token')
|
||||||
// TODO add dedicated DB/user account for tests to run on
|
// TODO add dedicated DB/user account for tests to run on
|
||||||
.send(`email=${dummyGenerator.alreadyRegisteredEmail}`)
|
.send(`email=${dummyGenerator.alreadyRegisteredEmail}`)
|
||||||
|
@ -34,7 +40,7 @@ export default (app) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Accepts new accounts', (done) => {
|
it('Accepts new accounts', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.post('/useradmin/register/token')
|
.post('/useradmin/register/token')
|
||||||
// TODO add dedicated DB/user account for tests to run on
|
// TODO add dedicated DB/user account for tests to run on
|
||||||
.send(`email=${dummyGenerator.newUserEmail}`)
|
.send(`email=${dummyGenerator.newUserEmail}`)
|
||||||
|
|
16
test/test.js
16
test/test.js
|
@ -3,20 +3,26 @@ import request from 'supertest';
|
||||||
|
|
||||||
import app from '../src/server/app';
|
import app from '../src/server/app';
|
||||||
|
|
||||||
|
let server;
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
server = await app;
|
||||||
|
});
|
||||||
|
|
||||||
// TODO better way to only run tests once server is up
|
// TODO better way to only run tests once server is up
|
||||||
describe('loading express', () => {
|
describe('loading express', () => {
|
||||||
it('responds to /', (done) => {
|
it('responds to /', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.get('/')
|
.get('/')
|
||||||
.expect(200, done);
|
.expect(200, done);
|
||||||
});
|
});
|
||||||
it('404 everything else', (done) => {
|
it('404 everything else', (done) => {
|
||||||
request(app)
|
request(server)
|
||||||
.get('/foo/bar')
|
.get('/foo/bar')
|
||||||
.expect(404, done);
|
.expect(404, done);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
require('./routes/api.test')(app);
|
require('./routes/api.test').default(app);
|
||||||
require('./routes/useradmin.test')(app);
|
require('./routes/useradmin.test').default(app);
|
||||||
if (process.env.USE_USER_ADMIN_API) require('./routes/userAdminApi.test')(app);
|
if (process.env.USE_USER_ADMIN_API) require('./routes/userAdminApi.test').default(app);
|
||||||
|
|
Loading…
Reference in New Issue