spec/rapid-vaults/encrypt_spec.rb in rapid-vaults-1.1.2 vs spec/rapid-vaults/encrypt_spec.rb in rapid-vaults-1.2.0

- old
+ new

@@ -1,34 +1,46 @@ require_relative '../spec_helper' require_relative '../../lib/rapid-vaults/encrypt' describe Encrypt do context '.openssl' do + require 'openssl' + require 'securerandom' + cipher = OpenSSL::Cipher.new('aes-256-gcm').encrypt + key = cipher.random_key + nonce = cipher.random_iv + after(:all) do %w[tag.txt encrypted.txt].each { |file| File.delete(file) } end it 'outputs an encrypted file with the key and nonce from the cli' do - Encrypt.openssl(ui: :cli, file: "foo: bar\n", key: '���b+����R�v�Í%("����=8o/���', nonce: 'Ëá!í^Uë^EÜ<83>oã^M') + Encrypt.openssl(ui: :cli, file: "foo: bar\n", key: key, nonce: nonce) expect(File.file?('tag.txt')).to be true expect(File.file?('encrypted.txt')).to be true end it 'outputs an encrypted file with the key, nonce, and password from the cli' do - Encrypt.openssl(ui: :cli, file: "foo: bar\n", key: '���b+����R�v�Í%("����=8o/���', nonce: 'Ëá!í^Uë^EÜ<83>oã^M', pw: 'password') + Encrypt.openssl(ui: :cli, file: "foo: bar\n", key: key, nonce: nonce, pw: 'password') expect(File.file?('tag.txt')).to be true expect(File.file?('encrypted.txt')).to be true end it 'outputs an array of encrypted content and tag with the key and nonce from the api' do - encrypt = Encrypt.openssl(ui: :api, file: "foo: bar\n", key: '���b+����R�v�Í%("����=8o/���', nonce: 'Ëá!í^Uë^EÜ<83>oã^M') + encrypt = Encrypt.openssl(ui: :api, file: "foo: bar\n", key: key, nonce: nonce) expect(encrypt).to be_a(Array) expect(encrypt[0]).to be_a(String) expect(encrypt[1]).to be_a(String) expect(encrypt.length).to eq(2) end + it 'raises an error for an invalid key size' do + expect { Encrypt.openssl(key: SecureRandom.random_bytes(64).strip) }.to raise_error('The key is not a valid 32 byte key.') + end + it 'raises an error for an invalid nonce size' do + expect { Encrypt.openssl(key: key, nonce: SecureRandom.random_bytes(24).strip) }.to raise_error('The nonce is not a valid 12 byte nonce.') + end end # travis ci cannot support non-interactive gpg encryption - unless File.directory?('/home/travis') + unless ENV['TRAVIS'] == 'true' context '.gpgme' do it 'outputs an encrypted file with the key from the cli' do Encrypt.gpgme(ui: :cli, file: "foo: bar\n", key: '', pw: 'foo') expect(File.file?('encrypted.txt')).to be true end