UNPKG

1.83 kBJavaScriptView Raw
1'use strict';
2
3var assert = require('assert');
4var crypto = require('crypto');
5var hash = require('../index');
6var validSha1 = /^[0-9a-f]{40}$/i;
7var validBase64 = /^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/==]{4})$/;
8
9describe('hash() without crypto.getHashes', function() {
10 var getHashes_;
11 beforeEach(function() {
12 getHashes_ = crypto.getHashes;
13 delete crypto.getHashes;
14 });
15
16 afterEach(function() {
17 crypto.getHashes = getHashes_;
18 });
19
20 it('should work fine for SHA1', function() {
21 assert.ok(validSha1.test(hash(42)), 'hash some value');
22 assert.ok(validSha1.test(hash(NaN)), 'hash some value');
23 });
24});
25
26describe('hash() without Duplex streams', function() {
27 var createHash_;
28 beforeEach(function() {
29 createHash_ = crypto.createHash;
30 crypto.createHash = function(algorithm) {
31 var strm = createHash_(algorithm);
32
33 return {
34 update: strm.write.bind(strm),
35 digest: strm.digest.bind(strm)
36 };
37 };
38 });
39
40 afterEach(function() {
41 crypto.createHash = createHash_;
42 });
43
44 it('should work fine for SHA1 without .write()/.read()', function() {
45 assert.ok(validSha1.test(hash(42)), 'hash some value');
46 assert.ok(validSha1.test(hash(NaN)), 'hash some value');
47 });
48
49 it('should work fine for SHA1 without .write()/.read() with base64', function() {
50 assert.ok(validBase64.test(hash(42, {encoding: 'base64'})), 'hash some value');
51 assert.ok(validBase64.test(hash(NaN, {encoding: 'base64'})), 'hash some value');
52 });
53
54 if (typeof Buffer !== 'undefined') {
55 it('should work fine for SHA1 without .write()/.read() with buffer', function() {
56 assert.ok(Buffer.isBuffer(hash(42, {encoding: 'buffer'})), 'hash some value');
57 assert.ok(Buffer.isBuffer(hash(NaN, {encoding: 'buffer'})), 'hash some value');
58 });
59 }
60});