You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.5 KiB
						
					
					
				var test = require('tape') | 
						|
var crypto = require('../') | 
						|
var Buffer = require('safe-buffer').Buffer | 
						|
 | 
						|
test('get error message', function (t) { | 
						|
  try { | 
						|
    var b = crypto.randomFillSync(Buffer.alloc(10)) | 
						|
    t.ok(Buffer.isBuffer(b)) | 
						|
    t.end() | 
						|
  } catch (err) { | 
						|
    t.ok(/not supported/.test(err.message), '"not supported"  is in error message') | 
						|
    t.end() | 
						|
  } | 
						|
}) | 
						|
 | 
						|
test('randomfill', function (t) { | 
						|
  t.plan(5) | 
						|
  t.equal(crypto.randomFillSync(Buffer.alloc(10)).length, 10) | 
						|
  t.ok(Buffer.isBuffer(crypto.randomFillSync(Buffer.alloc(10)))) | 
						|
  crypto.randomFill(Buffer.alloc(10), function (ex, bytes) { | 
						|
    t.error(ex) | 
						|
    t.equal(bytes.length, 10) | 
						|
    t.ok(Buffer.isBuffer(bytes)) | 
						|
    t.end() | 
						|
  }) | 
						|
}) | 
						|
 | 
						|
test('seems random', function (t) { | 
						|
  var L = 1000 | 
						|
  var b = crypto.randomFillSync(Buffer.alloc(L)) | 
						|
 | 
						|
  var mean = [].reduce.call(b, function (a, b) { | 
						|
    return a + b | 
						|
  }, 0) / L | 
						|
 | 
						|
  // test that the random numbers are plausably random. | 
						|
  // Math.random() will pass this, but this will catch | 
						|
  // terrible mistakes such as this blunder: | 
						|
  // https://github.com/dominictarr/crypto-browserify/commit/3267955e1df7edd1680e52aeede9a89506ed2464#commitcomment-7916835 | 
						|
 | 
						|
  // this doesn't check that the bytes are in a random *order* | 
						|
  // but it's better than nothing. | 
						|
 | 
						|
  var expected = 256 / 2 | 
						|
  var smean = Math.sqrt(mean) | 
						|
 | 
						|
  // console.log doesn't work right on testling, *grumble grumble* | 
						|
  console.log(JSON.stringify([expected - smean, mean, expected + smean])) | 
						|
  t.ok(mean < expected + smean) | 
						|
  t.ok(mean > expected - smean) | 
						|
 | 
						|
  t.end() | 
						|
})
 | 
						|
 |