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"' )); });