mustbe
Version:
Authorization plumbing for Node+Express apps
136 lines (104 loc) • 3.38 kB
JavaScript
var MustBe = require("../../mustbe/core");
var helpers = require("../helpers");
describe("user authenticated", function(){
describe("when user is found", function(){
var response;
beforeEach(function(done){
var mustBe = new MustBe();
mustBe.configure(function(config){
config.routeHelpers(function(rh){
rh.getUser(helpers.getValidUser);
});
config.userIdentity(function(id){
id.isAuthenticated(helpers.isAuthenticated);
});
});
var routeHelpers = mustBe.routeHelpers();
var request = helpers.setupRoute("/", mustBe, function(handler){
return routeHelpers.authenticated(handler);
});
request(function(err, res){
response = res;
done();
});
});
it("should allow request", function(){
helpers.expectResponseCode(response, 200);
});
});
describe("when user is not found", function(){
var response;
beforeEach(function(done){
var mustBe = new MustBe();
mustBe.configure(function(config){
config.routeHelpers(function(rh){
rh.getUser(helpers.getNullUser);
rh.notAuthenticated(helpers.notAuthenticated);
});
config.userIdentity(function(id){
id.isAuthenticated(helpers.isAuthenticated);
});
});
var routeHelpers = mustBe.routeHelpers();
var request = helpers.setupRoute("/", mustBe, function(handler){
return routeHelpers.authenticated(handler);
});
request(function(err, res){
response = res;
done();
});
});
it("should not allow request", function(){
helpers.expectResponseCode(response, 403);
});
});
describe("when getting user causes error", function(){
var response;
beforeEach(function(done){
var mustBe = new MustBe();
mustBe.configure(function(config){
config.routeHelpers(function(rh){
rh.getUser(function(req, cb){
var err = new Error("some error");
cb(err);
});
});
});
var routeHelpers = mustBe.routeHelpers();
var request = helpers.setupRoute("/", mustBe, function(handler){
return routeHelpers.authenticated(handler);
});
request(function(err, res){
response = res;
done();
});
});
it("should throw the error", function(){
helpers.expectResponseError(response, "some error");
});
});
describe("when there is not getUser method, and trying to authorize user", function(){
var response;
beforeEach(function(done){
var mustBe = new MustBe();
mustBe.configure(function(config){
config.routeHelpers(function(rh){
rh.notAuthorized(helpers.notAuthorized);
});
});
var routeHelpers = mustBe.routeHelpers();
var request = helpers.setupRoute("/", mustBe, function(handler){
return routeHelpers.authorized("foo", handler);
});
request(function(err, res){
response = res;
done();
});
});
it("should throw an user saying can't get user", function(){
var errType = "NoGetUserMethodException";
var msg = "You must specify a getUser method on the mustBe config.routeHelpers";
helpers.expectResponseError(response, msg, errType);
});
});
});