UNPKG

1.55 kBJavaScriptView Raw
1var browserify = require('../');
2var fs = require('fs');
3var vm = require('vm');
4var semver = require('semver');
5var test = require('tap').test;
6
7test('json', function (t) {
8 t.plan(2);
9 var b = browserify();
10 b.add(__dirname + '/json/main.js');
11 b.bundle(function (err, src) {
12 if (err) t.fail(err);
13 var c = {
14 ex : function (obj) {
15 t.same(obj, { beep : 'boop', x : 555 });
16 }
17 };
18 vm.runInNewContext(src, c);
19 });
20});
21
22// This works in Node v10 and up thanks to the JSON superset proposal, which
23// allows the evil chars in javascript strings.
24// https://github.com/tc39/proposal-json-superset
25test('verify evil json', { skip: semver.gte(process.version, 'v10.0.0') }, function(t) {
26 t.plan(1);
27 fs.readFile(__dirname + '/json/evil-chars.json', function(err, data) {
28 if (err) t.fail(err);
29 t.throws(function() {
30 vm.runInNewContext('(' + data.toString() + ')');
31 });
32 });
33});
34
35test('evil json', function (t) {
36 t.plan(2);
37 var b = browserify();
38 b.add(__dirname + '/json/evil.js');
39 b.bundle(function (err, src) {
40 if (err) t.fail(err);
41 var c = {
42 ex : function (obj) {
43 t.same(obj, { evil : '\u2028\u2029' });
44 }
45 };
46 vm.runInNewContext(src, c);
47 });
48});
49
50test('invalid json', function (t) {
51 var b = browserify();
52 t.plan(1);
53 b.add(__dirname + '/json/invalid.js');
54 b.bundle(function (err, src) {
55 t.ok(err);
56 });
57});