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