1 | var Lab = require('lab');
|
2 | var VM = require('../lib/vm');
|
3 |
|
4 | var assert = require('chai').assert;
|
5 |
|
6 | exports.assertHtml = function(template, src, result, options, callback) {
|
7 | src = src.join('\n');
|
8 | var env = {};
|
9 | var context = {
|
10 | items: [1,2,3],
|
11 | idHelper: 'notice',
|
12 | outputNumber: 1337,
|
13 | helloWorld: 'Hello World from @env',
|
14 | showFirst: function(force) {
|
15 | if (force !== undefined) {
|
16 | return force;
|
17 | }
|
18 | return false;
|
19 | },
|
20 | x: 0,
|
21 | message: function(m1, m2){
|
22 | if (!m2) {
|
23 | return m1;
|
24 | }
|
25 | return [m1, m2].join(' ');
|
26 | },
|
27 | helloBlock: function(callback) {
|
28 | return this.helloWorld + ' ' + callback() + ' ' + this.helloWorld;
|
29 | },
|
30 | block: function(callback) {
|
31 | return VM.safe(callback());
|
32 | },
|
33 | content: function() {
|
34 | switch (arguments.length) {
|
35 | case 0:
|
36 | return env[''];
|
37 | case 1:
|
38 | return env[arguments[0]];
|
39 | case 2:
|
40 | var arg = arguments[0];
|
41 | if (!arg) {
|
42 | return arguments[1]();
|
43 | }
|
44 | return env[arg] || arguments[1]();
|
45 | }
|
46 | },
|
47 | evilMethod: function() {
|
48 | return '<script>do_something_evil();</script>';
|
49 | }
|
50 | };
|
51 | assert.deepEqual(template.render(src, context, options), result);
|
52 | if (callback) {
|
53 | callback();
|
54 | }
|
55 | };
|
56 |
|
57 | exports.assertSyntaxError = function(template, src, result, options, callback) {
|
58 | src = src.join('\n');
|
59 | var context = {
|
60 | idHelper: 'notice',
|
61 | outputNumber: 1337,
|
62 | helloWorld: 'Hello World from @env',
|
63 | showFirst: function(force) {
|
64 | if (force !== undefined) {
|
65 | return force;
|
66 | }
|
67 | return false;
|
68 | },
|
69 | x: 0,
|
70 | message: function(v){ return v; },
|
71 | helloBlock: function(callback) {
|
72 | return this.helloWorld + ' ' + callback() + ' ' + this.helloWorld;
|
73 | }
|
74 | };
|
75 | assert.throw(function() {
|
76 | template.render(src, context, options);
|
77 | }, result);
|
78 |
|
79 | if (callback) {
|
80 | callback();
|
81 | }
|
82 |
|
83 | };
|