-
Notifications
You must be signed in to change notification settings - Fork 0
/
integrity_email_test.rb
76 lines (58 loc) · 1.95 KB
/
integrity_email_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
require "test/unit"
require "rumbster"
require "message_observers"
require "integrity/notifier/test"
begin
require "redgreen"
rescue LoadError
end
require File.dirname(__FILE__) + "/../lib/integrity/notifier/email"
class IntegrityEmailTest < Test::Unit::TestCase
include Integrity::Notifier::Test
MAIL_SERVER_PORT = 10_000
def notifier
"Email"
end
def setup
Net::SMTP.disable_tls
@server = Rumbster.new(MAIL_SERVER_PORT)
@mail_observer = MailMessageObserver.new
@server.add_observer(@mail_observer)
@server.start
setup_database
end
def commit(status=:successful)
Integrity::Commit.gen(status)
end
def teardown
@server.stop
end
def test_configuration_form
assert_form_have_tag "h3", :content => "SMTP Server Configuration"
assert_form_have_option "to", "foo@example.org"
assert_form_have_option "from", "bar@example.org"
assert_form_have_option "host", "foobarhost.biz"
assert_form_have_option "user", "foobaruser"
assert_form_have_option "pass", "secret"
# TODO assert_form_have_option "auth", "plain"
assert_form_have_option "pass", "secret"
assert_form_have_option "domain","localhost"
end
def test_it_sends_email_notification
config = { "host" => "127.0.0.1",
"port" => MAIL_SERVER_PORT,
"to" => "you@example.org",
"from" => "me@example.org" }
successful = commit(:successful)
failed = commit(:failed)
Integrity::Notifier::Email.new(successful, config.dup).deliver!
Integrity::Notifier::Email.new(failed, config).deliver!
mail = @mail_observer.messages.first
assert_equal ["you@example.org"], mail.destinations
assert_equal ["me@example.org"], mail.from
assert mail.subject.include?("successful")
assert mail.body.include?(successful.committed_at.to_s)
assert mail.body.include?(successful.author.name)
assert mail.body.include?(successful.output)
end
end