test.js
1 var md5 = require('./md5.js'); 2 var assert = require('assert'); 3 4 describe('md5', function () { 5 6 it('should throw an error for an undefined value', function() { 7 assert.throws(function() { 8 md5(undefined); 9 }); 10 }); 11 12 it('should allow the hashing of the string `undefined`', function() { 13 assert.equal('5e543256c480ac577d30f76f9120eb74', md5('undefined')); 14 }); 15 16 it('should throw an error for `null`', function() { 17 assert.throws(function() { 18 md5(null); 19 }); 20 }); 21 22 it('should return the expected MD5 hash for "message"', function() { 23 assert.equal('78e731027d8fd50ed642340b7c9a63b3', md5('message')); 24 }); 25 26 it('should not return the same hash for random numbers twice', function() { 27 var msg1 = Math.floor((Math.random() * 100000) + 1) + (new Date).getTime(); 28 var msg2 = Math.floor((Math.random() * 100000) + 1) + (new Date).getTime(); 29 30 if (msg1 !== msg2) { 31 assert.notEqual(md5(msg1), md5(msg2)); 32 } else { 33 assert.equal(md5(msg1), md5(msg1)); 34 } 35 }); 36 37 it('should support Node.js Buffers', function() { 38 var buffer = new Buffer('message áßäöü', 'utf8'); 39 40 assert.equal(md5(buffer), md5('message áßäöü')); 41 }) 42 43 it('should be able to use a binary encoded string', function() { 44 var hash1 = md5('abc', { asString: true }); 45 var hash2 = md5(hash1 + 'a', { asString: true, encoding : 'binary' }); 46 var hash3 = md5(hash1 + 'a', { encoding : 'binary' }); 47 assert.equal(hash3, '131f0ac52813044f5110e4aec638c169'); 48 }); 49 50 it('should support Uint8Array', function() { 51 // Polyfills 52 if (!Array.from) { 53 Array.from = function(src, fn) { 54 var result = new Array(src.length); 55 for (var i = 0; i < src.length; ++i) 56 result[i] = fn(src[i]); 57 return result; 58 }; 59 } 60 if (!Uint8Array.from) { 61 Uint8Array.from = function(src) { 62 var result = new Uint8Array(src.length); 63 for (var i = 0; i < src.length; ++i) 64 result[i] = src[i]; 65 return result; 66 }; 67 } 68 69 var message = 'foobarbaz'; 70 var u8arr = Uint8Array.from( 71 Array.from(message, function(c) { return c.charCodeAt(0); })); 72 var u8aHash = md5(u8arr); 73 assert.equal(u8aHash, md5(message)); 74 }); 75 });