maglev
Version:
Preconfigured NodeJS framework
338 lines (272 loc) • 7.53 kB
JavaScript
import should from 'should';
import Server from '../src/server';
import mongoose from 'mongoose';
import request from 'supertest';
describe('Run server', function() {
let server = null;
it('should be able to run simple server', function(done) {
server = new Server({
root: __dirname,
db: mongoose.connect('mongodb://localhost/maglev'),
session: {
secret: '123456789'
},
server: {
port: 4433
},
//favicon: false,
//robots: false
}, function(err, server) {
if (err) {
throw err;
}
server.listen(done);
});
});
it('should not be able to listen again', function(done) {
server.listen(function(err) {
err.message.should.equal('Server is already listening');
done();
});
});
it('should be able to get value from route', function(done) {
const uri = '/api/test';
request('http://localhost:4433')
.get(uri)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(204)
.end(function(err, res) {
done();
});
});
it('should be able to get module', function(done) {
const Article = server.models.Article;
Article.create({
title: 'Book name'
}, function(err, article) {
if (err) {
throw err;
}
article.title.should.equal('Book name');
done();
});
});
it('should be able to handle error', function(done) {
const uri = '/api/test/error';
request('http://localhost:4433')
.get(uri)
.set('Accept', 'application/json')
.expect(500)
.end(function(err, res) {
done();
});
});
it('should be able to get correct value from vhost1', (done) => {
const uri = '/api/test1';
request('http://local.zabavnetesty.sk:4433')
.get(uri)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.end((err, res) => {
const { host } = res.body;
host.should.equal('local.zabavnetesty.sk');
done();
});
});
it('should be able to get correct value from vhost2', (done) => {
const uri = '/api/test2';
request('http://local.meetbus.com:4433')
.get(uri)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.end((err, res) => {
const { host } = res.body;
host.should.equal('local.meetbus.com');
done();
});
});
it('should not be able to get correct value from vhost2', (done) => {
const uri = '/api/test1';
request('http://local.meetbus.com:4433')
.get(uri)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(404)
.end(() => {
done();
});
});
it('should be able to close server', function(done) {
server.close(function(err) {
if (err) {
throw err;
}
done();
});
});
it('should not be able to close server again', function(done) {
server.close(function(err) {
err.message.should.equal('Server is not listening');
done();
});
});
let userSaved = null;
it('should be able to create user', function(done) {
const User = server.models.User;
User.create({
firstName: 'Zlatko',
lastName: 'Fedor'
}, function(err, user) {
if (err) {
throw err;
}
user.firstName.should.equal('Zlatko');
user.lastName.should.equal('Fedor');
user.name.should.equal('Zlatko Fedor');
userSaved = user;
done();
});
});
it('should be able to add facebook provider', function(done) {
userSaved.addProvider('facebook', 12345, {}, function(err, provider) {
if (err) {
console.log(err);
throw err;
}
should.exist(provider);
provider.user.toString().should.equal(userSaved._id.toString());
provider.nameUID.should.equal('facebook_12345');
done();
});
});
it('should be able to find user by facebook id', function(done) {
const User = server.models.User;
User.findByFacebookID(12345, function(err, user) {
if (err) {
throw err;
}
should.exist(user);
user.firstName.should.equal('Zlatko');
user.lastName.should.equal('Fedor');
user.name.should.equal('Zlatko Fedor');
done();
});
});
it('should be able to get provider without uid', function(done) {
userSaved.getProvider('facebook', function(err, provider) {
if (err) {
throw err;
}
provider.user.toString().should.equal(userSaved._id.toString());
provider.nameUID.should.equal('facebook_12345');
done();
});
});
it('should be able to get provider', function(done) {
userSaved.getProvider('facebook', 12345, function(err, provider) {
if (err) {
throw err;
}
provider.user.toString().should.equal(userSaved._id.toString());
provider.nameUID.should.equal('facebook_12345');
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('facebook', 12345, function(err, has) {
if (err) {
throw err;
}
has.should.equal(true);
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('facebook', function(err, has) {
if (err) {
throw err;
}
has.should.equal(true);
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('facebook', 1234566666, function(err, has) {
if (err) {
throw err;
}
has.should.equal(false);
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('twitter', function(err, has) {
if (err) {
throw err;
}
has.should.equal(false);
done();
});
});
it('should be able to use removeProvider', function(done) {
userSaved.removeProvider('facebook', 12345, function(err) {
if (err) {
throw err;
}
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('facebook', 12345, function(err, has) {
if (err) {
throw err;
}
has.should.equal(false);
done();
});
});
it('should be able to create by facebook profile', function(done) {
const User = server.models.User;
User.createByFacebook({
id: 44444,
name: 'Zlatko Fedor',
first_name: 'Zlatko',
last_name: 'Fedor',
email: 'fb@fb.com'
}, function(err, user) {
if (err) {
throw err;
}
user.firstName.should.equal('Zlatko');
user.lastName.should.equal('Fedor');
user.name.should.equal('Zlatko Fedor');
user.email.should.equal('fb@fb.com');
userSaved = user;
done();
});
});
it('should be able to use function hasProvider', function(done) {
userSaved.hasProvider('facebook', 44444, function(err, has) {
if (err) {
throw err;
}
has.should.equal(true);
done();
});
});
it('should be able to clean all', function(done) {
const { User, Provider } = server.models;
User.remove({}, function(err) {
if (err) {
throw err;
}
Provider.remove({}, function(err) {
if (err) {
throw err;
}
done();
});
});
});
});