const tag = require('..').templateTags[0]; function assertTemplate(args, expected) { return async function() { const result = await tag.run(null, ...args); expect(result).toBe(expected); }; } function assertTemplateFails(args, expected) { return async function() { try { await tag.run(null, ...args); fail(`Render should have thrown ${expected}`); } catch (err) { expect(err.message).toContain(expected); } }; } describe('Plugin', () => { // Algorithms it( 'hashes sha1', assertTemplate(['sha1', 'hex', 'foo'], '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33'), ); it( 'hashes sha256', assertTemplate( ['sha256', 'hex', 'foo'], '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae', ), ); it('hashes md5', assertTemplate(['md5', 'hex', 'foo'], 'acbd18db4cc2f85cedef654fccc4a4d8')); it( 'fails to hash invalid algorithm', assertTemplateFails(['bad', 'hex', 'foo'], 'Digest method not supported'), ); // Digests it('hashes to latin1', assertTemplate(['md5', 'latin1', 'foo'], '¬½ÛLÂø\\íïeOÌĤØ')); it('hashes to hex', assertTemplate(['md5', 'hex', 'foo'], 'acbd18db4cc2f85cedef654fccc4a4d8')); it('hashes to base64', assertTemplate(['md5', 'base64', 'foo'], 'rL0Y20zC+Fzt72VPzMSk2A==')); it( 'fails to hash to invalid', assertTemplateFails( ['md5', 'bad', 'foo'], 'Invalid encoding bad. Choices are hex, latin1, base64', ), ); // Values it('hashes empty string', assertTemplate(['md5', 'hex', ''], 'd41d8cd98f00b204e9800998ecf8427e')); it('hashes no string', assertTemplate(['md5', 'hex'], 'd41d8cd98f00b204e9800998ecf8427e')); it( 'fails to hash non string', assertTemplateFails(['md5', 'hex', true], 'Cannot hash value of type "boolean"'), ); });