Skip to content

Commit

Permalink
Merge pull request #72 from strongloop/enhance-tests
Browse files Browse the repository at this point in the history
Update tests to be port independent
  • Loading branch information
gunjpan committed Oct 6, 2016
2 parents f453f71 + 02aebf6 commit 78ec2bb
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 42 deletions.
3 changes: 2 additions & 1 deletion test/express-helper.js
Expand Up @@ -8,7 +8,8 @@ var express = require('express');
module.exports = function createApp() {
var app = express();

app.set('port', process.env.PORT || 3000);
// dynamically allocate available PORT if no port provided
app.set('port', process.env.PORT || 0);
app.use(require('body-parser').json());

return app;
Expand Down
10 changes: 6 additions & 4 deletions test/rest-adapter-custom.test.js
Expand Up @@ -13,6 +13,8 @@ var TEST_ADDRESS = /Bedford Ave.*, Brooklyn, NY 11211, USA/;
describe('REST connector', function() {
describe('custom operations', function() {
var server = null;
var hostURL = 'http://localhost:';

before(function(done) {
var app = require('./express-helper')();

Expand All @@ -29,7 +31,8 @@ describe('REST connector', function() {
});

server = app.listen(app.get('port'), function(err, data) {
// console.log('Server listening on ', app.get('port'));
// console.log('Server listening on ', server.address().port);
hostURL += server.address().port;
done(err, data);
});
});
Expand All @@ -40,6 +43,7 @@ describe('REST connector', function() {

it('should configure remote methods', function(done) {
var spec = require('./request-template.json');
spec.url = hostURL + '/{p}'; // replace template.url to use current host
var template = {
operations: [
{
Expand All @@ -55,9 +59,7 @@ describe('REST connector', function() {
assert.deepEqual(model.m1.accepts, [
{
arg: 'p',
http: {
source: 'path',
},
http: { source: 'path' },
required: false,
type: 'string',
},
Expand Down
32 changes: 20 additions & 12 deletions test/rest-builder.test.js
Expand Up @@ -13,7 +13,9 @@ var RequestBuilder = require('../lib/rest-builder');

describe('REST Request Builder', function() {
describe('Request templating', function() {
var hostURL = 'http://localhost:';
var server = null;

before(function(done) {
var app = require('./express-helper')();

Expand All @@ -30,7 +32,7 @@ describe('REST Request Builder', function() {
});

server = app.listen(app.get('port'), function(err, data) {
// console.log('Server listening on ', app.get('port'));
hostURL += server.address().port;
done(err, data);
});
});
Expand All @@ -40,7 +42,8 @@ describe('REST Request Builder', function() {
});

it('should substitute the variables', function(done) {
var builder = new RequestBuilder('GET', 'http://localhost:3000/{p}').query({ x: '{x}', y: 2 });
var builder = new RequestBuilder('GET', hostURL + '/{p}')
.query({ x: '{x}', y: 2 });
builder.invoke({ p: 1, x: 'X' },
function(err, body, response) {
// console.log(response.headers);
Expand All @@ -56,7 +59,7 @@ describe('REST Request Builder', function() {
});

it('should support default variables', function(done) {
var builder = new RequestBuilder('GET', 'http://localhost:3000/{p=100}').query({ x: '{x=ME}', y: 2 });
var builder = new RequestBuilder('GET', hostURL + '/{p=100}').query({ x: '{x=ME}', y: 2 });
builder.invoke({ p: 1 },
function(err, body, response) {
// console.log(response.headers);
Expand All @@ -73,7 +76,7 @@ describe('REST Request Builder', function() {
});

it('should support typed variables', function(done) {
var builder = new RequestBuilder('POST', 'http://localhost:3000/{p=100}').query({ x: '{x=100:number}', y: 2 })
var builder = new RequestBuilder('POST', hostURL + '/{p=100}').query({ x: '{x=100:number}', y: 2 })
.body({ a: '{a=1:number}', b: '{b=true:boolean}' });
builder.invoke({ p: 1, a: 100, b: false },
function(err, body, response) {
Expand All @@ -93,7 +96,7 @@ describe('REST Request Builder', function() {
});

it('should report missing required variables', function(done) {
var builder = new RequestBuilder('POST', 'http://localhost:3000/{!p}').query({ x: '{x=100:number}', y: 2 })
var builder = new RequestBuilder('POST', hostURL + '/{!p}').query({ x: '{x=100:number}', y: 2 })
.body({ a: '{^a:number}', b: '{!b=true:boolean}' });
try {
builder.invoke({ a: 100, b: false },
Expand All @@ -114,7 +117,7 @@ describe('REST Request Builder', function() {
});

it('should support required variables', function(done) {
var builder = new RequestBuilder('POST', 'http://localhost:3000/{!p}').query({ x: '{x=100:number}', y: 2 })
var builder = new RequestBuilder('POST', hostURL + '/{!p}').query({ x: '{x=100:number}', y: 2 })
.body({ a: '{^a:number}', b: '{!b=true:boolean}' });

builder.invoke({ p: 1, a: 100, b: false },
Expand All @@ -135,7 +138,7 @@ describe('REST Request Builder', function() {
});

it('should build an operation with the parameter names', function(done) {
var builder = new RequestBuilder('POST', 'http://localhost:3000/{p}').query({ x: '{x}', y: 2 });
var builder = new RequestBuilder('POST', hostURL + '/{p}').query({ x: '{x}', y: 2 });

var fn = builder.operation(['p', 'x']);

Expand All @@ -155,7 +158,7 @@ describe('REST Request Builder', function() {
});

it('should build an operation with the parameter names as args', function(done) {
var builder = new RequestBuilder('POST', 'http://localhost:3000/{p}').query({ x: '{x}', y: 2 });
var builder = new RequestBuilder('POST', hostURL + '/{p}').query({ x: '{x}', y: 2 });

var fn = builder.operation('p', 'x');

Expand All @@ -175,7 +178,9 @@ describe('REST Request Builder', function() {
});

it('should build from a json doc', function(done) {
var builder = new RequestBuilder(require('./request-template.json'));
var template = require('./request-template.json');
template.url = hostURL + '/{p}'; // update template.url to dynamic host
var builder = new RequestBuilder(template);
// console.log(builder.parse());
builder.invoke({ p: 1, a: 100, b: false },
function(err, body, response) {
Expand Down Expand Up @@ -219,7 +224,9 @@ describe('REST Request Builder', function() {
});

describe('handling of 4XX status codes', function() {
var hostURL = 'http://localhost:';
var server = null;

before(function(done) {
var app = require('./express-helper')();

Expand All @@ -236,7 +243,8 @@ describe('REST Request Builder', function() {
});

server = app.listen(app.get('port'), function(err, data) {
// console.log('Server listening on ', app.get('port'));
// console.log('Server listening on ', server.address().port);
hostURL += server.address().port;
done(err, data);
});
});
Expand All @@ -246,7 +254,7 @@ describe('REST Request Builder', function() {
});

it('should consider the response an error', function(done) {
var builder = new RequestBuilder('GET', 'http://localhost:3000/');
var builder = new RequestBuilder('GET', hostURL);
builder.invoke(
function(err, body, response) {
assert.equal(400, response.statusCode);
Expand All @@ -257,7 +265,7 @@ describe('REST Request Builder', function() {
});

it('should consider the promise failed', function(done) {
var builder = new RequestBuilder('GET', 'http://localhost:3000/');
var builder = new RequestBuilder('GET', hostURL);
builder.invoke()
.then(function() {
assert.fail();
Expand Down
50 changes: 27 additions & 23 deletions test/rest-loopback.test.js
Expand Up @@ -6,26 +6,7 @@
var assert = require('assert');

var DataSource = require('loopback-datasource-juggler').DataSource;
var ds = new DataSource(require('../lib/rest-connector'),
{
baseURL: 'http://localhost:3000',
defaults: {
headers: {
'X-MY-HEADER': 'my-header',
},
},
});

// simplier way to describe model
var User = ds.define('User', {
name: String,
bio: String,
approved: Boolean,
joinedAt: Date,
age: Number,
}, { plural: 'Users' });

ds.attach(User);
var ds, User;

describe('REST connector', function() {
describe('CRUD apis', function() {
Expand All @@ -34,7 +15,7 @@ describe('REST connector', function() {
var app = require('./express-helper')();

var count = 2;
var users = [new User({ id: 1, name: 'Ray' }), new User({ id: 2, name: 'Joe' })];
var users;

app.get('/Users', function(req, res, next) {
res.setHeader('Content-Type', 'application/json');
Expand Down Expand Up @@ -90,9 +71,32 @@ describe('REST connector', function() {
}
res.status(404).end();
});

server = app.listen(app.get('port'), function(err, data) {
// console.log('Server listening on ', app.get('port'));
ds = new DataSource(require('../lib/rest-connector'),
{
baseURL: 'http://localhost:' + server.address().port,
defaults: {
headers: {
'X-MY-HEADER': 'my-header',
},
},
});

// simplier way to describe model
User = ds.define('User', {
name: String,
bio: String,
approved: Boolean,
joinedAt: Date,
age: Number,
}, { plural: 'Users' });

ds.attach(User);
users = [
new User({ id: 1, name: 'Ray' }),
new User({ id: 2, name: 'Joe' }),
];
// console.log('Server listening on ', server.address().port);
done(err, data);
});
});
Expand Down
6 changes: 4 additions & 2 deletions test/rest-model.test.js
Expand Up @@ -19,7 +19,7 @@ var User = modelBuilder.define('User', {

var RestResource = require('../lib/rest-model');

var rest = new RestResource('Users', 'http://localhost:3000');
var rest;

describe('REST connector', function() {
describe('CRUD methods supported', function() {
Expand Down Expand Up @@ -85,7 +85,9 @@ describe('REST connector', function() {
});

server = app.listen(app.get('port'), function(err, data) {
// console.log('Server listening on ', app.get('port'));
// console.log('Server listening on ', server.address().port);
rest = new RestResource('Users',
'http://localhost:' + server.address().port);
done(err, data);
});
});
Expand Down

0 comments on commit 78ec2bb

Please sign in to comment.