pony 0.4 → 0.4.1
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/README.rdoc +79 -0
- data/Rakefile +1 -23
- data/lib/pony.rb +22 -9
- data/pony.gemspec +23 -0
- data/spec/pony_spec.rb +21 -2
- metadata +19 -6
- data/spec/pony_spec.rb.orig +0 -145
    
        data/README.rdoc
    ADDED
    
    | @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            = Pony, the express way to send email in Ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            == Overview
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Ruby no longer has to be jealous of PHP's mail() function, which can send an email in a single command.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              Pony.mail(:to => 'you@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Hello there.')
         | 
| 8 | 
            +
              Pony.mail(:to => 'you@example.com', :from => 'me@example.com', :subject => 'hi', :body => '<h1>Hello there!</h1>', :content_type => 'text/html')
         | 
| 9 | 
            +
              Pony.mail(:to => 'you@example.com', :cc => 'him@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Howdy')
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            Any option key may be omitted except for :to.
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 14 | 
            +
            == Transport
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Pony uses /usr/sbin/sendmail to send mail if it is available, otherwise it uses SMTP to localhost.
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            This can be over-ridden if you specify a via option
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              Pony.mail(:to => 'you@example.com', :via => :smtp) # sends via SMTP
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              Pony.mail(:to => 'you@example.com', :via => :sendmail) # sends via sendmail
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            You can also specify options for SMTP:
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              Pony.mail(:to => 'you@example.com', :via => :smtp, :smtp => {
         | 
| 27 | 
            +
                :host   => 'smtp.yourserver.com',
         | 
| 28 | 
            +
                :port   => '25',
         | 
| 29 | 
            +
                :user   => 'user',
         | 
| 30 | 
            +
                :pass   => 'pass',
         | 
| 31 | 
            +
                :auth   => :plain # :plain, :login, :cram_md5, no auth by default
         | 
| 32 | 
            +
                :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
         | 
| 33 | 
            +
              }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            == TLS/SSL
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            With smtp transport it also possible to use TLS/SSL:
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              Pony.mail(:to => 'you@example.com', :via => :smtp, :smtp => {
         | 
| 40 | 
            +
                :host   => 'smtp.gmail.com',
         | 
| 41 | 
            +
                :port   => '587',
         | 
| 42 | 
            +
                :tls    => true,
         | 
| 43 | 
            +
                :user   => 'user',
         | 
| 44 | 
            +
                :pass   => 'pass',
         | 
| 45 | 
            +
                :auth   => :plain # :plain, :login, :cram_md5, no auth by default
         | 
| 46 | 
            +
                :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
         | 
| 47 | 
            +
              })
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            == Attachments
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            You can attach a file or two with the :attachments option:
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              Pony.mail(..., :attachments => {"foo.zip" => File.read("path/to/foo.zip"), "hello.txt" => "hello!"})
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            An attachment's mime-type is set based on the filename (as dictated by the ruby gem mime-types).  So 'foo.pdf' has a mime-type of 'application/pdf'
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            == Meta
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            Maintained by Ben Prew
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            Written by Adam Wiggins
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            Patches contributed by: Mathieu Martin, Arun Thampi, Thomas Hurst, Stephen
         | 
| 64 | 
            +
            Celis, Othmane Benkirane, Neil Mock, Hiroshi Saito, and Nickolas Means
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            http://github.com/benprew/pony
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            == Releases
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            0.4.1
         | 
| 73 | 
            +
            * Add :cc capability
         | 
| 74 | 
            +
            * fix bug: resolve body not displaying when attachments sent
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            0.4
         | 
| 77 | 
            +
            * Implemented file attachments option
         | 
| 78 | 
            +
            * use TLS if :tls => true
         | 
| 79 | 
            +
             | 
    
        data/Rakefile
    CHANGED
    
    | @@ -29,29 +29,7 @@ require 'rake/clean' | |
| 29 29 | 
             
            require 'rake/gempackagetask'
         | 
| 30 30 | 
             
            require 'fileutils'
         | 
| 31 31 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
            name = "pony"
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            spec = Gem::Specification.new do |s|
         | 
| 36 | 
            -
            	s.name = name
         | 
| 37 | 
            -
            	s.version = version
         | 
| 38 | 
            -
            	s.summary = "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')"
         | 
| 39 | 
            -
            	s.description = "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')"
         | 
| 40 | 
            -
            	s.author = "Adam Wiggins, maint: Ben Prew"
         | 
| 41 | 
            -
            	s.email = "ben.prew@gmail.com"
         | 
| 42 | 
            -
            	s.homepage = "http://github.com/benprew/pony"
         | 
| 43 | 
            -
            	s.rubyforge_project = "pony"
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            	s.platform = Gem::Platform::RUBY
         | 
| 46 | 
            -
            	s.has_rdoc = false
         | 
| 47 | 
            -
             | 
| 48 | 
            -
            	s.files = %w(Rakefile) + Dir.glob("{lib,spec}/**/*")
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            	s.require_path = "lib"
         | 
| 51 | 
            -
            	s.add_dependency( 'tmail', '~> 1.0' )
         | 
| 52 | 
            -
            end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
            Rake::GemPackageTask.new(spec) do |p|
         | 
| 32 | 
            +
            Rake::GemPackageTask.new(eval File.read('pony.gemspec')) do |p|
         | 
| 55 33 | 
             
            	p.need_tar = true if RUBY_PLATFORM !~ /mswin/
         | 
| 56 34 | 
             
            end
         | 
| 57 35 |  | 
    
        data/lib/pony.rb
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            require 'rubygems'
         | 
| 2 2 | 
             
            require 'net/smtp'
         | 
| 3 | 
            +
            require 'mime/types'
         | 
| 3 4 | 
             
            begin
         | 
| 4 5 | 
             
            	require 'smtp_tls'
         | 
| 5 6 | 
             
            rescue LoadError
         | 
| @@ -31,16 +32,28 @@ module Pony | |
| 31 32 | 
             
            		mail = TMail::Mail.new
         | 
| 32 33 | 
             
            		mail.content_type = options[:content_type] if options[:content_type]
         | 
| 33 34 | 
             
            		mail.to = options[:to]
         | 
| 35 | 
            +
            		mail.cc = options[:cc] || ''
         | 
| 34 36 | 
             
            		mail.from = options[:from] || 'pony@unknown'
         | 
| 35 37 | 
             
            		mail.subject = options[:subject]
         | 
| 36 | 
            -
            		 | 
| 37 | 
            -
             | 
| 38 | 
            -
            			 | 
| 39 | 
            -
            			 | 
| 40 | 
            -
            			 | 
| 41 | 
            -
            			 | 
| 42 | 
            -
            			 | 
| 43 | 
            -
            			 | 
| 38 | 
            +
            		if options[:attachments]
         | 
| 39 | 
            +
            			# If message has attachment, then body must be sent as a message part
         | 
| 40 | 
            +
            			# or it will not be interpreted correctly by client.
         | 
| 41 | 
            +
            			body = TMail::Mail.new
         | 
| 42 | 
            +
            			body.body = options[:body] || ""
         | 
| 43 | 
            +
            			body.content_type = options[:content_type] || "text/plain"
         | 
| 44 | 
            +
            			mail.parts.push body
         | 
| 45 | 
            +
            			(options[:attachments] || []).each do |name, body|
         | 
| 46 | 
            +
            				attachment = TMail::Mail.new
         | 
| 47 | 
            +
            				attachment.transfer_encoding = "base64"
         | 
| 48 | 
            +
            				attachment.body = Base64.encode64(body)
         | 
| 49 | 
            +
            				content_type = MIME::Types.type_for(name).to_s
         | 
| 50 | 
            +
            				attachment.content_type = content_type unless content_type == ""
         | 
| 51 | 
            +
            				attachment.set_content_disposition "attachment", "filename" => name
         | 
| 52 | 
            +
            				mail.parts.push attachment
         | 
| 53 | 
            +
            			end
         | 
| 54 | 
            +
            		else
         | 
| 55 | 
            +
            			mail.content_type = options[:content_type] || "text/plain"
         | 
| 56 | 
            +
            			mail.body = options[:body] || ""
         | 
| 44 57 | 
             
            		end
         | 
| 45 58 | 
             
            		mail
         | 
| 46 59 | 
             
            	end
         | 
| @@ -66,7 +79,7 @@ module Pony | |
| 66 79 | 
             
            			if pipe
         | 
| 67 80 | 
             
            				pipe.write(tmail.to_s)
         | 
| 68 81 | 
             
            			else
         | 
| 69 | 
            -
            				exec(sendmail_binary,  | 
| 82 | 
            +
            				exec(sendmail_binary, "-t")
         | 
| 70 83 | 
             
            			end
         | 
| 71 84 | 
             
            		end
         | 
| 72 85 | 
             
            	end
         | 
    
        data/pony.gemspec
    ADDED
    
    | @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Gem::Specification.new do |s|
         | 
| 4 | 
            +
            	s.name = %q{pony}
         | 
| 5 | 
            +
            	s.version = "0.4.1"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	s.description = "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')"
         | 
| 8 | 
            +
            	s.summary = s.description
         | 
| 9 | 
            +
            	s.authors = ["Adam Wiggins", "maint: Ben Prew"]
         | 
| 10 | 
            +
            	s.email = %q{ben.prew@gmail.com}
         | 
| 11 | 
            +
            	s.homepage = %q{http://github.com/benprew/pony}
         | 
| 12 | 
            +
            	s.rubyforge_project = "pony"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            	s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 15 | 
            +
            	s.files = ["README.rdoc", "Rakefile", "pony.gemspec" ] + Dir.glob("{lib,spec}/**/*")
         | 
| 16 | 
            +
            	s.has_rdoc = false
         | 
| 17 | 
            +
            	s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
         | 
| 18 | 
            +
            	s.require_paths = ["lib"]
         | 
| 19 | 
            +
            	s.rubygems_version = %q{1.3.1}
         | 
| 20 | 
            +
            	s.add_dependency( 'tmail', '~> 1.0' )
         | 
| 21 | 
            +
            	s.add_dependency('mime-types', '>= 1.16')
         | 
| 22 | 
            +
            	s.platform = Gem::Platform::RUBY
         | 
| 23 | 
            +
            end
         | 
    
        data/spec/pony_spec.rb
    CHANGED
    
    | @@ -28,6 +28,10 @@ describe Pony do | |
| 28 28 | 
             
            			Pony.build_tmail(:to => 'joe@example.com').to.should == [ 'joe@example.com' ]
         | 
| 29 29 | 
             
            		end
         | 
| 30 30 |  | 
| 31 | 
            +
            		it "cc" do
         | 
| 32 | 
            +
            			Pony.build_tmail(:cc => 'joe@example.com').cc.should == [ 'joe@example.com' ]
         | 
| 33 | 
            +
            		end
         | 
| 34 | 
            +
             | 
| 31 35 | 
             
            		it "from" do
         | 
| 32 36 | 
             
            			Pony.build_tmail(:from => 'joe@example.com').from.should == [ 'joe@example.com' ]
         | 
| 33 37 | 
             
            		end
         | 
| @@ -50,14 +54,29 @@ describe Pony do | |
| 50 54 |  | 
| 51 55 | 
             
            		it "attachments" do
         | 
| 52 56 | 
             
            			tmail = Pony.build_tmail(:attachments => {"foo.txt" => "content of foo.txt"})
         | 
| 53 | 
            -
            			tmail.should have( | 
| 54 | 
            -
            			tmail.parts.first.to_s.should ==  | 
| 57 | 
            +
            			tmail.should have(2).parts
         | 
| 58 | 
            +
            			tmail.parts.first.to_s.should == "Content-Type: text/plain\n\n"
         | 
| 59 | 
            +
            			tmail.parts.last.to_s.should == <<-PART
         | 
| 60 | 
            +
            Content-Type: text/plain
         | 
| 55 61 | 
             
            Content-Transfer-Encoding: Base64
         | 
| 56 62 | 
             
            Content-Disposition: attachment; filename=foo.txt
         | 
| 57 63 |  | 
| 58 64 | 
             
            Y29udGVudCBvZiBmb28udHh0
         | 
| 59 65 | 
             
            			 PART
         | 
| 60 66 | 
             
            		end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            		it "suggests mime-type" do
         | 
| 69 | 
            +
            			tmail = Pony.build_tmail(:attachments => {"foo.pdf" => "content of foo.pdf"})
         | 
| 70 | 
            +
            			tmail.should have(2).parts
         | 
| 71 | 
            +
            			tmail.parts.first.to_s.should == "Content-Type: text/plain\n\n"
         | 
| 72 | 
            +
            			tmail.parts.last.to_s.should == <<-PART
         | 
| 73 | 
            +
            Content-Type: application/pdf
         | 
| 74 | 
            +
            Content-Transfer-Encoding: Base64
         | 
| 75 | 
            +
            Content-Disposition: attachment; filename=foo.pdf
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            Y29udGVudCBvZiBmb28ucGRm
         | 
| 78 | 
            +
            			 PART
         | 
| 79 | 
            +
            		end
         | 
| 61 80 | 
             
            	end
         | 
| 62 81 |  | 
| 63 82 | 
             
            	describe "transport" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,16 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: pony
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 0.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 | 
            -
            -  | 
| 7 | 
            +
            - Adam Wiggins
         | 
| 8 | 
            +
            - "maint: Ben Prew"
         | 
| 8 9 | 
             
            autorequire: 
         | 
| 9 10 | 
             
            bindir: bin
         | 
| 10 11 | 
             
            cert_chain: []
         | 
| 11 12 |  | 
| 12 | 
            -
            date: 2009-11- | 
| 13 | 
            +
            date: 2009-11-18 00:00:00 -08:00
         | 
| 13 14 | 
             
            default_executable: 
         | 
| 14 15 | 
             
            dependencies: 
         | 
| 15 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -22,6 +23,16 @@ dependencies: | |
| 22 23 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 23 24 | 
             
                    version: "1.0"
         | 
| 24 25 | 
             
                version: 
         | 
| 26 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 27 | 
            +
              name: mime-types
         | 
| 28 | 
            +
              type: :runtime
         | 
| 29 | 
            +
              version_requirement: 
         | 
| 30 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 31 | 
            +
                requirements: 
         | 
| 32 | 
            +
                - - ">="
         | 
| 33 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 34 | 
            +
                    version: "1.16"
         | 
| 35 | 
            +
                version: 
         | 
| 25 36 | 
             
            description: "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')"
         | 
| 26 37 | 
             
            email: ben.prew@gmail.com
         | 
| 27 38 | 
             
            executables: []
         | 
| @@ -31,18 +42,20 @@ extensions: [] | |
| 31 42 | 
             
            extra_rdoc_files: []
         | 
| 32 43 |  | 
| 33 44 | 
             
            files: 
         | 
| 45 | 
            +
            - README.rdoc
         | 
| 34 46 | 
             
            - Rakefile
         | 
| 47 | 
            +
            - pony.gemspec
         | 
| 35 48 | 
             
            - lib/pony.rb
         | 
| 36 49 | 
             
            - spec/base.rb
         | 
| 37 50 | 
             
            - spec/pony_spec.rb
         | 
| 38 | 
            -
            - spec/pony_spec.rb.orig
         | 
| 39 51 | 
             
            has_rdoc: true
         | 
| 40 52 | 
             
            homepage: http://github.com/benprew/pony
         | 
| 41 53 | 
             
            licenses: []
         | 
| 42 54 |  | 
| 43 55 | 
             
            post_install_message: 
         | 
| 44 | 
            -
            rdoc_options:  | 
| 45 | 
            -
             | 
| 56 | 
            +
            rdoc_options: 
         | 
| 57 | 
            +
            - --inline-source
         | 
| 58 | 
            +
            - --charset=UTF-8
         | 
| 46 59 | 
             
            require_paths: 
         | 
| 47 60 | 
             
            - lib
         | 
| 48 61 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
    
        data/spec/pony_spec.rb.orig
    DELETED
    
    | @@ -1,145 +0,0 @@ | |
| 1 | 
            -
            require File.dirname(__FILE__) + '/base'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Pony do
         | 
| 4 | 
            -
            	it "sends mail" do
         | 
| 5 | 
            -
            		Pony.should_receive(:transport) do |tmail|
         | 
| 6 | 
            -
            			tmail.to.should == [ 'joe@example.com' ]
         | 
| 7 | 
            -
            			tmail.from.should == [ 'sender@example.com' ]
         | 
| 8 | 
            -
            			tmail.subject.should == 'hi'
         | 
| 9 | 
            -
            			tmail.body.should == 'Hello, Joe.'
         | 
| 10 | 
            -
            		end
         | 
| 11 | 
            -
            		Pony.mail(:to => 'joe@example.com', :from => 'sender@example.com', :subject => 'hi', :body => 'Hello, Joe.')
         | 
| 12 | 
            -
            	end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            	it "requires :to param" do
         | 
| 15 | 
            -
            		Pony.stub!(:transport)
         | 
| 16 | 
            -
            		lambda { Pony.mail({}) }.should raise_error(ArgumentError)
         | 
| 17 | 
            -
            	end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            	it "doesn't require any other param" do
         | 
| 20 | 
            -
            		Pony.stub!(:transport)
         | 
| 21 | 
            -
            		lambda { Pony.mail(:to => 'joe@example.com') }.should_not raise_error
         | 
| 22 | 
            -
            	end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            	####################
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            	describe "builds a TMail object with field:" do
         | 
| 27 | 
            -
            		it "to" do
         | 
| 28 | 
            -
            			Pony.build_tmail(:to => 'joe@example.com').to.should == [ 'joe@example.com' ]
         | 
| 29 | 
            -
            		end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            		it "from" do
         | 
| 32 | 
            -
            			Pony.build_tmail(:from => 'joe@example.com').from.should == [ 'joe@example.com' ]
         | 
| 33 | 
            -
            		end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            		it "from (default)" do
         | 
| 36 | 
            -
            			Pony.build_tmail({}).from.should == [ 'pony@unknown' ]
         | 
| 37 | 
            -
            		end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            		it "subject" do
         | 
| 40 | 
            -
            			Pony.build_tmail(:subject => 'hello').subject.should == 'hello'
         | 
| 41 | 
            -
            		end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            		it "body" do
         | 
| 44 | 
            -
            			Pony.build_tmail(:body => 'What do you know, Joe?').body.should == 'What do you know, Joe?'
         | 
| 45 | 
            -
            		end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
            <<<<<<< HEAD:spec/pony_spec.rb
         | 
| 48 | 
            -
                it "content_type" do
         | 
| 49 | 
            -
            			Pony.build_tmail(:content_type => 'text/html').content_type.should == 'text/html'
         | 
| 50 | 
            -
                end
         | 
| 51 | 
            -
            =======
         | 
| 52 | 
            -
            		it "attachments" do
         | 
| 53 | 
            -
            			tmail = Pony.build_tmail(:attachments => {"foo.txt" => "content of foo.txt"})
         | 
| 54 | 
            -
            			tmail.should have(1).parts
         | 
| 55 | 
            -
            			tmail.parts.first.to_s.should == <<-PART
         | 
| 56 | 
            -
            Content-Transfer-Encoding: Base64
         | 
| 57 | 
            -
            Content-Disposition: attachment; filename=foo.txt
         | 
| 58 | 
            -
             | 
| 59 | 
            -
            Y29udGVudCBvZiBmb28udHh0
         | 
| 60 | 
            -
            			 PART
         | 
| 61 | 
            -
            		end
         | 
| 62 | 
            -
            >>>>>>> c01d11243041d1897c67221bb92cdd5ff3fd6c0c:spec/pony_spec.rb
         | 
| 63 | 
            -
            	end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
            	describe "transport" do
         | 
| 66 | 
            -
            		it "transports via the sendmail binary if it exists" do
         | 
| 67 | 
            -
            			File.stub!(:executable?).and_return(true)
         | 
| 68 | 
            -
            			Pony.should_receive(:transport_via_sendmail).with(:tmail)
         | 
| 69 | 
            -
            			Pony.transport(:tmail)
         | 
| 70 | 
            -
            		end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
            		it "transports via smtp if no sendmail binary" do
         | 
| 73 | 
            -
            			Pony.stub!(:sendmail_binary).and_return('/does/not/exist')
         | 
| 74 | 
            -
            			Pony.should_receive(:transport_via_smtp).with(:tmail)
         | 
| 75 | 
            -
            			Pony.transport(:tmail)
         | 
| 76 | 
            -
            		end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
            		it "transports mail via /usr/sbin/sendmail binary" do
         | 
| 79 | 
            -
            			pipe = mock('sendmail pipe')
         | 
| 80 | 
            -
            			IO.should_receive(:popen).with('-',"w+").and_yield(pipe)
         | 
| 81 | 
            -
            			pipe.should_receive(:write).with('message')
         | 
| 82 | 
            -
            			Pony.transport_via_sendmail(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'))
         | 
| 83 | 
            -
            		end
         | 
| 84 | 
            -
             | 
| 85 | 
            -
            		describe "SMTP transport" do
         | 
| 86 | 
            -
            			before do
         | 
| 87 | 
            -
            				@smtp = mock('net::smtp object')
         | 
| 88 | 
            -
            				@smtp.stub!(:start)
         | 
| 89 | 
            -
            				@smtp.stub!(:send_message)
         | 
| 90 | 
            -
            				@smtp.stub!(:finish)
         | 
| 91 | 
            -
            				Net::SMTP.stub!(:new).and_return(@smtp)
         | 
| 92 | 
            -
            			end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            			it "defaults to localhost as the SMTP server" do
         | 
| 95 | 
            -
            				Net::SMTP.should_receive(:new).with('localhost', '25').and_return(@smtp)
         | 
| 96 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'))
         | 
| 97 | 
            -
            			end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
            			it "uses SMTP authorization when auth key is provided" do
         | 
| 100 | 
            -
            				o = { :smtp => { :user => 'user', :password => 'password', :auth => 'plain'}}
         | 
| 101 | 
            -
            				@smtp.should_receive(:start).with('localhost.localdomain', 'user', 'password', 'plain')
         | 
| 102 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'), o)
         | 
| 103 | 
            -
            			end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
            			it "enable starttls when tls option is true" do
         | 
| 106 | 
            -
            				o = { :smtp => { :user => 'user', :password => 'password', :auth => 'plain', :tls => true}}
         | 
| 107 | 
            -
            				@smtp.should_receive(:enable_starttls)
         | 
| 108 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'), o)
         | 
| 109 | 
            -
            			end
         | 
| 110 | 
            -
             | 
| 111 | 
            -
            			it "starts the job" do
         | 
| 112 | 
            -
            				@smtp.should_receive(:start)
         | 
| 113 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'))
         | 
| 114 | 
            -
            			end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
            			it "sends a tmail message" do
         | 
| 117 | 
            -
            				@smtp.should_receive(:send_message)
         | 
| 118 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'))
         | 
| 119 | 
            -
            			end
         | 
| 120 | 
            -
             | 
| 121 | 
            -
            			it "finishes the job" do
         | 
| 122 | 
            -
            				@smtp.should_receive(:finish)
         | 
| 123 | 
            -
            				Pony.transport_via_smtp(mock('tmail', :to => 'to', :from => 'from', :to_s => 'message'))
         | 
| 124 | 
            -
            			end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
            		end
         | 
| 127 | 
            -
            	end
         | 
| 128 | 
            -
             | 
| 129 | 
            -
            	describe ":via option should over-ride the default transport mechanism" do
         | 
| 130 | 
            -
            		it "should send via sendmail if :via => sendmail" do
         | 
| 131 | 
            -
            			Pony.should_receive(:transport_via_sendmail)
         | 
| 132 | 
            -
            			Pony.mail(:to => 'joe@example.com', :via => :sendmail)
         | 
| 133 | 
            -
            		end
         | 
| 134 | 
            -
             | 
| 135 | 
            -
            		it "should send via smtp if :via => smtp" do
         | 
| 136 | 
            -
            			Pony.should_receive(:transport_via_smtp)
         | 
| 137 | 
            -
            			Pony.mail(:to => 'joe@example.com', :via => :smtp)
         | 
| 138 | 
            -
            		end
         | 
| 139 | 
            -
             | 
| 140 | 
            -
            		it "should raise an error if via is neither smtp nor sendmail" do
         | 
| 141 | 
            -
            			lambda { Pony.mail(:to => 'joe@plumber.com', :via => :pigeon) }.should raise_error(ArgumentError)
         | 
| 142 | 
            -
            		end
         | 
| 143 | 
            -
            	end
         | 
| 144 | 
            -
             | 
| 145 | 
            -
            end
         |