diff --git a/package.json b/package.json index 8aca787..a61d19f 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "nodemon": "1.11.0", "react-addons-test-utils": "15.5.1", "redux-mock-store": "1.2.3", + "supertest": "^3.0.0", "uglify-js": "2.6.2", "watchify": "3.9.0" }, diff --git a/src/index.js b/src/index.js index cc96700..8d75dea 100644 --- a/src/index.js +++ b/src/index.js @@ -8,4 +8,4 @@ const app = require('./server/app.js') const debug = require('debug')('peercalls') let port = process.env.PORT || 3000 -app.http.listen(port, () => debug('Listening on: %s', port)) +app.listen(port, () => debug('Listening on: %s', port)) diff --git a/src/server/__tests__/app-test.js b/src/server/__tests__/app-test.js new file mode 100644 index 0000000..8b767c7 --- /dev/null +++ b/src/server/__tests__/app-test.js @@ -0,0 +1,62 @@ +jest.mock('socket.io', () => { + const { EventEmitter } = require('events') + return jest.fn().mockReturnValue(new EventEmitter()) +}) +jest.mock('../socket.js') + +const app = require('../app.js') +const handleSocket = require('../socket.js') +const io = require('socket.io')() +const request = require('supertest') + +describe('server/app', () => { + + describe('GET /', () => { + + it('renders index', () => { + return request(app) + .get('/') + .expect(200) + }) + + }) + + describe('GET /call', () => { + + it('redirects to a new call', () => { + return request(app) + .get('/call') + .expect(302) + .expect('location', /^call\/[0-9a-f-]{36}$/) + }) + + it('redirects to relative url when slash', () => { + return request(app) + .get('/call/') + .expect(302) + .expect('location', /[0-9a-f-]{36}$/) + }) + + }) + + describe('GET /call/', () => { + + it('renders call page', () => { + return request(app) + .get('/call/test') + .expect(200) + }) + + }) + + describe('io:connection', () => { + + it('calls handleSocket with socket', () => { + const socket = { hi: 'me socket' } + io.emit('connection', socket) + expect(handleSocket.mock.calls).toEqual([[ socket, io ]]) + }) + + }) + +}) diff --git a/src/server/__tests__/socket-test.js b/src/server/__tests__/socket-test.js index ee5fe2c..5b30a9e 100644 --- a/src/server/__tests__/socket-test.js +++ b/src/server/__tests__/socket-test.js @@ -1,12 +1,9 @@ 'use strict' -jest.unmock('../socket.js') -jest.unmock('events') -jest.unmock('underscore') const EventEmitter = require('events').EventEmitter const handleSocket = require('../socket.js') -describe('socket', () => { +describe('server/socket', () => { let socket, io, rooms beforeEach(() => { socket = new EventEmitter() diff --git a/src/server/__tests__/turn-test.js b/src/server/__tests__/turn-test.js index 6a56969..5d21a87 100644 --- a/src/server/__tests__/turn-test.js +++ b/src/server/__tests__/turn-test.js @@ -1,7 +1,6 @@ -jest.unmock('../turn.js') const turn = require('../turn.js') -describe('turn', () => { +describe('server/turn', () => { describe('getCredentials', () => { it('returns username & credential', () => { const auth = turn.getCredentials('a', 'b') diff --git a/src/server/app.js b/src/server/app.js index 5c517e0..7026ab0 100644 --- a/src/server/app.js +++ b/src/server/app.js @@ -18,4 +18,4 @@ app.use('/', require('./routes/index.js')) io.on('connection', socket => handleSocket(socket, io)) -module.exports = { http, app } +module.exports = http