spec/cipher/file_spec.rb in heirloom-0.9.0 vs spec/cipher/file_spec.rb in heirloom-0.10.0
- old
+ new
@@ -1,30 +1,44 @@
require 'spec_helper'
describe Heirloom do
before do
@logger_mock = mock 'logger', :info => true
- @logger_mock.stub :info => true
+ @logger_mock.stub :info => true,
+ :debug => true
@config_mock = mock 'config'
@config_mock.stub :logger => @logger_mock
@tempfile_stub = stub 'tempfile', :path => '/path_to_encrypted_archive',
:close! => true
Tempfile.stub :new => @tempfile_stub
- @aes_mock = mock 'aes'
- @aes_mock.stub :random_iv => 'firstsixteenchar'
- OpenSSL::Cipher::AES256.should_receive(:new).
- with(:CBC).and_return @aes_mock
@file = Heirloom::Cipher::File.new :config => @config_mock
end
it "should encrypt the given file" do
- @aes_mock.should_receive(:encrypt)
- @aes_mock.should_receive(:iv=).with 'firstsixteenchar'
- @aes_mock.should_receive(:key=).with Digest::SHA256.hexdigest 'mysecret'
- ::File.should_receive(:open)
+ @file.should_receive(:which).with('gpg').and_return true
+ command = 'gpg --batch --yes -c --cipher-algo AES256 --passphrase mysecret --output /path_to_encrypted_archive /file 2>&1'
+ @file.should_receive(:`).with command
+ $?.stub :success? => true
FileUtils.should_receive(:mv).
with('/path_to_encrypted_archive', '/file')
@file.encrypt_file(:file => '/file',
:secret => 'mysecret').should be_true
+ end
+
+ it "should return false if gpg is not in the path" do
+ @file.should_receive(:which).with('gpg').and_return false
+ @logger_mock.should_receive(:error)
+ @file.encrypt_file(:file => '/file',
+ :secret => 'mysecret').should be_false
+ end
+
+ it "should return false if gpg returns non zero code" do
+ @file.should_receive(:which).with('gpg').and_return true
+ @logger_mock.should_receive(:error)
+ command = 'gpg --batch --yes -c --cipher-algo AES256 --passphrase mysecret --output /path_to_encrypted_archive /file 2>&1'
+ @file.should_receive(:`).with command
+ $?.stub :success? => false
+ @file.encrypt_file(:file => '/file',
+ :secret => 'mysecret').should be_false
end
end