Skip to content

Commit

Permalink
improved tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ibalosh committed Sep 24, 2019
1 parent 714d0c5 commit 98cb3d3
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 63 deletions.
2 changes: 1 addition & 1 deletion lib/postmark/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Postmark
VERSION = '1.17.0'
VERSION = '1.18.0'
end
15 changes: 4 additions & 11 deletions spec/integration/account_api_client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@
let(:unique_token) { rand(36**32).to_s(36) }
let(:unique_from_email) { ENV['POSTMARK_CI_SENDER'].gsub(/(\+.+)?@/, "+#{unique_token}@") }

it 'can be used to manage senders' do
new_sender = nil

it 'manage senders' do
# create & count
new_sender = subject.create_sender(:name => 'Integration Test',
:from_email => unique_from_email)
new_sender = subject.create_sender(:name => 'Integration Test', :from_email => unique_from_email)
expect(subject.get_senders_count).to be > 0

# get
Expand Down Expand Up @@ -47,8 +44,7 @@
expect { subject.delete_sender(new_sender[:id]) }.not_to raise_error
end

it 'can be used to manage domains' do
new_domain = nil
it 'manage domains' do
domain_name = "#{unique_token}-gem-integration.test"
return_path = "return.#{domain_name}"
updated_return_path = "updated-return.#{domain_name}"
Expand Down Expand Up @@ -85,9 +81,7 @@
expect { subject.delete_domain(new_domain[:id]) }.not_to raise_error
end

it 'can be used to manage servers' do
new_server = nil

it 'manage servers' do
# create & count
new_server = subject.create_server(:name => "server-#{unique_token}",
:color => 'red')
Expand All @@ -111,5 +105,4 @@
# delete
expect { subject.delete_server(new_server[:id]) }.not_to raise_error
end

end
42 changes: 20 additions & 22 deletions spec/integration/mail_delivery_method_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@
end
}

let(:tagged_message) {
message.tap do |m|
m.tag "postmark-gem"
end
}
let(:tagged_message) { message.tap { |m| m.tag "postmark-gem" } }

let(:message_with_no_body) {
Mail.new do
Expand Down Expand Up @@ -54,34 +50,36 @@
end

it 'updates a message object with X-PM-Message-Id' do
expect { message.deliver }.
to change{message['X-PM-Message-Id'].to_s}.to(postmark_message_id_format)
expect { message.deliver }.to change{message['X-PM-Message-Id'].to_s}.to(postmark_message_id_format)
end

it 'updates a message object with full postmark response' do
expect { message.deliver }.
to change{message.postmark_response}.from(nil)
expect { message.deliver }.to change{message.postmark_response}.from(nil)
end

it 'delivers a tagged message' do
expect { tagged_message.deliver }.
to change{message.delivered?}.to(true)
expect { tagged_message.deliver }.to change{message.delivered?}.to(true)
end

it 'delivers a message with attachment' do
expect { message_with_attachment.deliver }.
to change{message_with_attachment.delivered?}.to(true)
expect { message_with_attachment.deliver }.to change{message_with_attachment.delivered?}.to(true)
end

it 'fails to deliver a message without body' do
expect { message_with_no_body.deliver! }.
to raise_error(Postmark::InvalidMessageError)
message_with_no_body.should_not be_delivered
end
context 'fails to deliver a message' do
it ' without body - raise error' do
expect { message_with_no_body.deliver! }.to raise_error(Postmark::InvalidMessageError)
end

it 'fails to deliver a message with invalid To address' do
expect { message_with_invalid_to.deliver! }.
to raise_error(Postmark::InvalidMessageError)
message_with_invalid_to.should_not be_delivered
it 'without body - do not deliver' do
expect(message_with_no_body).not_to be_delivered
end

it 'with invalid To address - raise error' do
expect { message_with_invalid_to.deliver! }.to raise_error(Postmark::InvalidMessageError)
end

it 'with invalid To address - do not deliver' do
expect(message_with_invalid_to).not_to be_delivered
end
end
end
6 changes: 3 additions & 3 deletions spec/unit/postmark/error_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

describe(Postmark::HttpClientError) do
it { is_expected.to be_a(Postmark::Error) }
specify { expect(subject.retry?).to be true }
it { expect(subject.retry?).to be true }
end

describe(Postmark::HttpServerError) do
Expand Down Expand Up @@ -85,7 +85,7 @@

shared_examples_for 'api input error' do
its(:status_code) { is_expected. to eq 422 }
specify { expect(subject.retry?).to be false }
it { expect(subject.retry?).to be false }
it { is_expected.to be_a(Postmark::ApiInputError) }
it { is_expected.to be_a(Postmark::HttpServerError) }
end
Expand Down Expand Up @@ -117,7 +117,7 @@

describe(Postmark::TimeoutError) do
it { is_expected.to be_a(Postmark::Error) }
specify { expect(subject.retry?).to be true }
it { expect(subject.retry?).to be true }
end

describe(Postmark::UnknownMessageType) do
Expand Down
64 changes: 38 additions & 26 deletions spec/unit/postmark/message_extensions/mail_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,6 @@
end
end

let(:mail_message_with_reserved_headers) do
mail_message.header['Return-Path'] = '[email protected]'
mail_message.header['From'] = '[email protected]'
mail_message.header['Sender'] = '[email protected]'
mail_message.header['Received'] = 'from mta.pstmrk.it ([72.14.252.155]:54907)'
mail_message.header['Date'] = 'January 25, 2013 3:30:58 PM PDT'
mail_message.header['Content-Type'] = 'application/json'
mail_message.header['To'] = '[email protected]'
mail_message.header['Cc'] = '[email protected]'
mail_message.header['Bcc'] = '[email protected]'
mail_message.header['Subject'] = 'You want not to use a bogus header'
mail_message.header['Tag'] = 'bogus-tag'
mail_message.header['Attachment'] = 'anydatahere'
mail_message.header['Allowed-Header'] = 'value'
mail_message.header['TRACK-OPENS'] = 'true'
mail_message.header['TRACK-LINKS'] = 'HtmlOnly'
mail_message
end

describe '#tag' do

it 'value set on tag=' do
Expand Down Expand Up @@ -237,20 +218,51 @@
end

describe "#export_headers" do
let(:headers) { mail_message_with_reserved_headers.export_headers }
let(:header_names) { headers.map { |h| h['Name'] } }
let(:mail_message_with_reserved_headers) do
mail_message.header['Return-Path'] = '[email protected]'
mail_message.header['From'] = '[email protected]'
mail_message.header['Sender'] = '[email protected]'
mail_message.header['Received'] = 'from mta.pstmrk.it ([72.14.252.155]:54907)'
mail_message.header['Date'] = 'January 25, 2013 3:30:58 PM PDT'
mail_message.header['Content-Type'] = 'application/json'
mail_message.header['To'] = '[email protected]'
mail_message.header['Cc'] = '[email protected]'
mail_message.header['Bcc'] = '[email protected]'
mail_message.header['Subject'] = 'You want not to use a bogus header'
mail_message.header['Tag'] = 'bogus-tag'
mail_message.header['Attachment'] = 'anydatahere'
mail_message.header['Allowed-Header'] = 'value'
mail_message.header['TRACK-OPENS'] = 'true'
mail_message.header['TRACK-LINKS'] = 'HtmlOnly'
mail_message
end


it 'only allowed headers' do
headers = mail_message_with_reserved_headers.export_headers
header_names = headers.map { |h| h['Name'] }

specify { expect(header_names).to include('Allowed-Header') }
specify { expect(header_names.count).to eq 1 }
aggregate_failures do
expect(header_names).to include('Allowed-Header')
expect(header_names.count).to eq 1
end
end

it 'custom header character case preserved' do
custom_header = {"Name"=>"custom-Header", "Value"=>"cUsTomHeaderValue"}
mail_message.header[custom_header['Name']] = custom_header['Value']

expect(mail_message.export_headers.first).to match(custom_header)
end
end

describe "#to_postmark_hash" do
# See mail_message_converter_spec.rb
end

describe '#templated?' do
specify { expect(mail_message).to_not be_templated }
specify { expect(templated_message).to be_templated }
it { expect(mail_message).to_not be_templated }
it { expect(templated_message).to be_templated }
end

describe '#prerender' do
Expand Down Expand Up @@ -317,7 +329,7 @@
context 'and using a non-Postmark delivery method' do
let(:delivery_method) { Mail::SMTP }

specify { expect { rendering }.to raise_error(Postmark::MailAdapterError) }
it { expect { rendering }.to raise_error(Postmark::MailAdapterError) }
end

context 'and using a Postmark delivery method' do
Expand Down

0 comments on commit 98cb3d3

Please sign in to comment.