test/reader_test.rb in symmetric-encryption-3.7.2 vs test/reader_test.rb in symmetric-encryption-3.8.0

- old
+ new

@@ -2,21 +2,21 @@ require 'stringio' # Unit Test for SymmetricEncrypted::ReaderStream # class ReaderTest < Minitest::Test - context SymmetricEncryption::Reader do - setup do - @data = [ + describe SymmetricEncryption::Reader do + before do + @data = [ "Hello World\n", "Keep this secret\n", "And keep going even further and further..." ] - @data_str = @data.inject('') {|sum,str| sum << str} - @data_len = @data_str.length + @data_str = @data.inject('') { |sum, str| sum << str } + @data_len = @data_str.length # Use Cipher 0 since it does not always include a header - @cipher = SymmetricEncryption.cipher(0) + @cipher = SymmetricEncryption.cipher(0) @data_encrypted_without_header = @cipher.binary_encrypt(@data_str) @data_encrypted_with_header = SymmetricEncryption::Cipher.build_header( @cipher.version, compress = false, @@ -31,51 +31,51 @@ @cipher.binary_decrypt(@data_encrypted_with_header) assert @data_encrypted_without_header != @data_encrypted_with_header end [true, false].each do |header| - context header do - setup do + describe header do + before do @data_encrypted = header ? @data_encrypted_with_header : @data_encrypted_without_header end - should "#read()" do - stream = StringIO.new(@data_encrypted) + it "#read()" do + stream = StringIO.new(@data_encrypted) # Version 0 supplied if the file/stream does not have a header - decrypted = SymmetricEncryption::Reader.open(stream, version: 0) {|file| file.read} + decrypted = SymmetricEncryption::Reader.open(stream, version: 0) { |file| file.read } assert_equal @data_str, decrypted end - should "#read(size) followed by #read()" do - stream = StringIO.new(@data_encrypted) + it "#read(size) followed by #read()" do + stream = StringIO.new(@data_encrypted) # Version 0 supplied if the file/stream does not have a header decrypted = SymmetricEncryption::Reader.open(stream, version: 0) do |file| file.read(10) file.read end assert_equal @data_str[10..-1], decrypted end - should "#each_line" do - stream = StringIO.new(@data_encrypted) - i = 0 + it "#each_line" do + stream = StringIO.new(@data_encrypted) + i = 0 # Version 0 supplied if the file/stream does not have a header decrypted = SymmetricEncryption::Reader.open(stream, version: 0) do |file| file.each_line do |line| assert_equal @data[i], line i += 1 end end end - should "#read(size)" do - stream = StringIO.new(@data_encrypted) - i = 0 + it "#read(size)" do + stream = StringIO.new(@data_encrypted) + i = 0 # Version 0 supplied if the file/stream does not have a header decrypted = SymmetricEncryption::Reader.open(stream, version: 0) do |file| index = 0 - [0,10,5,5000].each do |size| + [0, 10, 5, 5000].each do |size| buf = file.read(size) if size == 0 assert_equal '', buf else assert_equal @data_str[index..index+size-1], buf @@ -104,110 +104,110 @@ {random_iv: true, compress: true}, ].each do |options| [:data, :empty, :blank].each do |usecase| - context "read from #{usecase} file with options: #{options.inspect}" do - setup do + describe "read from #{usecase} file with options: #{options.inspect}" do + before do case usecase when :data # Create encrypted file - @eof = false + @eof = false @filename = '_test' - @header = (options[:header] != false) + @header = (options[:header] != false) SymmetricEncryption::Writer.open(@filename, options) do |file| - @data.inject(0) {|sum,str| sum + file.write(str)} + @data.inject(0) { |sum, str| sum + file.write(str) } end when :empty @data_str = '' - @eof = true + @eof = true @filename = '_test_empty' - @header = (options[:header] != false) + @header = (options[:header] != false) SymmetricEncryption::Writer.open(@filename, options) do |file| # Leave data portion empty end when :blank @data_str = '' - @eof = true + @eof = true @filename = File.join(File.dirname(__FILE__), 'config/empty.csv') - @header = false + @header = false assert_equal 0, File.size(@filename) else raise "Unhandled usecase: #{usecase}" end @data_size = @data_str.length end - teardown do + after do File.delete(@filename) if File.exist?(@filename) && !@filename.end_with?('empty.csv') end - should ".empty?" do + it ".empty?" do assert_equal (@data_size==0), SymmetricEncryption::Reader.empty?(@filename) assert_raises Errno::ENOENT do SymmetricEncryption::Reader.empty?('missing_file') end end - should ".header_present?" do + it ".header_present?" do assert_equal @header, SymmetricEncryption::Reader.header_present?(@filename) assert_raises Errno::ENOENT do SymmetricEncryption::Reader.header_present?('missing_file') end end - should ".open return Zlib::GzipReader when compressed" do + it ".open return Zlib::GzipReader when compressed" do file = SymmetricEncryption::Reader.open(@filename) #assert_equal (@header && (options[:compress]||false)), file.is_a?(Zlib::GzipReader) file.close end - should "#read()" do - data = nil - eof = nil + it "#read()" do + data = nil + eof = nil result = SymmetricEncryption::Reader.open(@filename) do |file| - eof = file.eof? + eof = file.eof? data = file.read end assert_equal @eof, eof assert_equal @data_str, data assert_equal @data_str, result end - should "#read(size)" do + it "#read(size)" do file = SymmetricEncryption::Reader.open(@filename) - eof = file.eof? + eof = file.eof? data = file.read(4096) file.close assert_equal @eof, eof assert_equal (@data_size > 0 ? @data_str : nil), data end - should "#each_line" do + it "#each_line" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| i = 0 file.each_line do |line| assert_equal @data[i], line i += 1 end end end - should "#rewind" do + it "#rewind" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| file.read file.rewind file.read end assert_equal @data_str, decrypted end - should "#gets(nil,size)" do + it "#gets(nil,size)" do file = SymmetricEncryption::Reader.open(@filename) - eof = file.eof? - data = file.gets(nil,4096) + eof = file.eof? + data = file.gets(nil, 4096) file.close assert_equal @eof, eof if @data_size > 0 assert_equal @data_str, data @@ -220,98 +220,98 @@ assert_equal nil, data end end end - should "#gets(delim)" do + it "#gets(delim)" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| i = 0 while line = file.gets("\n") assert_equal @data[i], line i += 1 end assert_equal (@data_size > 0 ? 3 : 0), i end end - should "#gets(delim,size)" do + it "#gets(delim,size)" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| i = 0 - while line = file.gets("\n",128) + while line = file.gets("\n", 128) i += 1 end assert_equal (@data_size > 0 ? 3 : 0), i end end end end end - context "reading from files with previous keys" do - setup do + describe "reading from files with previous keys" do + before do @filename = '_test' # Create encrypted file with old encryption key SymmetricEncryption::Writer.open(@filename, version: 0) do |file| - @data.inject(0) {|sum,str| sum + file.write(str)} + @data.inject(0) { |sum, str| sum + file.write(str) } end end - teardown do + after do File.delete(@filename) if File.exist?(@filename) end - should "decrypt from file in a single read" do - decrypted = SymmetricEncryption::Reader.open(@filename) {|file| file.read} + it "decrypt from file in a single read" do + decrypted = SymmetricEncryption::Reader.open(@filename) { |file| file.read } assert_equal @data_str, decrypted end - should "decrypt from file a line at a time" do + it "decrypt from file a line at a time" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| i = 0 file.each_line do |line| assert_equal @data[i], line i += 1 end end end - should "support rewind" do + it "support rewind" do decrypted = SymmetricEncryption::Reader.open(@filename) do |file| file.read file.rewind file.read end assert_equal @data_str, decrypted end end - context "reading from files with previous keys without a header" do - setup do + describe "reading from files with previous keys without a header" do + before do @filename = '_test' # Create encrypted file with old encryption key SymmetricEncryption::Writer.open(@filename, version: 0, header: false, random_key: false) do |file| - @data.inject(0) {|sum,str| sum + file.write(str)} + @data.inject(0) { |sum, str| sum + file.write(str) } end end - teardown do + after do begin File.delete(@filename) if File.exist?(@filename) rescue Errno::EACCES # Required for Windows end end - should "decrypt from file in a single read" do - decrypted = SymmetricEncryption::Reader.open(@filename, version: 0) {|file| file.read} + it "decrypt from file in a single read" do + decrypted = SymmetricEncryption::Reader.open(@filename, version: 0) { |file| file.read } assert_equal @data_str, decrypted end - should "decrypt from file in a single read with different version" do + it "decrypt from file in a single read with different version" do # Should fail since file was encrypted using version 0 key assert_raises OpenSSL::Cipher::CipherError do - SymmetricEncryption::Reader.open(@filename, version: 2) {|file| file.read} + SymmetricEncryption::Reader.open(@filename, version: 2) { |file| file.read } end end end end