2014-02-04 02:05:51 +01:00
|
|
|
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)
|
|
|
|
|
2014-03-03 23:37:32 +01:00
|
|
|
@emailer = User.make!(:mailing_list_mode => 1)
|
2014-02-04 02:05:51 +01:00
|
|
|
|
|
|
|
@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
|
2014-02-04 02:27:54 +01:00
|
|
|
|
|
|
|
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
|
2014-02-04 02:05:51 +01:00
|
|
|
end
|