Commit b4a1809
Changed files (5)
lib/minbox/client.rb
@@ -60,7 +60,7 @@ module Minbox
def ehlo(line)
_ehlo, _client_domain = line.split(" ")
write "250-#{host}"
- write "250 AUTH PLAIN LOGIN"
+ #write "250 AUTH PLAIN LOGIN"
write "250 OK"
end
spec/minbox/server_spec.rb
@@ -1,42 +1,42 @@
-require 'net/smtp'
+require 'spec_helper'
RSpec.describe Minbox::Server do
- subject { described_class.new }
-
describe "#handle" do
- let(:publisher) { ->(mail) { inbox << mail } }
- let(:inbox) { [] }
- let(:server) { described_class.new(host, port) }
let(:host) { 'localhost' }
- let(:port) { (9000..9999).to_a.sample }
-
- before :example do
- server_thread = Thread.new do
- server.listen! do |mail|
- publisher.publish(mail)
- end
- end
- server_thread.join(5)
- end
-
- after :example do
- server.shutdown!
- end
+ let(:port) { 8080 }
context "when handling a simple client" do
- let(:mail) do
+ def create_mail(to: Faker::Internet.email, from: Faker::Internet.email)
Mail.new do
- from 'Your Name <me@example.org>'
- to 'Destination Address <them@example.com>'
+ from from
+ to to
subject 'test message'
body "#{Time.now} This is a test message."
end
end
- specify do
- Net::SMTP.start(host, port) do |smtp|
- smtp.send_message(mail.to_s, 'me@example.org', 'them@example.com')
+ context "when sending a single email" do
+ let(:result) do
+ Net::SMTP.start(host, port) do |smtp|
+ smtp.send_message(create_mail.to_s, Faker::Internet.email, Faker::Internet.email)
+ end
+ end
+
+ specify { expect(result).to be_success }
+ specify { expect(result.status.to_i).to eql(250) }
+ end
+
+ context "when sending multiple emails" do
+ let(:n) { rand(10) }
+ let(:result) do
+ Net::SMTP.start(host, port) do |smtp|
+ n.times do
+ smtp.send_message(create_mail.to_s, Faker::Internet.email, Faker::Internet.email)
+ end
+ end
end
+
+ specify { expect(result).to eql(n) }
end
end
end
spec/spec_helper.rb
@@ -1,5 +1,8 @@
require "bundler/setup"
require "minbox"
+require 'net/smtp'
+require 'mail'
+require 'faker'
RSpec.configure do |config|
# Enable flags like --only-failures and --next-failure
Gemfile.lock
@@ -9,7 +9,12 @@ PATH
GEM
remote: https://rubygems.org/
specs:
+ concurrent-ruby (1.1.4)
diff-lcs (1.3)
+ faker (1.9.3)
+ i18n (>= 0.7)
+ i18n (1.6.0)
+ concurrent-ruby (~> 1.0)
mail (2.7.1)
mini_mime (>= 0.1.1)
mini_mime (1.0.1)
@@ -35,6 +40,7 @@ PLATFORMS
DEPENDENCIES
bundler (~> 2.0)
+ faker (~> 1.9)
minbox!
rake (~> 10.0)
rspec (~> 3.0)
minbox.gemspec
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
spec.add_dependency "redis", "~> 4.1"
spec.add_dependency "thor", "~> 0.20"
spec.add_development_dependency "bundler", "~> 2.0"
+ spec.add_development_dependency "faker", "~> 1.9"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"
end