Skip to content

Commit

Permalink
tests: use supertest
Browse files Browse the repository at this point in the history
closes #1021
  • Loading branch information
dougwilson committed Apr 30, 2014
1 parent 177b18f commit a160e5e
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 234 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -18,8 +18,9 @@
"utils-merge": "1.0.0"
},
"devDependencies": {
"mocha": "~1.18.2",
"should": "~3.3.0",
"mocha": "~1.18.2"
"supertest": "~0.11.0"
},
"licenses": [
{
Expand Down
10 changes: 5 additions & 5 deletions test/app.listen.js
@@ -1,8 +1,8 @@

process.env.NODE_ENV = 'test';

var connect = require('../');
var request = require('./support/http');
var connect = require('..');
var request = require('supertest');

describe('app.listen()', function(){
it('should wrap in an http.Server', function(done){
Expand All @@ -12,10 +12,10 @@ describe('app.listen()', function(){
res.end();
});

app.listen(5555, function(){
app.listen(0, function(){
request(app)
.get('/')
.expect(200, done);
});
})
})
});
});
88 changes: 88 additions & 0 deletions test/fqdn.js
@@ -0,0 +1,88 @@

process.env.NODE_ENV = 'test';

var connect = require('..');
var http = require('http');
var request = require('supertest');

describe('app.use()', function(){
var app;

beforeEach(function(){
app = connect();
});

it('should not obscure FQDNs', function(done){
app.use(function(req, res){
res.end(req.url);
});

app.handle({ method: 'GET', url: 'http://example.com/foo' }, {
end: function(str){
str.should.equal('http://example.com/foo');
done();
}
});
});

describe('with a connect app', function(){
it('should ignore FQDN in search', function (done) {
app.use('/proxy', function (req, res) {
res.end(req.url);
});

app.handle({ method: 'GET', url: '/proxy?url=http://example.com/blog/post/1' }, {
end: function(str){
str.should.equal('/?url=http://example.com/blog/post/1');
done();
}
});
});

it('should adjust FQDN req.url', function(done){
app.use('/blog', function(req, res){
res.end(req.url);
});

app.handle({ method: 'GET', url: 'http://example.com/blog/post/1' }, {
end: function(str){
str.should.equal('http://example.com/post/1');
done();
}
});
});

it('should adjust FQDN req.url with multiple handlers', function(done){
app.use(function(req,res,next) {
next();
});

app.use('/blog', function(req, res){
res.end(req.url);
});

app.handle({ method: 'GET', url: 'http://example.com/blog/post/1' }, {
end: function(str){
str.should.equal('http://example.com/post/1');
done();
}
});
});

it('should adjust FQDN req.url with multiple routed handlers', function(done) {
app.use('/blog', function(req,res,next) {
next();
});
app.use('/blog', function(req, res) {
res.end(req.url);
});

app.handle({ method: 'GET', url: 'http://example.com/blog/post/1' }, {
end: function(str){
str.should.equal('http://example.com/post/1');
done();
}
});
});
});
});
114 changes: 28 additions & 86 deletions test/mounting.js
@@ -1,111 +1,55 @@

process.env.NODE_ENV = 'test';

var connect = require('../');
var connect = require('..');
var http = require('http');
var request = require('./support/http');
var request = require('supertest');
var should = require('should');

describe('app.use()', function(){
var app;

beforeEach(function(){
app = connect();
})
});

describe('with a connect app', function(){
it('should mount', function(done){
var blog = connect();

blog.use(function(req, res){
req.url.should.equal('/');
res.end('blog');
});

app.use('/blog', blog);

request(app)
.get('/blog')
.expect('blog', done);
})
.expect(200, 'blog', done);
});

it('should retain req.originalUrl', function(done){
var app = connect();

app.use('/blog', function(req, res){
res.end(req.originalUrl);
});

request(app)
.get('/blog/post/1')
.expect('/blog/post/1', done);
})

it('should adjust req.url', function(done){
var app = connect();

app.use('/blog', function(req, res){
res.end(req.url);
});

request(app)
.get('/blog/post/1')
.expect('/post/1', done);
})

it('should ignore FQDN in search', function (done) {
var app = connect();

app.use('/proxy', function (req, res) {
res.end(req.url);
});

request(app)
.get('/proxy?url=http://example.com/blog/post/1')
.expect('/?url=http://example.com/blog/post/1', done);
.expect(200, '/blog/post/1', done);
});

it('should adjust FQDN req.url', function(done){
var app = connect();

app.use('/blog', function(req, res){
res.end(req.url);
});

request(app)
.get('http://example.com/blog/post/1')
.expect('http://example.com/post/1', done);
})

it('should adjust FQDN req.url with multiple handlers', function(done){
var app = connect();

app.use(function(req,res,next) {
next();
});

it('should adjust req.url', function(done){
app.use('/blog', function(req, res){
res.end(req.url);
});

request(app)
.get('http://example.com/blog/post/1')
.expect('http://example.com/post/1', done);
})

it('should adjust FQDN req.url with multiple routed handlers', function(done) {
var app = connect();

app.use('/blog', function(req,res,next) {
next();
});
app.use('/blog', function(req, res) {
res.end(req.url);
});

request(app)
.get('http://example.com/blog/post/1')
.expect('http://example.com/post/1', done);
})
.get('/blog/post/1')
.expect(200, '/post/1', done);
});

it('should strip trailing slash', function(done){
var blog = connect();
Expand All @@ -116,11 +60,11 @@ describe('app.use()', function(){
});

app.use('/blog/', blog);

request(app)
.get('/blog')
.expect('blog', done);
})
});

it('should set .route', function(){
var blog = connect();
Expand All @@ -130,11 +74,9 @@ describe('app.use()', function(){
app.route.should.equal('/');
blog.route.should.equal('/blog');
admin.route.should.equal('/admin');
})
});

it('should not add trailing slash to req.url', function(done) {
var app = connect();

app.use('/admin', function(req, res, next) {
next();
});
Expand All @@ -155,27 +97,27 @@ describe('app.use()', function(){
req.url.should.equal('/');
res.end('blog');
});

app.use('/blog', blog);

request(app)
.get('/blog')
.expect('blog', done);
})
})
});
});

it('should be case insensitive (lower-case route, mixed-case request)', function(done){
var blog = http.createServer(function(req, res){
req.url.should.equal('/');
res.end('blog');
});

app.use('/blog', blog);

request(app)
.get('/BLog')
.expect('blog', done);
})
});

it('should be case insensitive (mixed-case route, lower-case request)', function(done){
var blog = http.createServer(function(req, res){
Expand All @@ -188,7 +130,7 @@ describe('app.use()', function(){
request(app)
.get('/blog')
.expect('blog', done);
})
});

it('should be case insensitive (mixed-case route, mixed-case request)', function(done){
var blog = http.createServer(function(req, res){
Expand All @@ -201,5 +143,5 @@ describe('app.use()', function(){
request(app)
.get('/blOG')
.expect('blog', done);
})
})
});
});

0 comments on commit a160e5e

Please sign in to comment.