From d868ff76e69e0ed812145016c3125e1b162ab649 Mon Sep 17 00:00:00 2001 From: Bruno Saboia Date: Sun, 30 Jan 2022 15:30:20 -0300 Subject: [PATCH] Improve tests This PR adds some necessary tests, fixes the naming on describe (everything was set to RandomKeyGenerator, perhaps a copy/paste exception) and fixes the consonant/vowel alternation test, since it was failing if the keyspace started with a vowel. --- lib/key_generators/keygenerator.js | 5 +++++ test/key_generators/dictionary_spec.js | 7 ++++--- test/key_generators/phonetic_spec.js | 18 +++++++++++++----- test/key_generators/random_spec.js | 11 ++++++++--- 4 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 lib/key_generators/keygenerator.js diff --git a/lib/key_generators/keygenerator.js b/lib/key_generators/keygenerator.js new file mode 100644 index 0000000..0da267e --- /dev/null +++ b/lib/key_generators/keygenerator.js @@ -0,0 +1,5 @@ +module.exports = class KeyGenerator { + constructor(options) { + this.reservedKeys = options.reservedKeys || ['healthz']; + } +} \ No newline at end of file diff --git a/test/key_generators/dictionary_spec.js b/test/key_generators/dictionary_spec.js index 72718c7..57e5eb9 100644 --- a/test/key_generators/dictionary_spec.js +++ b/test/key_generators/dictionary_spec.js @@ -6,8 +6,8 @@ const fs = require('fs'); const Generator = require('../../lib/key_generators/dictionary'); -describe('RandomKeyGenerator', function() { - describe('randomKey', function() { +describe('DictionaryGenerator', function() { + describe('options', function() { it('should throw an error if given no options', () => { assert.throws(() => { new Generator(); @@ -19,7 +19,8 @@ describe('RandomKeyGenerator', function() { new Generator({}); }, Error); }); - + }); + describe('generation', function() { it('should return a key of the proper number of words from the given dictionary', () => { const path = '/tmp/haste-server-test-dictionary'; const words = ['cat']; diff --git a/test/key_generators/phonetic_spec.js b/test/key_generators/phonetic_spec.js index 14ad9e8..35a7901 100644 --- a/test/key_generators/phonetic_spec.js +++ b/test/key_generators/phonetic_spec.js @@ -7,8 +7,8 @@ const Generator = require('../../lib/key_generators/phonetic'); const vowels = 'aeiou'; const consonants = 'bcdfghjklmnpqrstvwxyz'; -describe('RandomKeyGenerator', () => { - describe('randomKey', () => { +describe('PhoneticKeyGenerator', () => { + describe('generation', () => { it('should return a key of the proper length', () => { const gen = new Generator(); assert.equal(6, gen.createKey(6).length); @@ -19,9 +19,17 @@ describe('RandomKeyGenerator', () => { const key = gen.createKey(3); - assert.ok(consonants.includes(key[0])); - assert.ok(consonants.includes(key[2])); - assert.ok(vowels.includes(key[1])); + // if it starts with a consonant, we expect cvc + // if it starts with a vowel, we expect vcv + if(consonants.includes(key[0])) { + assert.ok(consonants.includes(key[0])); + assert.ok(consonants.includes(key[2])); + assert.ok(vowels.includes(key[1])); + } else { + assert.ok(vowels.includes(key[0])); + assert.ok(vowels.includes(key[2])); + assert.ok(consonants.includes(key[1])); + } }); }); }); diff --git a/test/key_generators/random_spec.js b/test/key_generators/random_spec.js index 537a809..ecd66c0 100644 --- a/test/key_generators/random_spec.js +++ b/test/key_generators/random_spec.js @@ -5,15 +5,20 @@ const assert = require('assert'); const Generator = require('../../lib/key_generators/random'); describe('RandomKeyGenerator', () => { - describe('randomKey', () => { + describe('generation', () => { it('should return a key of the proper length', () => { const gen = new Generator(); - assert.equal(6, gen.createKey(6).length); + assert.equal(gen.createKey(6).length, 6); }); it('should use a key from the given keyset if given', () => { const gen = new Generator({keyspace: 'A'}); - assert.equal('AAAAAA', gen.createKey(6)); + assert.equal(gen.createKey(6), 'AAAAAA'); + }); + + it('should not use a key from the given keyset if not given', () => { + const gen = new Generator({keyspace: 'A'}); + assert.ok(!gen.createKey(6).includes('B')); }); }); });