123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict';
- var assert = require('assert');
- var doT = require('..');
- var fs = require('fs');
- describe('doT.process', function() {
- beforeEach(function() {
- removeCompiledTemplateFiles();
- });
- afterEach(function() {
- removeCompiledTemplateFiles();
- });
- function removeCompiledTemplateFiles() {
- try { fs.unlinkSync('./test/templates/test.js'); } catch(e) {}
- }
- it('should compile all templates in folder', function() {
- const templates = doT.process({path: './test/templates'});
- var str = templates.test({data: 2});
- assert.equal(str, '21');
- var js = fs.statSync('./test/templates/test.js');
- assert.ok(js.isFile());
- // code below passes if the test is run without coverage using `npm run test-spec`
- // because source code of doT.encodeHTMLSource is used inside compiled templates
- // var fn = require('./templates/test.js');
- // var str = fn({data: 2});
- // assert.equal(str, '21');
- });
-
- it('should ignore varname with polluted object prototype', function() {
- var currentLog = console.log;
- console.log = log;
- var logged;
-
- Object.prototype.templateSettings = {varname: 'it=(console.log("executed"),{})'};
- try {
- const templates = doT.process({path: './test/templates'});
- assert.notEqual(logged, 'executed');
- // injected code can only be executed if undefined is passed to template function
- templates.test();
- assert.notEqual(logged, 'executed');
- } finally {
- console.log = currentLog;
- }
-
- function log(str) {
- logged = str;
- }
- });
- });
|