all files / tests/ validate.js

100% Statements 1/1
100% Branches 0/0
100% Functions 3/3
100% Lines 1/1
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 105 106 107                                                                                                                                                                                                                   
import test from 'ava';
import generate from '../src/lib/generate';
 
function testFailure(t, masterPassword, url, options, callback) {
  t.throws(() => {
    generate(masterPassword, url, options, callback);
  });
}
 
const testData = [
  [
    'test',          // master password
    'example.com',   // url
    {
      method: 'foo', // options (default = {})
    },
                     // callback (default = function() {})
  ],
  [
    'test',
    'example.com',
    {
      length: -1,
    },
  ],
  [
    'test',
    'example.com',
    {
      length: 0,
    },
  ],
  [
    'test',
    'example.com',
    {
      length: '12',
    },
  ],
  [
    'test',
    'example.com',
    {
      length: 3,
    },
  ],
  [
    'test',
    'example.com',
    {
      length: 28,
    },
  ],
  [
    'test',
    'example.com', {
      secret: false,
    },
  ],
  [
    'test',
    'example.com', {
      secret: [],
    },
  ],
  [
    'test',
    '',
  ],
  [
    'test',
    '/foo/',
  ],
  [
    'test',
    false,
  ],
  [
    '',
    'example.com', {
      secret: '',
    },
  ],
  [
    false,
    'example.com',
  ],
  [
    null,
    'example.com',
  ],
  [
    undefined,
    'example.com',
  ],
  [
    'test',
    'example.com',
    {},
    {},
  ],
];
 
testData.forEach((args) => {
  test('validation', testFailure, ...args);
});