euromail 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/euromail.rb +5 -0
 - data/lib/euromail/sftp_development.rb +26 -0
 - data/lib/euromail/sftp_service.rb +58 -0
 - data/lib/euromail/sftp_test.rb +29 -0
 - data/spec/euromail/sftp_development_spec.rb +50 -0
 - data/spec/euromail/sftp_service_spec.rb +91 -0
 - data/spec/euromail/sftp_test_spec.rb +45 -0
 - data/spec/sftp_mock.rb +20 -0
 - data/spec/spec_helper.rb +12 -0
 - metadata +53 -0
 
    
        data/lib/euromail.rb
    ADDED
    
    
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Euromail
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              module SFTPDevelopment
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def upload! pdf_data, identifier
         
     | 
| 
      
 6 
     | 
    
         
            +
                  connect do 
         
     | 
| 
      
 7 
     | 
    
         
            +
                    $stdout.puts "Uploaded #{filename(identifier)}"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def remove! identifier
         
     | 
| 
      
 12 
     | 
    
         
            +
                  connect do
         
     | 
| 
      
 13 
     | 
    
         
            +
                    $stdout.puts "Removed #{filename(identifier)}"
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def connect &block
         
     | 
| 
      
 18 
     | 
    
         
            +
                  $stdout.puts "Connecting to #{host}"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  block.call if block
         
     | 
| 
      
 20 
     | 
    
         
            +
                  $stdout.puts "Connection to #{host} closed"
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,58 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'net/sftp'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Euromail
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              class SFTPService
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                attr_reader :application, :customer, :host, :username, :password
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize application, customer, host, username, password
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @application = application
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @customer = customer
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @host = host
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @username = username
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @password = password
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def test_mode!
         
     | 
| 
      
 18 
     | 
    
         
            +
                  self.extend(Euromail::SFTPTest)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def development_mode!
         
     | 
| 
      
 22 
     | 
    
         
            +
                  self.extend(Euromail::SFTPDevelopment)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def upload! pdf_data, identifier
         
     | 
| 
      
 26 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 27 
     | 
    
         
            +
                    connect do |sftp|
         
     | 
| 
      
 28 
     | 
    
         
            +
                      sftp.file.open( filename(identifier) , "w") do |f|
         
     | 
| 
      
 29 
     | 
    
         
            +
                        f.write pdf_data
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  rescue => e
         
     | 
| 
      
 33 
     | 
    
         
            +
                    remove!(identifier)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    raise e
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                # Attempt to remove the file for the given identifier. 
         
     | 
| 
      
 39 
     | 
    
         
            +
                def remove! identifier
         
     | 
| 
      
 40 
     | 
    
         
            +
                  connect do |sftp|
         
     | 
| 
      
 41 
     | 
    
         
            +
                    sftp.remove!( filename(identifier) )
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
                def connect &block
         
     | 
| 
      
 46 
     | 
    
         
            +
                  Net::SFTP.start(host, username, :password => password, &block)
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                # Generate a filename based on the application, customer and some unique identifier.
         
     | 
| 
      
 50 
     | 
    
         
            +
                # The identifier is not allowed to be blank since this risks previous files from being deleted.
         
     | 
| 
      
 51 
     | 
    
         
            +
                def filename identifier
         
     | 
| 
      
 52 
     | 
    
         
            +
                  raise "An identifier is required" if identifier.to_s == ''
         
     | 
| 
      
 53 
     | 
    
         
            +
                  "./#{application}_#{customer}_#{identifier}.pdf"
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Euromail
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SFTPTest
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                attr_writer :uploaded_files, :removed_files
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def uploaded_files
         
     | 
| 
      
 7 
     | 
    
         
            +
                  return @uploaded_files || []
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def removed_files
         
     | 
| 
      
 11 
     | 
    
         
            +
                  return @removed_files || []
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def upload! pdf_data, identifier
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @uploaded_files = [] if @uploaded_files.nil?
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @uploaded_files << filename(identifier)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def remove! identifier
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @removed_files = [] if @removed_files.nil?
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @removed_files << filename(identifier)
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def connect &block
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Euromail::SFTPService do
         
     | 
| 
      
 4 
     | 
    
         
            +
              include SFTPMock
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                mock_sftp
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              let(:service) do
         
     | 
| 
      
 11 
     | 
    
         
            +
                Euromail::SFTPService.new('moves', 'nedap', 'some-cheapass-domain.com', "stefan", "super_secret")
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              context "#development_mode!" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  service.development_mode!
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                describe "#upload!" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  it "only logs uploads" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    Net::SFTP.should_not receive(:start)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connecting to some-cheapass-domain.com")
         
     | 
| 
      
 23 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Uploaded ./moves_nedap_3.pdf")
         
     | 
| 
      
 24 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connection to some-cheapass-domain.com closed")
         
     | 
| 
      
 25 
     | 
    
         
            +
                    service.upload!('come-client-code', '3')
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                describe "remove!" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  it "only logs deletes" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                    Net::SFTP.should_not receive(:start)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connecting to some-cheapass-domain.com")
         
     | 
| 
      
 33 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Removed ./moves_nedap_3.pdf")
         
     | 
| 
      
 34 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connection to some-cheapass-domain.com closed")
         
     | 
| 
      
 35 
     | 
    
         
            +
                    service.remove!('3')
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                describe "connect" do
         
     | 
| 
      
 40 
     | 
    
         
            +
                  it "only logs the connection" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                    Net::SFTP.should_not receive(:start)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connecting to some-cheapass-domain.com")
         
     | 
| 
      
 43 
     | 
    
         
            +
                    $stdout.should receive(:puts).with("Connection to some-cheapass-domain.com closed")
         
     | 
| 
      
 44 
     | 
    
         
            +
                    service.connect
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,91 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Euromail::SFTPService do
         
     | 
| 
      
 4 
     | 
    
         
            +
              include SFTPMock
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                mock_sftp
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              let(:service) do
         
     | 
| 
      
 11 
     | 
    
         
            +
                Euromail::SFTPService.new('moves', 'nedap', 'some-cheapass-domain.com', "stefan", "super_secret")
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              context "when creating" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                it "has an application, customer, host, username and password" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  service.application.should eql('moves')
         
     | 
| 
      
 17 
     | 
    
         
            +
                  service.customer.should eql('nedap')
         
     | 
| 
      
 18 
     | 
    
         
            +
                  service.host.should eql('some-cheapass-domain.com')
         
     | 
| 
      
 19 
     | 
    
         
            +
                  service.username.should eql('stefan')
         
     | 
| 
      
 20 
     | 
    
         
            +
                  service.password.should eql('super_secret')
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              describe "#connect" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                it "connects to euromail using the given username and pass" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Net::SFTP.should receive(:start).with('some-cheapass-domain.com', 'stefan', :password => 'super_secret')
         
     | 
| 
      
 27 
     | 
    
         
            +
                  service.connect {}
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              describe "#upload!" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                it "use the generated filename" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @net_sftp_session.file.should receive(:open).with( service.filename('1'), 'w')
         
     | 
| 
      
 34 
     | 
    
         
            +
                  service.upload!('some-client-code', '1')
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                it "uploads pdf data" do
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @file_hander.should receive(:write).with('some-client-code')
         
     | 
| 
      
 39 
     | 
    
         
            +
                  service.upload!('some-client-code', '1')
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                it "does not remove the remote file after an upload succeeds" do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  service.should_not receive(:remove!).with('1')
         
     | 
| 
      
 44 
     | 
    
         
            +
                  service.upload!('some-client-code', '1')
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                it "tries to remove the remote file after an upload fails" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @file_hander.stub(:write).and_raise("Connection dropped")
         
     | 
| 
      
 49 
     | 
    
         
            +
                  service.should receive(:remove!).with('1')
         
     | 
| 
      
 50 
     | 
    
         
            +
                  expect{ service.upload!('some-client-code', '1') }.to raise_error
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                it "returns true if it succeeds" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                  expect{ service.upload!('some-client-code', '2') }.to_not raise_error
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                it "return false if some error occurs" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  @net_sftp_session.stub_chain(:file, :open).and_raise("Some error")
         
     | 
| 
      
 59 
     | 
    
         
            +
                  expect{ service.upload!('some-client-code', '2') }.to raise_error
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              describe "#remove!" do
         
     | 
| 
      
 64 
     | 
    
         
            +
                it "removes the file from the sftp server" do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @net_sftp_session.should receive(:remove!).with( service.filename('2') )
         
     | 
| 
      
 66 
     | 
    
         
            +
                  @net_sftp_session.file.should_not receive(:open)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  service.remove!('2')
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                it "returns true if it succeeds" do
         
     | 
| 
      
 71 
     | 
    
         
            +
                  expect{ service.remove!('2') }.to_not raise_error
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                it "return false if some error occurs" do
         
     | 
| 
      
 75 
     | 
    
         
            +
                  @net_sftp_session.stub(:remove!).and_raise("Some error")
         
     | 
| 
      
 76 
     | 
    
         
            +
                  expect{ service.remove!('2') }.to raise_error
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              describe "#filename" do 
         
     | 
| 
      
 81 
     | 
    
         
            +
                it "generates a string with application, customer and the given identifier" do
         
     | 
| 
      
 82 
     | 
    
         
            +
                  service.filename('123').should eql('./moves_nedap_123.pdf')
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                it "requires a non empty identifier" do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  expect{ service.filename('') }.to raise_error
         
     | 
| 
      
 87 
     | 
    
         
            +
                  expect{ service.filename(nil) }.to raise_error
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Euromail::SFTPService do
         
     | 
| 
      
 4 
     | 
    
         
            +
              include SFTPMock
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                mock_sftp
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              let(:service) do
         
     | 
| 
      
 11 
     | 
    
         
            +
                Euromail::SFTPService.new('moves', 'nedap', 'some-cheapass-domain.com', "stefan", "super_secret")
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              context "#test_mode!" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  service.test_mode!
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                describe "#upload!" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  it "stores uploaded filenames" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    service.uploaded_files.should == []
         
     | 
| 
      
 22 
     | 
    
         
            +
                    service.upload!('some-client-code', '1')
         
     | 
| 
      
 23 
     | 
    
         
            +
                    service.uploaded_files.should == [service.filename('1')]
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                describe "remove!" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  it "stores deleted filenames" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    service.removed_files.should == []
         
     | 
| 
      
 30 
     | 
    
         
            +
                    service.remove!('2')
         
     | 
| 
      
 31 
     | 
    
         
            +
                    service.removed_files.should == [service.filename('2')]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                describe "connect" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  it "does nothing" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                    Net::SFTP.should_not receive(:start)
         
     | 
| 
      
 38 
     | 
    
         
            +
                    $stdout.should_not receive(:puts)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    service.connect
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/sftp_mock.rb
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module SFTPMock
         
     | 
| 
      
 2 
     | 
    
         
            +
              def mock_sftp
         
     | 
| 
      
 3 
     | 
    
         
            +
                @net_sftp_session = double("Net::SFTP::Session")
         
     | 
| 
      
 4 
     | 
    
         
            +
                @file_hander = double("SomeFileHandler")
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                @file_hander.stub(:write) do |data|
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                @net_sftp_session.stub(:remove!) do |filename|
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                @net_sftp_session.stub_chain(:file, :open) do |filename, method, &block|
         
     | 
| 
      
 13 
     | 
    
         
            +
                  block.call(@file_hander) if block
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                Net::SFTP.stub(:start) do |host, username, password_hash, &block|
         
     | 
| 
      
 17 
     | 
    
         
            +
                  block.call(@net_sftp_session) if block
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: euromail
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 6 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Stefan Teijgeler
         
     | 
| 
      
 9 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 10 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 11 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-07-26 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 14 
     | 
    
         
            +
            description: Euromail SFTP service
         
     | 
| 
      
 15 
     | 
    
         
            +
            email: stefan.teijgeler@nedap.com
         
     | 
| 
      
 16 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 17 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 18 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 19 
     | 
    
         
            +
            files:
         
     | 
| 
      
 20 
     | 
    
         
            +
            - lib/euromail/sftp_development.rb
         
     | 
| 
      
 21 
     | 
    
         
            +
            - lib/euromail/sftp_service.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
            - lib/euromail/sftp_test.rb
         
     | 
| 
      
 23 
     | 
    
         
            +
            - lib/euromail.rb
         
     | 
| 
      
 24 
     | 
    
         
            +
            - spec/euromail/sftp_development_spec.rb
         
     | 
| 
      
 25 
     | 
    
         
            +
            - spec/euromail/sftp_service_spec.rb
         
     | 
| 
      
 26 
     | 
    
         
            +
            - spec/euromail/sftp_test_spec.rb
         
     | 
| 
      
 27 
     | 
    
         
            +
            - spec/sftp_mock.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 29 
     | 
    
         
            +
            homepage: https://github.com/steijgeler/euromail
         
     | 
| 
      
 30 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 31 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 32 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 33 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 35 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 36 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 37 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 39 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 42 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 44 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 45 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 46 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 47 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 48 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 49 
     | 
    
         
            +
            rubygems_version: 1.8.25
         
     | 
| 
      
 50 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 51 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 52 
     | 
    
         
            +
            summary: Gem to upload pdf data to an SFTP server
         
     | 
| 
      
 53 
     | 
    
         
            +
            test_files: []
         
     |