journalduhacker/spec/models/email_parser_spec.rb

73 lines
2.1 KiB
Ruby

require "spec_helper"
describe EmailParser do
before(:each) do
@user = User.make!
@story = Story.make!(:user => @user)
@commentor = User.make!
@comment = Comment.make!(:story => @story, :user => @commentor)
@emailer = User.make!(:mailing_list_mode => 1)
@emails = {}
Dir.glob("#{Rails.root}/spec/fixtures/inbound_emails/*.eml").
each do |f|
@emails[File.basename(f).gsub(/\..*/, "")] = File.read(f).
gsub(/##SHORTNAME##/, Rails.application.shortname).
gsub(/##MAILING_LIST_TOKEN##/, @emailer.mailing_list_token).
gsub(/##COMMENT_ID##/, @comment.short_id)
end
end
it "can parse a valid e-mail" do
parser = EmailParser.new(
"user@example.com",
Rails.application.shortname +
"-#{@emailer.mailing_list_token}@example.org",
@emails["1"])
parser.should_not == nil
parser.email.should_not == nil
parser.user_token.should == @emailer.mailing_list_token
parser.been_here?.should == false
parser.sending_user.id.should == @emailer.id
parser.parent.class.should == Comment
end
it "rejects mailing loops" do
parser = EmailParser.new(
"user@example.com",
Rails.application.shortname +
"-#{@emailer.mailing_list_token}@example.org",
@emails["2"])
parser.email.should_not == nil
parser.been_here?.should == true
end
it "strips signatures" do
parser = EmailParser.new(
"user@example.com",
Rails.application.shortname +
"-#{@emailer.mailing_list_token}@example.org",
@emails["3"])
parser.email.should_not == nil
parser.body.should == "It hasn't decreased any measurable amount but since the traffic to\nthe site is increasing a bit each week, it's hard to tell."
end
it "strips quoted lines with attribution" do
parser = EmailParser.new(
"user@example.com",
Rails.application.shortname +
"-#{@emailer.mailing_list_token}@example.org",
@emails["4"])
parser.email.should_not == nil
parser.body.should == "It hasn't decreased any measurable amount but since the traffic to\nthe site is increasing a bit each week, it's hard to tell."
end
end