X-Git-Url: http://git.squeep.com/?p=squeep-indie-auther;a=blobdiff_plain;f=test%2Fsrc%2Ftemplate%2Fadmin-html.js;fp=test%2Fsrc%2Ftemplate%2Fadmin-html.js;h=4c9e7a77fecb2f34370475470bf1de6422dbeea4;hp=0000000000000000000000000000000000000000;hb=b0103b0d496262c438b40bc20304081dbfe41e73;hpb=8ed81748bce7cea7904cac7225b20a60cafdfc16 diff --git a/test/src/template/admin-html.js b/test/src/template/admin-html.js new file mode 100644 index 0000000..4c9e7a7 --- /dev/null +++ b/test/src/template/admin-html.js @@ -0,0 +1,112 @@ +/* eslint-env mocha */ +'use strict'; + +const assert = require('assert'); +const template = require('../../../src/template/admin-html'); +const Config = require('../../../config'); +const StubLogger = require('../../stub-logger'); +const lint = require('html-minifier-lint').lint; // eslint-disable-line node/no-unpublished-require + +const stubLogger = new StubLogger(); + +function lintHtml(html) { + const result = lint(html); + stubLogger.debug('validHtml', '', { result, html }); + assert(!result); +} + +describe('Admin HTML Template', function () { + let ctx, config; + beforeEach(function () { + ctx = { + profilesScopes: { + scopeIndex: { + 'scope': { + application: '', + description: '', + isPermanent: true, + isManuallyAdded: false, + profiles: ['https://example.com/'], + }, + 'other_scope': { + application: 'app1', + description: '', + isPermanent: false, + isManuallyAdded: true, + profiles: [], + }, + 'more_scope': { + application: 'app2', + description: '', + isPermanent: false, + isManuallyAdded: false, + profiles: [], + }, + 'scopitty_scope': { + application: 'app2', + description: '', + isPermanent: false, + isManuallyAdded: false, + profiles: [], + }, + 'last_scope': { + application: 'app1', + description: '', + isPermanent: false, + isManuallyAdded: false, + profiles: [], + }, + }, + profiles: ['https://example.com/'], + }, + tokens: [ + { + codeId: 'xxx', + clientId: 'https://client.example.com/', + profile: 'https://profile.example.com/', + created: new Date(), + expires: null, + isRevoked: false, + }, + { + codeId: 'yyy', + clientId: 'https://client.example.com/', + profile: 'https://profile.example.com/', + isToken: true, + created: new Date(Date.now() - 86400000), + refreshed: new Date(), + expires: new Date(Date.now() + 86400000), + isRevoked: true, + }, + { + codeId: 'zzz', + clientId: 'https://client.exmaple.com/', + profile: 'https://profile.example.com/', + resource: 'https://resource.example.com/', + created: new Date(), + scopes: ['read'], + }, + ], + }; + config = new Config('test'); + }); + it('renders', function () { + const result = template(ctx, config); + lintHtml(result); + assert(result); + }); + it('renders no tokens', function () { + ctx.tokens = []; + const result = template(ctx, config); + lintHtml(result); + assert(result); + }); + it('covers options', function () { + delete ctx.profilesScopes.profiles; + delete ctx.profilesScopes.scopeIndex.scope.profiles; + delete ctx.tokens; + const result = template(ctx, config); + lintHtml(result); + assert(result); + }); +}); // Admin HTML Template