Initial commit
[yaffs-website] / node_modules / tiny-lr / test / middleware.js
1
2 var http       = require('http');
3 var assert     = require('assert');
4 var connect    = require('connect');
5 var express    = require('express');
6 var request    = require('supertest');
7 var debug      = require('debug')('tinylr:test');
8 var Server     = require('..').Server;
9
10 var npmenv = process.env;
11
12 var port = parseInt(process.env.npm_package_config_test_port || 0, 10);
13
14 // describe('Connect Middleware', suite('Connect Middleware', connect()));
15 describe('Express Middleware', suite('Express Middleware', express()));
16
17 // XXX cover up the ws connection done in client.js / server.js tests:w
18 function suite(name, app) {return function() {
19
20   before(function() {
21     this.app = app;
22     this.lr = new Server();
23
24     this.app
25       .use(this.lr.handler.bind(this.lr));
26
27     this.server = http.createServer(this.app);
28     debug('Start %s suite, listen on %d', name, port);
29     this.server.listen(port);
30   });
31
32
33   after(function(done) {
34     this.server.close(done);
35   });
36
37   describe('GET /', function() {
38     it('respond with nothing, but respond', function(done){
39       request(this.server)
40         .get('/')
41         .expect('Content-Type', /json/)
42         .expect(/\{"tinylr":"Welcome","version":"[\d].[\d].[\d]+"\}/)
43         .expect(200, done);
44     });
45
46     it('unknown route are noop with middlewares, next-ing', function(done){
47       request(this.server)
48         .get('/whatev')
49         .expect('Content-Type', /text\/html/)
50         .expect(/Cannot GET \/whatev/)
51         .expect(404, done);
52     });
53   });
54
55
56   describe('GET /changed', function() {
57     it('with no clients, no files', function(done) {
58       request(this.server)
59         .get('/changed')
60         .expect('Content-Type', /json/)
61         .expect(/"clients":\[\]/)
62         .expect(/"files":\[\]/)
63         .expect(200, done);
64     });
65
66     it('with no clients, some files', function(done) {
67       request(this.server)
68         .get('/changed?files=gonna.css,test.css,it.css')
69         .expect('Content-Type', /json/)
70         .expect('{"clients":[],"files":["gonna.css","test.css","it.css"]}')
71         .expect(200, done);
72     });
73   });
74
75   describe('POST /changed', function() {
76     it('with no clients, no files', function(done) {
77       request(this.server)
78         .post('/changed')
79         .expect('Content-Type', /json/)
80         .expect(/"clients":\[\]/)
81         .expect(/"files":\[\]/)
82         .expect(200, done);
83     });
84
85     it('with no clients, some files', function(done) {
86       var data = { clients: [], files: ['cat.css', 'sed.css', 'ack.js'] };
87
88       var r = request(this.server)
89         .post('/changed')
90         .send({ files: data.files })
91         .expect('Content-Type', /json/)
92         // .expect(JSON.stringify(data))
93         .expect(200, done);
94     });
95   });
96
97   describe('GET /livereload.js', function() {
98     it('respond with livereload script', function(done) {
99       request(this.server)
100         .get('/livereload.js')
101         .expect(/LiveReload/)
102         .expect(200, done);
103     });
104   });
105
106   describe('GET /kill', function() {
107     it('shutdown the server', function(done) {
108       var server = this.server;
109       request(server)
110         .get('/kill')
111         .expect(200, done);
112     });
113   });
114
115 }};