initial commit
[squeep-indie-auther] / test / src / template / admin-html.js
1 /* eslint-env mocha */
2 'use strict';
3
4 const assert = require('assert');
5 const template = require('../../../src/template/admin-html');
6 const Config = require('../../../config');
7 const StubLogger = require('../../stub-logger');
8 const lint = require('html-minifier-lint').lint; // eslint-disable-line node/no-unpublished-require
9
10 const stubLogger = new StubLogger();
11
12 function lintHtml(html) {
13 const result = lint(html);
14 stubLogger.debug('validHtml', '', { result, html });
15 assert(!result);
16 }
17
18 describe('Admin HTML Template', function () {
19 let ctx, config;
20 beforeEach(function () {
21 ctx = {
22 profilesScopes: {
23 scopeIndex: {
24 'scope': {
25 application: '',
26 description: '',
27 isPermanent: true,
28 isManuallyAdded: false,
29 profiles: ['https://example.com/'],
30 },
31 'other_scope': {
32 application: 'app1',
33 description: '',
34 isPermanent: false,
35 isManuallyAdded: true,
36 profiles: [],
37 },
38 'more_scope': {
39 application: 'app2',
40 description: '',
41 isPermanent: false,
42 isManuallyAdded: false,
43 profiles: [],
44 },
45 'scopitty_scope': {
46 application: 'app2',
47 description: '',
48 isPermanent: false,
49 isManuallyAdded: false,
50 profiles: [],
51 },
52 'last_scope': {
53 application: 'app1',
54 description: '',
55 isPermanent: false,
56 isManuallyAdded: false,
57 profiles: [],
58 },
59 },
60 profiles: ['https://example.com/'],
61 },
62 tokens: [
63 {
64 codeId: 'xxx',
65 clientId: 'https://client.example.com/',
66 profile: 'https://profile.example.com/',
67 created: new Date(),
68 expires: null,
69 isRevoked: false,
70 },
71 {
72 codeId: 'yyy',
73 clientId: 'https://client.example.com/',
74 profile: 'https://profile.example.com/',
75 isToken: true,
76 created: new Date(Date.now() - 86400000),
77 refreshed: new Date(),
78 expires: new Date(Date.now() + 86400000),
79 isRevoked: true,
80 },
81 {
82 codeId: 'zzz',
83 clientId: 'https://client.exmaple.com/',
84 profile: 'https://profile.example.com/',
85 resource: 'https://resource.example.com/',
86 created: new Date(),
87 scopes: ['read'],
88 },
89 ],
90 };
91 config = new Config('test');
92 });
93 it('renders', function () {
94 const result = template(ctx, config);
95 lintHtml(result);
96 assert(result);
97 });
98 it('renders no tokens', function () {
99 ctx.tokens = [];
100 const result = template(ctx, config);
101 lintHtml(result);
102 assert(result);
103 });
104 it('covers options', function () {
105 delete ctx.profilesScopes.profiles;
106 delete ctx.profilesScopes.scopeIndex.scope.profiles;
107 delete ctx.tokens;
108 const result = template(ctx, config);
109 lintHtml(result);
110 assert(result);
111 });
112 }); // Admin HTML Template