summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/truncate/test.js
blob: b6fcbf4e4d5ede39c3a5951d3ee2cd698a942bac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var truncate = require('./truncate');

exports['should truncate text with given length'] = function (t) {
  var input, expect, actual;

  input = null;
  actual = truncate(input, 3);
  expect = '';
  t.strictEqual(expect, actual);

  input = '';
  actual = truncate(input, 3);
  expect = '';
  t.strictEqual(expect, actual);

  input = 'hello';
  actual = truncate(input, 3);
  expect = 'hel…';
  t.strictEqual(expect, actual);

  input = 'I am not sure what I am talking about';
  actual = truncate(input, 10);
  expect = 'I am not s…';
  t.strictEqual(expect, actual);
  t.done();
};

exports['should keep url safe'] = function (t) {
  var input, expect, actual;
  input = 'Hey http://distilleryimage8.s3.amazonaws.com/719bf2329ddd11e28c3122000aa80097_7.jpg';
  actual = truncate(input, 4);
  expect = 'Hey …';
  t.strictEqual(expect, actual);

  input = 'Hey http://distilleryimage8.s3.amazonaws.com/719bf2329ddd11e28c3122000aa80097_7.jpg';
  actual = truncate(input, 5);
  expect = 'Hey http://distilleryimage8.s3.amazonaws.com/719bf2329ddd11e28c3122000aa80097_7.jpg';
  t.strictEqual(expect, actual);

  input = 'http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product/ http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product2/';
  actual = truncate(input, 96);
  expect = 'http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product/…';
  t.strictEqual(expect, actual);

  input = 'http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product/ http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product2/';
  actual = truncate(input, 100);
  expect = 'http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product/ http://successfulsoftware.net/2013/03/19/the-brutal-truth-about-marketing-your-software-product2/';
  t.strictEqual(expect, actual);

  input = 'Hey http://distilleryimage8.s3.amazonaws.com/719bf2329ddd11e28c3122000aa80097_7.jpg';
  actual = truncate(input, 5);
  expect = 'Hey http://distilleryimage8.s3.amazonaws.com/719bf2329ddd11e28c3122000aa80097_7.jpg';
  t.strictEqual(expect, actual);

  input = 'Hey http://hehe.com plop http://plop.com';
  actual = truncate(input, 6);
  expect = 'Hey http://hehe.com…';
  t.strictEqual(expect, actual);

  input = 'Hey http://hehe.com plop http://plop.com';
  actual = truncate(input, 22);
  expect = 'Hey http://hehe.com pl…';
  t.strictEqual(expect, actual);

  input = 'Hey http://hehe.com plop http://plop.com';
  actual = truncate(input, 25);
  expect = 'Hey http://hehe.com plop …';
  t.strictEqual(expect, actual);

  input = 'Hey http://hehe.com plop http://plop.com';
  actual = truncate(input, 26);
  t.strictEqual(input, actual);

  t.done();
};

exports['Not vulnerable to REDOS'] = function (t) {

  var prefix, pump, suffix, nPumps, attackString; // for evil input
  var input, actual, expect; // input to truncate()
  var before, elapsed; // timing

  /* URL_REGEX */
  prefix = '-@w--w--';
  pump = 'ww--';
  suffix = '';
  nPumps = 20000;

  attackString = prefix;
  for (var i = 0; i < nPumps; i++) {
    attackString += pump;
  }
  attackString += suffix;

  before = process.hrtime();
  input = 'Hey ' + attackString;
  actual = truncate(input, 4);
  expect = 'Hey …';
  t.strictEqual(expect, actual);
  elapsed = process.hrtime(before);

  t.equals(elapsed[0], 0); // Should take < 1 second
  t.done();
};