logstash/spec/outputs/email.rb
2013-06-19 10:03:38 -07:00

173 lines
4.7 KiB
Ruby

require "test_utils"
require "rumbster"
require "message_observers"
describe "outputs/email" do
extend LogStash::RSpec
@@port=2525
let (:rumbster) { Rumbster.new(@@port) }
let (:message_observer) { MailMessageObserver.new }
before :each do
rumbster.add_observer message_observer
rumbster.start
end
after :each do
rumbster.stop
end
describe "use a list of email as mail.to (LOGSTASH-827)" do
config <<-CONFIG
input {
generator {
message => "hello world"
count => 1
type => "generator"
}
}
filter {
noop {
add_field => ["dummy_match", "ok"]
}
}
output{
email {
to => "email1@host, email2@host"
match => ["mymatch", "dummy_match,ok"]
options => ["port", #{@@port}]
}
}
CONFIG
agent do
insist {message_observer.messages.size} == 1
insist {message_observer.messages[0].to} == ["email1@host", "email2@host"]
end
end
describe "use an array of email as mail.to (LOGSTASH-827)" do
config <<-CONFIG
input {
generator {
message => "hello world"
count => 1
type => "generator"
}
}
filter {
noop {
add_field => ["dummy_match", "ok"]
add_field => ["to_addr", "email1@host"]
add_field => ["to_addr", "email2@host"]
}
}
output{
email {
to => "%{to_addr}"
match => ["mymatch", "dummy_match,ok"]
options => ["port", #{@@port}]
}
}
CONFIG
agent do
insist {message_observer.messages.size} == 1
insist {message_observer.messages[0].to} == ["email1@host", "email2@host"]
end
end
describe "multi-lined text body (LOGSTASH-841)" do
config <<-CONFIG
input {
generator {
message => "hello world"
count => 1
type => "generator"
}
}
filter {
noop {
add_field => ["dummy_match", "ok"]
}
}
output{
email {
to => "me@host"
subject => "Hello World"
body => "Line1\\nLine2\\nLine3"
match => ["mymatch", "dummy_match,*"]
options => ["port", #{@@port}]
}
}
CONFIG
agent do
insist {message_observer.messages.size} == 1
insist {message_observer.messages[0].subject} == "Hello World"
insist {message_observer.messages[0].body.raw_source} == "Line1\r\nLine2\r\nLine3"
end
end
describe "use nil authenticationType (LOGSTASH-559)" do
config <<-CONFIG
input {
generator {
message => "hello world"
count => 1
type => "generator"
}
}
filter {
noop {
add_field => ["dummy_match", "ok"]
}
}
output{
email {
to => "me@host"
subject => "Hello World"
body => "Line1\\nLine2\\nLine3"
match => ["mymatch", "dummy_match,*"]
options => ["port", #{@@port}, "authenticationType", "nil"]
}
}
CONFIG
agent do
insist {message_observer.messages.size} == 1
insist {message_observer.messages[0].subject} == "Hello World"
insist {message_observer.messages[0].body.raw_source} == "Line1\r\nLine2\r\nLine3"
end
end
describe "match on source and message (LOGSTASH-826)" do
config <<-CONFIG
input {
generator {
message => "hello world"
count => 1
type => "generator"
}
}
output{
email {
to => "me@host"
subject => "Hello World"
body => "Mail body"
match => ["messageAndSourceMatch", "message,*hello,,and,source,*generator"]
options => ["port", #{@@port}, "authenticationType", "nil"]
}
}
CONFIG
agent do
insist {message_observer.messages.size} == 1
insist {message_observer.messages[0].subject} == "Hello World"
insist {message_observer.messages[0].body.raw_source} == "Mail body"
end
end
end