UNPKG

mustbe

Version:

Authorization plumbing for Node+Express apps

136 lines (104 loc) 3.38 kB
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); }); }); });