X-Git-Url: https://git.squeep.com/?p=squeep-authentication-module;a=blobdiff_plain;f=test%2Flib%2Ftemplate%2Fhelpers.js;fp=test%2Flib%2Ftemplate%2Fhelpers.js;h=686f72bab6c97e48293f4b3f7f234d56851ba0b7;hp=0000000000000000000000000000000000000000;hb=2c3ddf0a6f40b9d0a4e54fa12b84b8af33eaaadc;hpb=54ca04e330d14a12344ddc2b161c1d9b55bfd7d7 diff --git a/test/lib/template/helpers.js b/test/lib/template/helpers.js new file mode 100644 index 0000000..686f72b --- /dev/null +++ b/test/lib/template/helpers.js @@ -0,0 +1,54 @@ +'use strict'; + +const assert = require('node:assert'); +const Helpers = require('../../../lib/template/helpers'); + +describe('Template Helpers', function () { + describe('sessionNavLinks', function () { + let pagePathLevel, ctx, options; + beforeEach(function () { + pagePathLevel = 0; + ctx = { + session: { + authenticatedIdentifier: 'username', + } + }; + options = {}; + }); + it('adds nav links', function () { + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 2); + }); + it('extends nav links', function () { + options.navLinks = [ {} ]; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 3); + }); + it('add login link if no user', function () { + delete ctx.session.authenticatedIdentifier; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 1); + }); + it('adds nav links for profile', function () { + delete ctx.session.authenticatedIdentifier; + ctx.session.authenticatedProfile = 'https://example.com/'; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 2); + }); + it('covers logout redirect', function () { + ctx.url = '../relative'; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 2); + }); + it('covers page depth', function () { + pagePathLevel = 2; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 2); + }); + it('elides account link on account page', function () { + options.pageIdentifier = 'account'; + Helpers.sessionNavLinks(pagePathLevel, ctx, options); + assert.strictEqual(options.navLinks.length, 1); + }); + }); // sessionNavLinks +}); // Template Helpers