public void CreateDecorator_FileNotUsable_ReseedsFromEntropy() { var decorator = new SeedFileDecorator(_mockProvider, _mockFile); decorator.InitializePRNG(); _mockProvider.Received(1).InitializePRNG(); _mockFile.DidNotReceive().Read(Arg.Any <byte[]>(), Arg.Any <int>(), Arg.Any <int>()); }
public void CreateDecorator_FileHasEntropy_ReseedsFromFile() { _mockFile.Length.Returns(64); var decorator = new SeedFileDecorator(_mockProvider, _mockFile); decorator.InitializePRNG(); _mockProvider.DidNotReceive().InitializePRNG(); _mockFile.Received().Read(Arg.Any <byte[]>(), Arg.Any <int>(), Arg.Any <int>()); // Finally, assert that the new seed was generated and placed in the file _mockFile.Received().Seek(0, SeekOrigin.Begin); _mockFile.Received().Write(Arg.Any <byte[]>(), 0, 64); _mockFile.Received().Flush(); }
public void CreateDecorator_SeedsFromFile_ReturnsData() { _mockFile.Length.Returns(64); var generator = new FortunaGenerator(); var accumulator = new FortunaAccumulator(new EntropyEventScheduler(), Enumerable.Empty <IEntropyProvider>()); var decorator = new SeedFileDecorator(new PRNGFortunaProvider(generator, accumulator), _mockFile); decorator.InitializePRNG(); var data = new byte[1024]; decorator.GetBytes(data); Assert.NotEqual((IEnumerable <byte>)data, new byte[1024]); }
public async Task CreateDecoratorAsync_FileHasEntropy_ReseedsFromFile() { _mockFile.Length.Returns(64); var decorator = new SeedFileDecorator(_mockProvider, _mockFile); await decorator.InitializePRNGAsync(); await _mockProvider.DidNotReceive().InitializePRNGAsync(); await _mockFile.Received().ReadAsync(Arg.Any <byte[]>(), Arg.Any <int>(), Arg.Any <int>(), Arg.Any <CancellationToken>()); // Finally, assert that the new seed was generated and placed in the file _mockFile.Received().Seek(0, SeekOrigin.Begin); await _mockFile.Received().WriteAsync(Arg.Any <byte[]>(), 0, 64, Arg.Any <CancellationToken>()); await _mockFile.Received().FlushAsync(Arg.Any <CancellationToken>()); }