rakismet 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +2 -0
- data/lib/rakismet.rb +5 -2
- data/lib/rakismet/model.rb +5 -0
- data/lib/rakismet/version.rb +1 -1
- data/rakismet.gemspec +1 -1
- data/spec/models/block_params_spec.rb +26 -0
- data/spec/models/custom_params_spec.rb +19 -0
- data/spec/models/extended_params_spec.rb +16 -0
- data/spec/models/rakismet_model_spec.rb +98 -0
- data/spec/models/request_params_spec.rb +23 -0
- data/spec/models/subclass_spec.rb +14 -0
- data/spec/spec_helper.rb +27 -10
- metadata +15 -5
- data/spec/rakismet_model_spec.rb +0 -246
data/CHANGELOG
CHANGED
data/lib/rakismet.rb
CHANGED
@@ -55,8 +55,11 @@ module Rakismet
|
|
55
55
|
args.merge!(:blog => Rakismet.url)
|
56
56
|
akismet = URI.parse(call_url(function))
|
57
57
|
_, response = Net::HTTP::Proxy(proxy_host, proxy_port).start(akismet.host) do |http|
|
58
|
-
|
59
|
-
|
58
|
+
params = args.map do |k,v|
|
59
|
+
param = v.class < String ? v.to_str : v.to_s # for ActiveSupport::SafeBuffer and Nil, respectively
|
60
|
+
"#{k}=#{CGI.escape(param)}"
|
61
|
+
end
|
62
|
+
http.post(akismet.path, params.join('&'), Rakismet.headers)
|
60
63
|
end
|
61
64
|
response
|
62
65
|
end
|
data/lib/rakismet/model.rb
CHANGED
data/lib/rakismet/version.rb
CHANGED
data/rakismet.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "http://github.com/joshfrench/rakismet"
|
12
12
|
s.summary = "Akismet and TypePad AntiSpam integration for Rails."
|
13
13
|
s.description = "Rakismet is the easiest way to integrate Akismet or TypePad's AntiSpam into your Rails app."
|
14
|
-
s.date = "
|
14
|
+
s.date = "2012-04-19"
|
15
15
|
|
16
16
|
s.rubyforge_project = "rakismet"
|
17
17
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
PROC = proc { author.reverse }
|
4
|
+
|
5
|
+
class BlockAkismetModel
|
6
|
+
include Rakismet::Model
|
7
|
+
rakismet_attrs :author => PROC
|
8
|
+
end
|
9
|
+
|
10
|
+
describe BlockAkismetModel do
|
11
|
+
|
12
|
+
before do
|
13
|
+
@block = BlockAkismetModel.new
|
14
|
+
comment_attrs.each_pair { |k,v| @block.stub!(k).and_return(v) }
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should accept a block" do
|
18
|
+
puts BlockAkismetModel.akismet_attrs.inspect
|
19
|
+
BlockAkismetModel.akismet_attrs[:comment_author].should eql(PROC)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should eval block with self = instance" do
|
23
|
+
data = @block.send(:akismet_data)
|
24
|
+
data[:comment_author].should eql(comment_attrs[:author].reverse)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
MAPPED_PARAMS = { :comment_type => :type2, :author => :author2, :content => :content2,
|
4
|
+
:author_email => :author_email2, :author_url => :author_url2 }
|
5
|
+
|
6
|
+
class CustomAkismetModel
|
7
|
+
include Rakismet::Model
|
8
|
+
rakismet_attrs MAPPED_PARAMS.dup
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
describe CustomAkismetModel do
|
13
|
+
it "should override default mappings" do
|
14
|
+
[:comment_type, :author, :author_url, :author_email, :content].each do |field|
|
15
|
+
fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
|
16
|
+
CustomAkismetModel.akismet_attrs[fieldname].should eql(MAPPED_PARAMS[field])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
EXTRA = { :extra => :extra, :another => lambda { } }
|
4
|
+
|
5
|
+
class ExtendedAkismetModel
|
6
|
+
include Rakismet::Model
|
7
|
+
rakismet_attrs EXTRA.dup
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ExtendedAkismetModel do
|
11
|
+
it "should include additional attributes" do
|
12
|
+
[:extra, :another].each do |field|
|
13
|
+
ExtendedAkismetModel.akismet_attrs[field].should eql(EXTRA[field])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe AkismetModel do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@model = AkismetModel.new
|
7
|
+
comment_attrs.each_pair { |k,v| @model.stub!(k).and_return(v) }
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have default mappings" do
|
11
|
+
[:comment_type, :author, :author_email, :author_url, :content].each do |field|
|
12
|
+
fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
|
13
|
+
AkismetModel.akismet_attrs[fieldname].should eql(field)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have request mappings" do
|
18
|
+
[:user_ip, :user_agent, :referrer].each do |field|
|
19
|
+
AkismetModel.akismet_attrs[field].should eql(field)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should populate comment type" do
|
24
|
+
@model.send(:akismet_data)[:comment_type].should == comment_attrs[:comment_type]
|
25
|
+
end
|
26
|
+
|
27
|
+
describe ".spam?" do
|
28
|
+
|
29
|
+
it "should use request variables from Rakismet.request if absent in model" do
|
30
|
+
[:user_ip, :user_agent, :referrer].each do |field|
|
31
|
+
@model.should_not respond_to(:field)
|
32
|
+
end
|
33
|
+
Rakismet.stub!(:request).and_return(request)
|
34
|
+
Rakismet.should_receive(:akismet_call).
|
35
|
+
with('comment-check', akismet_attrs.merge(:user_ip => '127.0.0.1',
|
36
|
+
:user_agent => 'RSpec',
|
37
|
+
:referrer => 'http://test.host/referrer'))
|
38
|
+
@model.spam?
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should cache result of #spam?" do
|
42
|
+
Rakismet.should_receive(:akismet_call).once
|
43
|
+
@model.spam?
|
44
|
+
@model.spam?
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be true if comment is spam" do
|
48
|
+
Rakismet.stub!(:akismet_call).and_return('true')
|
49
|
+
@model.should be_spam
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be false if comment is not spam" do
|
53
|
+
Rakismet.stub!(:akismet_call).and_return('false')
|
54
|
+
@model.should_not be_spam
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should set akismet_response" do
|
58
|
+
Rakismet.stub!(:akismet_call).and_return('response')
|
59
|
+
@model.spam?
|
60
|
+
@model.akismet_response.should eql('response')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should not throw an error if request vars are missing" do
|
64
|
+
Rakismet.stub!(:request).and_return(empty_request)
|
65
|
+
lambda { @model.spam? }.should_not raise_error(NoMethodError)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
describe ".spam!" do
|
71
|
+
it "should call Base.akismet_call with submit-spam" do
|
72
|
+
Rakismet.should_receive(:akismet_call).with('submit-spam', akismet_attrs)
|
73
|
+
@model.spam!
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should mutate #spam?" do
|
77
|
+
Rakismet.stub!(:akismet_call)
|
78
|
+
@model.instance_variable_set(:@_spam, false)
|
79
|
+
@model.spam!
|
80
|
+
@model.should be_spam
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe ".ham!" do
|
85
|
+
it "should call Base.akismet_call with submit-ham" do
|
86
|
+
Rakismet.should_receive(:akismet_call).with('submit-ham', akismet_attrs)
|
87
|
+
@model.ham!
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should mutate #spam?" do
|
91
|
+
Rakismet.stub!(:akismet_call)
|
92
|
+
@model.instance_variable_set(:@_spam, true)
|
93
|
+
@model.ham!
|
94
|
+
@model.should_not be_spam
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
class RequestParams
|
4
|
+
include Rakismet::Model
|
5
|
+
attr_accessor :user_ip, :user_agent, :referrer
|
6
|
+
end
|
7
|
+
|
8
|
+
describe RequestParams do
|
9
|
+
before do
|
10
|
+
@model = RequestParams.new
|
11
|
+
attrs = comment_attrs(:user_ip => '192.168.0.1', :user_agent => 'Rakismet', :referrer => 'http://localhost/referrer')
|
12
|
+
attrs.each_pair { |k,v| @model.stub!(k).and_return(v) }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should use local values even if Rakismet.request is populated" do
|
16
|
+
Rakismet.stub(:request).and_return(request)
|
17
|
+
Rakismet.should_receive(:akismet_call).
|
18
|
+
with('comment-check', akismet_attrs.merge(:user_ip => '192.168.0.1',
|
19
|
+
:user_agent => 'Rakismet',
|
20
|
+
:referrer => 'http://localhost/referrer'))
|
21
|
+
@model.spam?
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
class Subclass < AkismetModel
|
4
|
+
end
|
5
|
+
|
6
|
+
describe Subclass do
|
7
|
+
it "should inherit parent's rakismet attrs" do
|
8
|
+
Subclass.akismet_attrs.should eql AkismetModel.akismet_attrs # key/value equality
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should get a new copy of parent's rakismet attrs" do
|
12
|
+
Subclass.akismet_attrs.should_not equal AkismetModel.akismet_attrs # object equality
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,34 @@
|
|
1
1
|
require File.expand_path "lib/rakismet"
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
RSpec.configure do |config|
|
4
5
|
config.mock_with :rspec
|
5
6
|
end
|
6
7
|
|
7
|
-
class
|
8
|
-
|
9
|
-
klass = Class.new(self)
|
10
|
-
class_name = "#{self.name}_#{base_name}"
|
11
|
-
instance_eval do
|
12
|
-
const_set(class_name, klass)
|
13
|
-
end
|
14
|
-
klass.instance_eval(&body)
|
15
|
-
klass
|
16
|
-
end
|
8
|
+
class AkismetModel
|
9
|
+
include Rakismet::Model
|
17
10
|
end
|
11
|
+
|
12
|
+
def comment_attrs(attrs={})
|
13
|
+
{ :comment_type => 'test', :author => 'Rails test',
|
14
|
+
:author_email => 'test@test.host', :author_url => 'test.host',
|
15
|
+
:content => 'comment content', :blog => Rakismet.url }.merge(attrs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def akismet_attrs(attrs={})
|
19
|
+
{ :comment_type => 'test', :comment_author_email => 'test@test.host',
|
20
|
+
:comment_author => 'Rails test', :comment_author_url => 'test.host',
|
21
|
+
:comment_content => 'comment content' }.merge(attrs)
|
22
|
+
end
|
23
|
+
|
24
|
+
def request
|
25
|
+
OpenStruct.new(:user_ip => '127.0.0.1',
|
26
|
+
:user_agent => 'RSpec',
|
27
|
+
:referrer => 'http://test.host/referrer')
|
28
|
+
end
|
29
|
+
|
30
|
+
def empty_request
|
31
|
+
OpenStruct.new(:user_ip => nil,
|
32
|
+
:user_agent => nil,
|
33
|
+
:referrer => nil)
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rakismet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Rakismet is the easiest way to integrate Akismet or TypePad's AntiSpam
|
15
15
|
into your Rails app.
|
@@ -32,8 +32,13 @@ files:
|
|
32
32
|
- lib/rakismet/version.rb
|
33
33
|
- rakismet.gemspec
|
34
34
|
- spec/.rspec
|
35
|
+
- spec/models/block_params_spec.rb
|
36
|
+
- spec/models/custom_params_spec.rb
|
37
|
+
- spec/models/extended_params_spec.rb
|
38
|
+
- spec/models/rakismet_model_spec.rb
|
39
|
+
- spec/models/request_params_spec.rb
|
40
|
+
- spec/models/subclass_spec.rb
|
35
41
|
- spec/rakismet_middleware_spec.rb
|
36
|
-
- spec/rakismet_model_spec.rb
|
37
42
|
- spec/rakismet_spec.rb
|
38
43
|
- spec/spec_helper.rb
|
39
44
|
homepage: http://github.com/joshfrench/rakismet
|
@@ -56,12 +61,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
61
|
version: '0'
|
57
62
|
requirements: []
|
58
63
|
rubyforge_project: rakismet
|
59
|
-
rubygems_version: 1.8.
|
64
|
+
rubygems_version: 1.8.22
|
60
65
|
signing_key:
|
61
66
|
specification_version: 3
|
62
67
|
summary: Akismet and TypePad AntiSpam integration for Rails.
|
63
68
|
test_files:
|
69
|
+
- spec/models/block_params_spec.rb
|
70
|
+
- spec/models/custom_params_spec.rb
|
71
|
+
- spec/models/extended_params_spec.rb
|
72
|
+
- spec/models/rakismet_model_spec.rb
|
73
|
+
- spec/models/request_params_spec.rb
|
74
|
+
- spec/models/subclass_spec.rb
|
64
75
|
- spec/rakismet_middleware_spec.rb
|
65
|
-
- spec/rakismet_model_spec.rb
|
66
76
|
- spec/rakismet_spec.rb
|
67
77
|
- spec/spec_helper.rb
|
data/spec/rakismet_model_spec.rb
DELETED
@@ -1,246 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
class AkismetModel
|
5
|
-
include Rakismet::Model
|
6
|
-
end
|
7
|
-
|
8
|
-
class StoredParams
|
9
|
-
include Rakismet::Model
|
10
|
-
attr_accessor :user_ip, :user_agent, :referrer
|
11
|
-
end
|
12
|
-
|
13
|
-
describe AkismetModel do
|
14
|
-
|
15
|
-
before do
|
16
|
-
@model = AkismetModel.new
|
17
|
-
comment_attrs.each_pair { |k,v| @model.stub!(k).and_return(v) }
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should have default mappings" do
|
21
|
-
[:comment_type, :author, :author_email, :author_url, :content].each do |field|
|
22
|
-
fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
|
23
|
-
AkismetModel.akismet_attrs[fieldname].should eql(field)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should have request mappings" do
|
28
|
-
[:user_ip, :user_agent, :referrer].each do |field|
|
29
|
-
AkismetModel.akismet_attrs[field].should eql(field)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should populate comment type" do
|
34
|
-
@model.send(:akismet_data)[:comment_type].should == comment_attrs[:comment_type]
|
35
|
-
end
|
36
|
-
|
37
|
-
mapped_params = { :comment_type => :type2, :author => :author2, :content => :content2,
|
38
|
-
:author_email => :author_email2, :author_url => :author_url2 }
|
39
|
-
|
40
|
-
describe override = AkismetModel.subclass('Override') { rakismet_attrs(mapped_params.dup) } do
|
41
|
-
it "should override default mappings" do
|
42
|
-
[:comment_type, :author, :author_url, :author_email, :content].each do |field|
|
43
|
-
fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
|
44
|
-
override.akismet_attrs[fieldname].should eql(mapped_params[field])
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
extended_params = { :user_ip => :stored_ip, :user_agent => :stored_agent,
|
50
|
-
:referrer => :stored_referrer }
|
51
|
-
|
52
|
-
describe extended = AkismetModel.subclass('Extended') { rakismet_attrs(extended_params.dup) } do
|
53
|
-
|
54
|
-
before do
|
55
|
-
@extended = extended.new
|
56
|
-
attrs = comment_attrs(:stored_ip => '127.0.0.1', :stored_agent => 'RSpec', :stored_referrer => 'http://test.host/')
|
57
|
-
attrs.each_pair { |k,v| @extended.stub!(k).and_return(v) }
|
58
|
-
Rakismet.stub(:request).and_return(empty_request)
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should extend optional mappings" do
|
62
|
-
[:user_ip, :user_agent, :referrer].each do |field|
|
63
|
-
extended.akismet_attrs[field].should eql(extended_params[field])
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe ".spam!" do
|
68
|
-
it "should use stored request vars if available" do
|
69
|
-
Rakismet.should_receive(:akismet_call).
|
70
|
-
with('submit-spam', akismet_attrs(:user_ip => '127.0.0.1', :user_agent => 'RSpec',
|
71
|
-
:referrer => 'http://test.host/'))
|
72
|
-
@extended.spam!
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe ".ham!" do
|
77
|
-
it "should use stored request vars if available" do
|
78
|
-
Rakismet.should_receive(:akismet_call).
|
79
|
-
with('submit-ham', akismet_attrs(:user_ip => '127.0.0.1', :user_agent => 'RSpec',
|
80
|
-
:referrer => 'http://test.host/'))
|
81
|
-
@extended.ham!
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
@proc = proc { author.reverse }
|
87
|
-
block_params = { :author => @proc }
|
88
|
-
|
89
|
-
describe block = AkismetModel.subclass('Block') { rakismet_attrs(block_params) } do
|
90
|
-
|
91
|
-
before do
|
92
|
-
@block = block.new
|
93
|
-
comment_attrs.each_pair { |k,v| @block.stub!(k).and_return(v) }
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should accept a block" do
|
97
|
-
block.akismet_attrs[:author].should eql(@proc)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should eval block with self = instance" do
|
101
|
-
data = @block.send(:akismet_data)
|
102
|
-
data[:comment_author].should eql(comment_attrs[:author].reverse)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
extra_params = { :extra => :extra, :another => lambda { } }
|
107
|
-
|
108
|
-
describe extra = AkismetModel.subclass('ExtraParams') { rakismet_attrs(extra_params.dup) } do
|
109
|
-
it "should map additional attributes" do
|
110
|
-
[:extra, :another].each do |field|
|
111
|
-
extra.akismet_attrs[field].should eql(extra_params[field])
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
string_params = { :comment_type => 'pingback' }
|
117
|
-
|
118
|
-
describe string = AkismetModel.subclass('StringParams') { rakismet_attrs(string_params) } do
|
119
|
-
|
120
|
-
before do
|
121
|
-
@string = string.new
|
122
|
-
comment_attrs.each_pair { |k,v| @string.stub!(k).and_return(v) }
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should map string attributes" do
|
126
|
-
@string.send(:akismet_data)[:comment_type].should eql('pingback')
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe ".spam?" do
|
131
|
-
|
132
|
-
it "should use request variables from Rakismet.request if absent in model" do
|
133
|
-
[:user_ip, :user_agent, :referrer].each do |field|
|
134
|
-
@model.should_not respond_to(:field)
|
135
|
-
end
|
136
|
-
Rakismet.stub!(:request).and_return(request)
|
137
|
-
Rakismet.should_receive(:akismet_call).
|
138
|
-
with('comment-check', akismet_attrs.merge(:user_ip => '127.0.0.1',
|
139
|
-
:user_agent => 'RSpec',
|
140
|
-
:referrer => 'http://test.host/referrer'))
|
141
|
-
@model.spam?
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should cache result of #spam?" do
|
145
|
-
Rakismet.should_receive(:akismet_call).once
|
146
|
-
@model.spam?
|
147
|
-
@model.spam?
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should be true if comment is spam" do
|
151
|
-
Rakismet.stub!(:akismet_call).and_return('true')
|
152
|
-
@model.should be_spam
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should be false if comment is not spam" do
|
156
|
-
Rakismet.stub!(:akismet_call).and_return('false')
|
157
|
-
@model.should_not be_spam
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should set akismet_response" do
|
161
|
-
Rakismet.stub!(:akismet_call).and_return('response')
|
162
|
-
@model.spam?
|
163
|
-
@model.akismet_response.should eql('response')
|
164
|
-
end
|
165
|
-
|
166
|
-
it "should not throw an error if request vars are missing" do
|
167
|
-
Rakismet.stub!(:request).and_return(empty_request)
|
168
|
-
lambda { @model.spam? }.should_not raise_error(NoMethodError)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
describe StoredParams do
|
173
|
-
before do
|
174
|
-
@model = StoredParams.new
|
175
|
-
comment_attrs.each_pair { |k,v| @model.stub!(k).and_return(v) }
|
176
|
-
end
|
177
|
-
|
178
|
-
it "should use local values even if Rakismet.request is populated" do
|
179
|
-
Rakismet.stub!(:request).and_return(request)
|
180
|
-
@model.user_ip = '192.168.0.1'
|
181
|
-
@model.user_agent = 'Rakismet'
|
182
|
-
@model.referrer = 'http://localhost/referrer'
|
183
|
-
|
184
|
-
Rakismet.should_receive(:akismet_call).
|
185
|
-
with('comment-check', akismet_attrs.merge(:user_ip => '192.168.0.1',
|
186
|
-
:user_agent => 'Rakismet',
|
187
|
-
:referrer => 'http://localhost/referrer'))
|
188
|
-
@model.spam?
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
describe ".spam!" do
|
193
|
-
it "should call Base.akismet_call with submit-spam" do
|
194
|
-
Rakismet.should_receive(:akismet_call).with('submit-spam', akismet_attrs)
|
195
|
-
@model.spam!
|
196
|
-
end
|
197
|
-
|
198
|
-
it "should mutate #spam?" do
|
199
|
-
Rakismet.stub!(:akismet_call)
|
200
|
-
@model.instance_variable_set(:@_spam, false)
|
201
|
-
@model.spam!
|
202
|
-
@model.should be_spam
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
describe ".ham!" do
|
207
|
-
it "should call Base.akismet_call with submit-ham" do
|
208
|
-
Rakismet.should_receive(:akismet_call).with('submit-ham', akismet_attrs)
|
209
|
-
@model.ham!
|
210
|
-
end
|
211
|
-
|
212
|
-
it "should mutate #spam?" do
|
213
|
-
Rakismet.stub!(:akismet_call)
|
214
|
-
@model.instance_variable_set(:@_spam, true)
|
215
|
-
@model.ham!
|
216
|
-
@model.should_not be_spam
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
private
|
221
|
-
|
222
|
-
def comment_attrs(attrs={})
|
223
|
-
{ :comment_type => 'test', :author => 'Rails test',
|
224
|
-
:author_email => 'test@test.host', :author_url => 'test.host',
|
225
|
-
:content => 'comment content', :blog => Rakismet.url }.merge(attrs)
|
226
|
-
end
|
227
|
-
|
228
|
-
def akismet_attrs(attrs={})
|
229
|
-
{ :comment_type => 'test', :comment_author_email => 'test@test.host',
|
230
|
-
:comment_author => 'Rails test', :comment_author_url => 'test.host',
|
231
|
-
:comment_content => 'comment content' }.merge(attrs)
|
232
|
-
end
|
233
|
-
|
234
|
-
let(:request) {
|
235
|
-
OpenStruct.new(:user_ip => '127.0.0.1',
|
236
|
-
:user_agent => 'RSpec',
|
237
|
-
:referrer => 'http://test.host/referrer')
|
238
|
-
}
|
239
|
-
|
240
|
-
let(:empty_request) {
|
241
|
-
OpenStruct.new(:user_ip => nil,
|
242
|
-
:user_agent => nil,
|
243
|
-
:referrer => nil)
|
244
|
-
}
|
245
|
-
|
246
|
-
end
|