Commit ecc9032af5ecf609e7d7c4be14ec4d0d8cb70de3

Authored by Braulio Bhavamitra
1 parent e6c893a2

rails4: removed unused rakismet from vendor

It is only used by anti_spam plugin and it is specified on its Gemfile
vendor/plugins/rakismet/CHANGELOG
... ... @@ -1,35 +0,0 @@
1   -* Clean up gemspec and load paths [Steven Harman]
2   -* Add Akismet is_test param [Steven Harman]
3   -* Add Akismet user_role attribute [Steven Harman]
4   -= 1.2.1
5   -* Fix deprecated usage of HTTPResponse for Ruby 1.9.3 [Leonid Shevtsov]
6   -= 1.2.0
7   -* Rakismet attribute mappings are now inheritable
8   -= 1.1.2
9   -* Explicitly load version
10   -= 1.1.1
11   -* Fix SafeBuffer error under Rails 3.0.8 and 3.0.9 [Brandon Ferguson]
12   -* Readme cleanup [Zeke Sikelianos]
13   -* Drop Jeweler in favor of Bundler's gem tasks
14   -= 1.1.0
15   -* Add HTTP Proxy support [Francisco Trindade]
16   -= 1.0.1
17   -* Fix hash access for Ruby 1.9 [Alex Crichton]
18   -= 1.0.0
19   -* Update for Rails 3
20   -* Remove filters and replace with middleware
21   -* Remove initializers and replace with Railtie
22   -= 0.4.0
23   -* Rakismet is no longer injected into ActiveRecord or ActionController
24   -* API changes to support newly decoupled modules
25   -* Use Jeweler to manage gemspec
26   -= 0.3.6
27   -* Allow attributes to fall through to methods or AR attributes
28   -= 0.3.5
29   -* Added gemspec and rails/init.rb so rakismet can work as a gem [Michael Air]
30   -* Added generator template and manifest [Michael Air]
31   -= 0.3.0
32   -* Abstract out Rakismet version string
33   -* Set default Akismet Host
34   -* Abstract out the Akismet host [Mike Burns]
35   -* Started keeping a changelog :P
vendor/plugins/rakismet/Gemfile
... ... @@ -1,3 +0,0 @@
1   -source "http://rubygems.org"
2   -
3   -gemspec
vendor/plugins/rakismet/MIT-LICENSE
... ... @@ -1,20 +0,0 @@
1   -Copyright (c) 2008 Josh French
2   -
3   -Permission is hereby granted, free of charge, to any person obtaining
4   -a copy of this software and associated documentation files (the
5   -"Software"), to deal in the Software without restriction, including
6   -without limitation the rights to use, copy, modify, merge, publish,
7   -distribute, sublicense, and/or sell copies of the Software, and to
8   -permit persons to whom the Software is furnished to do so, subject to
9   -the following conditions:
10   -
11   -The above copyright notice and this permission notice shall be
12   -included in all copies or substantial portions of the Software.
13   -
14   -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15   -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16   -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17   -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18   -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19   -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20   -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
vendor/plugins/rakismet/README.md
... ... @@ -1,229 +0,0 @@
1   -Rakismet
2   -========
3   -
4   -**Akismet** (<http://akismet.com/>) is a collaborative spam filtering service.
5   -**Rakismet** is easy Akismet integration with Rails and rack apps. TypePad's
6   -AntiSpam service and generic Akismet endpoints are supported.
7   -
8   -Compatibility
9   -=============
10   -
11   -**Rakismet >= 1.0.0** work with Rails 3 and other Rack-based frameworks.
12   -
13   -**Rakismet <= 0.4.2** is compatible with Rails 2.
14   -
15   -Getting Started
16   -===============
17   -
18   -Once you've installed the Rakismet gem and added it to your application's Gemfile,
19   -you'll need an API key. Head on over to http://akismet.com/signup/ and sign up
20   -for a new username.
21   -
22   -Configure the Rakismet key and the URL of your application by setting the following
23   -in application.rb:
24   -
25   -```ruby
26   -config.rakismet.key = 'your wordpress key'
27   -config.rakismet.url = 'http://yourdomain.com/'
28   -```
29   -
30   -or an initializer, for example `config/initializers/rakismet.rb`:
31   -
32   -```ruby
33   -YourApp::Application.config.rakismet.key = 'your wordpress key'
34   -YourApp::Application.config.rakismet.url = 'http://yourdomain.com/'
35   -```
36   -
37   -If you wish to use another Akismet-compatible API provider such as TypePad's
38   -antispam service, you'll also need to set `config.rakismet.host` to your service
39   -provider's endpoint.
40   -
41   -If you want to use a proxy to access akismet (i.e. your application is behind a
42   -firewall), set the proxy_host and proxy_port option.
43   -
44   -```ruby
45   -config.rakismet.proxy_host = 'http://yourdomain.com/'
46   -config.rakismet.proxy_port = '8080'
47   -```
48   -
49   -Checking For Spam
50   ------------------
51   -
52   -First, introduce Rakismet to your model:
53   -
54   -```ruby
55   -class Comment
56   - include Rakismet::Model
57   -end
58   -```
59   -
60   -With Rakismet mixed in to your model, you'll get three instance methods for interacting with
61   -Akismet:
62   -
63   - * `spam?` submits the comment to Akismet and returns true if Akismet thinks the comment is spam, false if not.
64   - * `ham!` resubmits a valid comment that Akismet erroneously marked as spam (marks it as a false positive.)
65   - * `spam!` resubmits a spammy comment that Akismet missed (marks it as a false negative.)
66   -
67   -The `ham!` and `spam!` methods will change the value of `spam?` but their
68   -primary purpose is to send feedback to Akismet. The service works best when you
69   -help correct the rare mistake; please consider using these methods if you're
70   -moderating comments or otherwise reviewing the Akismet responses.
71   -
72   -Configuring Your Model
73   -----------------------
74   -
75   -Rakismet sends the following information to the spam-hungry robots at Akismet:
76   -
77   - author : name submitted with the comment
78   - author_url : URL submitted with the comment
79   - author_email : email submitted with the comment
80   - comment_type : Defaults to comment but you can set it to trackback, pingback, or something more appropriate
81   - content : the content submitted
82   - permalink : the permanent URL for the entry the comment belongs to
83   - user_ip : IP address used to submit this comment
84   - user_agent : user agent string
85   - referrer : referring URL (note the spelling)
86   -
87   -By default, Rakismet just looks for attributes or methods on your class that
88   -match these names. You don't have to have accessors that match these exactly,
89   -however. If yours differ, just tell Rakismet what to call them:
90   -
91   -```ruby
92   -class Comment
93   - include Rakismet::Model
94   - attr_accessor :commenter_name, :commenter_email
95   - rakismet_attrs :author => :commenter_name, :author_email => :commenter_email
96   -end
97   -```
98   -
99   -Or you can pass in a proc, to access associations:
100   -
101   -```ruby
102   -class Comment < ActiveRecord::Base
103   - include Rakismet::Model
104   - belongs_to :author
105   - rakismet_attrs :author => proc { author.name },
106   - :author_email => proc { author.email }
107   -end
108   -```
109   -
110   -You can even hard-code specific fields:
111   -
112   -```ruby
113   -class Trackback
114   - include Rakismet::Model
115   - rakismet_attrs :comment_type => "trackback"
116   -end
117   -```
118   -
119   -Optional Request Variables
120   ---------------------------
121   -
122   -Akismet wants certain information about the request environment: remote IP, the
123   -user agent string, and the HTTP referer when available. Normally, Rakismet
124   -asks your model for these. Storing this information on your model allows you to
125   -call the `spam?` method at a later time. For instance, maybe you're storing your
126   -comments in an administrative queue or processing them with a background job.
127   -
128   -You don't need to have these three attributes on your model, however. If you
129   -choose to omit them, Rakismet will instead look at the current request (if one
130   -exists) and take the values from the request object instead.
131   -
132   -This means that if you are **not storing the request variables**, you must call
133   -`spam?` from within the controller action that handles comment submissions. That
134   -way the IP, user agent, and referer will belong to the person submitting the
135   -comment. If you're not storing the request variables and you call `spam?` at a
136   -later time, the request information will be missing or invalid and Akismet won't
137   -be able to do its job properly.
138   -
139   -If you've decided to handle the request variables yourself, you can disable the
140   -middleware responsible for tracking the request information by adding this to
141   -your app initialization:
142   -
143   -```ruby
144   -config.rakismet.use_middleware = false
145   -```
146   -
147   -Testing
148   --------
149   -
150   -Rakismet can be configued to tell Akismet that it should operate in test mode -
151   -so Akismet will not change its behavior based on any test API calls, meaning
152   -they will have no training effect. That means your tests can be somewhat
153   -repeatable in the sense that one test won't influence subsequent calls.
154   -
155   -You can configure Rakismet for test mode via application.rb:
156   -
157   -```ruby
158   -config.rakismet.test = false # <- default
159   -config.rakismet.test = true
160   -```
161   -
162   -Or via an initializer:
163   -
164   -```ruby
165   -YourApp::Application.config.rakismet.test = false # <- default
166   -YourApp::Application.config.rakismet.test = true
167   -```
168   -
169   -**NOTE**: When running in Rails, Rakismet will run in test mode when your Rails
170   -environment is `test` or `development`, unless explictly configured otherwise.
171   -Outside of Rails Rakismet defaults to test mode turned **off**.
172   -
173   -
174   -Verifying Responses
175   --------------------
176   -
177   -If you want to see what's happening behind the scenes, after you call one of
178   -`@comment.spam?`, `@comment.spam!` or `@comment.ham!` you can check
179   -`@comment.akismet_response`.
180   -
181   -This will contain the last response from the Akismet server. In the case of
182   -`spam?` it should be `true` or `false.` For `spam!` and `ham!` it should be
183   -`Feedback received.` If Akismet returned an error instead (e.g. if you left out
184   -some required information) this will contain the error message.
185   -
186   -FAQ
187   -===
188   -
189   -Why does Akismet think all of my test data is spam?
190   ----------------------------------------------------
191   -
192   -Akismet needs enough information to decide if your test data is spam or not.
193   -Try to supply as much as possible, especially the author name and request
194   -variables.
195   -
196   -How can I simulate a spam submission?
197   --------------------------------------
198   -
199   -Most people have the opposite problem, where Akismet doesn't think anything is
200   -spam. The only guaranteed way to trigger a positive spam response is to set the
201   -comment author to "viagra-test-123".
202   -
203   -If you've done this and `spam?` is still returning false, you're probably
204   -missing the user IP or one of the key/url config variables. One way to check is
205   -to call `@comment.akismet_response`. If you are missing a required field or
206   -there was another error, this will hold the Akismet error message. If your comment
207   -was processed normally, this value will simply be `true` or `false`.
208   -
209   -Can I use Rakismet with a different ORM or framework?
210   ------------------------------------------------------
211   -
212   -Sure. Rakismet doesn't care what your persistence layer is. It will work with
213   -Datamapper, a NoSQL store, or whatever next month's DB flavor is.
214   -
215   -Rakismet also has no dependencies on Rails or any of its components, and only
216   -uses a small Rack middleware object to do some of its magic. Depending on your
217   -framework, you may have to modify this slightly and/or manually place it in your
218   -stack.
219   -
220   -You'll also need to set a few config variables by hand. Instead of
221   -`config.rakismet.key`, `config.rakismet.url`, and `config.rakismet.host`, set
222   -these values directly with `Rakismet.key`, `Rakismet.url`, and `Rakismet.host`.
223   -
224   ----------------------------------------------------------------------------
225   -
226   -If you have any implementation or usage questions, don't hesitate to get in
227   -touch: josh@vitamin-j.com.
228   -
229   -Copyright (c) 2008 Josh French, released under the MIT license
vendor/plugins/rakismet/Rakefile
... ... @@ -1,9 +0,0 @@
1   -require 'bundler'
2   -Bundler::GemHelper.install_tasks
3   -
4   -require 'rspec/core/rake_task'
5   -RSpec::Core::RakeTask.new do |spec|
6   - spec.rspec_opts = ["--color", "--format progress"]
7   -end
8   -
9   -task :default => :spec
10 0 \ No newline at end of file
vendor/plugins/rakismet/lib/rakismet.rb
... ... @@ -1,92 +0,0 @@
1   -require 'net/http'
2   -require 'uri'
3   -require 'cgi'
4   -require 'yaml'
5   -
6   -require 'rakismet/model'
7   -require 'rakismet/middleware'
8   -require 'rakismet/version'
9   -
10   -if defined?(Rails) && Rails::VERSION::STRING > '3.2.0'
11   - require 'rakismet/railtie.rb'
12   - $stderr.puts "W: on Rails 3, this vendored version of rakismet should be replaced by a proper dependency"
13   -end
14   -
15   -module Rakismet
16   - Request = Struct.new(:user_ip, :user_agent, :referrer)
17   - Undefined = Class.new(NameError)
18   -
19   - class << self
20   - attr_accessor :key, :url, :host, :proxy_host, :proxy_port, :test
21   -
22   - def request
23   - @request ||= Request.new
24   - end
25   -
26   - def set_request_vars(env)
27   - request.user_ip, request.user_agent, request.referrer =
28   - env['REMOTE_ADDR'], env['HTTP_USER_AGENT'], env['HTTP_REFERER']
29   - end
30   -
31   - def clear_request
32   - @request = Request.new
33   - end
34   -
35   - def headers
36   - @headers ||= begin
37   - user_agent = "Rakismet/#{Rakismet::VERSION}"
38   - user_agent = "Rails/#{Rails.version} | " + user_agent if defined?(Rails)
39   - { 'User-Agent' => user_agent, 'Content-Type' => 'application/x-www-form-urlencoded' }
40   - end
41   - end
42   -
43   - def validate_key
44   - validate_config
45   - akismet = URI.parse(verify_url)
46   - response = Net::HTTP::Proxy(proxy_host, proxy_port).start(akismet.host) do |http|
47   - data = "key=#{Rakismet.key}&blog=#{Rakismet.url}"
48   - http.post(akismet.path, data, Rakismet.headers)
49   - end
50   - @valid_key = (response.body == 'valid')
51   - end
52   -
53   - def valid_key?
54   - @valid_key == true
55   - end
56   -
57   - def akismet_call(function, args={})
58   - validate_config
59   - args.merge!(:blog => Rakismet.url, :is_test => Rakismet.test_mode)
60   - akismet = URI.parse(call_url(function))
61   - response = Net::HTTP::Proxy(proxy_host, proxy_port).start(akismet.host) do |http|
62   - params = args.map do |k,v|
63   - param = v.class < String ? v.to_str : v.to_s # for ActiveSupport::SafeBuffer and Nil, respectively
64   - "#{k}=#{CGI.escape(param)}"
65   - end
66   - http.post(akismet.path, params.join('&'), Rakismet.headers)
67   - end
68   - response.body
69   - end
70   -
71   - protected
72   -
73   - def verify_url
74   - "http://#{Rakismet.host}/1.1/verify-key"
75   - end
76   -
77   - def call_url(function)
78   - "http://#{Rakismet.key}.#{Rakismet.host}/1.1/#{function}"
79   - end
80   -
81   - def validate_config
82   - raise Undefined, "Rakismet.key is not defined" if Rakismet.key.nil? || Rakismet.key.empty?
83   - raise Undefined, "Rakismet.url is not defined" if Rakismet.url.nil? || Rakismet.url.empty?
84   - raise Undefined, "Rakismet.host is not defined" if Rakismet.host.nil? || Rakismet.host.empty?
85   - end
86   -
87   - def test_mode
88   - test ? 1 : 0
89   - end
90   - end
91   -
92   -end
vendor/plugins/rakismet/lib/rakismet/middleware.rb
... ... @@ -1,16 +0,0 @@
1   -module Rakismet
2   - class Middleware
3   -
4   - def initialize(app)
5   - @app = app
6   - end
7   -
8   - def call(env)
9   - Rakismet.set_request_vars(env)
10   - response = @app.call(env)
11   - Rakismet.clear_request
12   - response
13   - end
14   -
15   - end
16   -end
vendor/plugins/rakismet/lib/rakismet/model.rb
... ... @@ -1,86 +0,0 @@
1   -module Rakismet
2   - module Model
3   -
4   - def self.included(base)
5   - base.class_eval do
6   - attr_accessor :akismet_response
7   - class << self; attr_accessor :akismet_attrs; end
8   - extend ClassMethods
9   - include InstanceMethods
10   - self.rakismet_attrs
11   - end
12   - end
13   -
14   - module ClassMethods
15   - def rakismet_attrs(args={})
16   - self.akismet_attrs ||= {}
17   - [:comment_type, :author, :author_url, :author_email, :content, :user_role].each do |field|
18   - # clunky, but throwing around +type+ will break your heart
19   - fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
20   - self.akismet_attrs[fieldname] = args.delete(field) || field
21   - end
22   - [:user_ip, :user_agent, :referrer].each do |field|
23   - self.akismet_attrs[field] = args.delete(field) || field
24   - end
25   - args.each_pair do |f,v|
26   - self.akismet_attrs[f] = v
27   - end
28   - end
29   -
30   - def inherited(subclass)
31   - super
32   - subclass.rakismet_attrs akismet_attrs.dup
33   - end
34   - end
35   -
36   - module InstanceMethods
37   - def spam?
38   - if instance_variable_defined? :@_spam
39   - @_spam
40   - else
41   - data = akismet_data
42   - self.akismet_response = Rakismet.akismet_call('comment-check', data)
43   - @_spam = self.akismet_response == 'true'
44   - end
45   - end
46   -
47   - def spam!
48   - Rakismet.akismet_call('submit-spam', akismet_data)
49   - @_spam = true
50   - end
51   -
52   - def ham!
53   - Rakismet.akismet_call('submit-ham', akismet_data)
54   - @_spam = false
55   - end
56   -
57   - private
58   -
59   - def akismet_data
60   - akismet = self.class.akismet_attrs.keys.inject({}) do |data,attr|
61   - mapped_field = self.class.akismet_attrs[attr]
62   - data.merge attr => if mapped_field.is_a?(Proc)
63   - instance_eval(&mapped_field)
64   - elsif !mapped_field.nil? && respond_to?(mapped_field)
65   - send(mapped_field)
66   - elsif not [:comment_type, :author, :author_email,
67   - :author_url, :content, :user_role,
68   - :user_ip, :referrer,
69   - :user_agent].include?(mapped_field)
70   - # we've excluded any fields that appear to
71   - # have their default unmapped values
72   - mapped_field
73   - elsif respond_to?(attr)
74   - send(attr)
75   - elsif Rakismet.request.respond_to?(attr)
76   - Rakismet.request.send(attr)
77   - end
78   - end
79   - akismet.delete_if { |k,v| v.nil? || v.empty? }
80   - akismet[:comment_type] ||= 'comment'
81   - akismet
82   - end
83   - end
84   -
85   - end
86   -end
vendor/plugins/rakismet/lib/rakismet/railtie.rb
... ... @@ -1,22 +0,0 @@
1   -require 'rails'
2   -require 'rakismet'
3   -
4   -module Rakismet
5   - class Railtie < Rails::Railtie
6   -
7   - config.rakismet = ActiveSupport::OrderedOptions.new
8   - config.rakismet.host = 'rest.akismet.com'
9   - config.rakismet.use_middleware = true
10   -
11   - initializer 'rakismet.setup', :after => :load_config_initializers do |app|
12   - Rakismet.key = app.config.rakismet[:key]
13   - Rakismet.url = app.config.rakismet[:url]
14   - Rakismet.host = app.config.rakismet[:host]
15   - Rakismet.proxy_host = app.config.rakismet[:proxy_host]
16   - Rakismet.proxy_port = app.config.rakismet[:proxy_port]
17   - Rakismet.test = app.config.rakismet.fetch(:test) { Rails.env.test? || Rails.env.development? }
18   - app.middleware.use Rakismet::Middleware if app.config.rakismet.use_middleware
19   - end
20   -
21   - end
22   -end
vendor/plugins/rakismet/lib/rakismet/version.rb
... ... @@ -1,3 +0,0 @@
1   -module Rakismet
2   - VERSION = "1.2.1"
3   -end
vendor/plugins/rakismet/rakismet.gemspec
... ... @@ -1,25 +0,0 @@
1   -# -*- encoding: utf-8 -*-
2   -require File.expand_path('../lib/rakismet/version', __FILE__)
3   -
4   -Gem::Specification.new do |s|
5   - s.name = "rakismet"
6   - s.version = Rakismet::VERSION
7   - s.platform = Gem::Platform::RUBY
8   - s.authors = ["Josh French"]
9   - s.email = "josh@vitamin-j.com"
10   - s.homepage = "http://github.com/joshfrench/rakismet"
11   - s.summary = "Akismet and TypePad AntiSpam integration for Rails."
12   - s.description = "Rakismet is the easiest way to integrate Akismet or TypePad's AntiSpam into your Rails app."
13   - s.date = "2012-04-22"
14   -
15   - s.rubyforge_project = "rakismet"
16   - s.add_development_dependency "rake"
17   - s.add_development_dependency "rspec", "~> 2.11"
18   -
19   - s.files = `git ls-files`.split("\n")
20   - s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21   - s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22   - s.require_paths = ["lib"]
23   - s.extra_rdoc_files = ["README.md"]
24   -end
25   -
vendor/plugins/rakismet/spec/.rspec
... ... @@ -1 +0,0 @@
1   ---color
vendor/plugins/rakismet/spec/models/block_params_spec.rb
... ... @@ -1,25 +0,0 @@
1   -require '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   - BlockAkismetModel.akismet_attrs[:comment_author].should eql(PROC)
19   - end
20   -
21   - it "should eval block with self = instance" do
22   - data = @block.send(:akismet_data)
23   - data[:comment_author].should eql(comment_attrs[:author].reverse)
24   - end
25   -end
vendor/plugins/rakismet/spec/models/custom_params_spec.rb
... ... @@ -1,20 +0,0 @@
1   -require 'spec_helper'
2   -
3   -MAPPED_PARAMS = { :comment_type => :type2, :author => :author2, :content => :content2,
4   - :author_email => :author_email2, :author_url => :author_url2,
5   - :user_role => :user_role2 }
6   -
7   -class CustomAkismetModel
8   - include Rakismet::Model
9   - rakismet_attrs MAPPED_PARAMS.dup
10   -end
11   -
12   -
13   -describe CustomAkismetModel do
14   - it "should override default mappings" do
15   - [:comment_type, :author, :author_url, :author_email, :content, :user_role].each do |field|
16   - fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern
17   - CustomAkismetModel.akismet_attrs[fieldname].should eql(MAPPED_PARAMS[field])
18   - end
19   - end
20   -end
vendor/plugins/rakismet/spec/models/extended_params_spec.rb
... ... @@ -1,16 +0,0 @@
1   -require '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
vendor/plugins/rakismet/spec/models/rakismet_model_spec.rb
... ... @@ -1,98 +0,0 @@
1   -require '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, :user_role].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
vendor/plugins/rakismet/spec/models/request_params_spec.rb
... ... @@ -1,23 +0,0 @@
1   -require '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
vendor/plugins/rakismet/spec/models/subclass_spec.rb
... ... @@ -1,14 +0,0 @@
1   -require '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
vendor/plugins/rakismet/spec/rakismet_middleware_spec.rb
... ... @@ -1,27 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe Rakismet::Middleware do
4   -
5   - let(:env) { { 'REMOTE_ADDR' => '127.0.0.1', 'HTTP_USER_AGENT' => 'RSpec', 'HTTP_REFERER' => 'http://test.host/referrer' } }
6   - let(:app) { double(:app, :call => nil) }
7   - let(:request) { double(:request).as_null_object }
8   -
9   - before do
10   - @middleware = Rakismet::Middleware.new(app)
11   - end
12   -
13   - it "should set set Rakismet.request variables" do
14   - Rakismet.stub(:request).and_return(request)
15   - request.should_receive(:user_ip=).with('127.0.0.1')
16   - request.should_receive(:user_agent=).with('RSpec')
17   - request.should_receive(:referrer=).with('http://test.host/referrer')
18   - @middleware.call(env)
19   - end
20   -
21   - it "should clear Rakismet.request after request is complete" do
22   - @middleware.call(env)
23   - Rakismet.request.user_ip.should be_nil
24   - Rakismet.request.user_agent.should be_nil
25   - Rakismet.request.referrer.should be_nil
26   - end
27   -end
vendor/plugins/rakismet/spec/rakismet_spec.rb
... ... @@ -1,123 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe Rakismet do
4   -
5   - def mock_response(body)
6   - double(:response, :body => body)
7   - end
8   - let(:http) { double(:http, :post => mock_response('akismet response')) }
9   -
10   - before do
11   - Rakismet.key = 'dummy-key'
12   - Rakismet.url = 'test.localhost'
13   - Rakismet.host = 'endpoint.localhost'
14   - end
15   -
16   - describe "proxy host" do
17   - it "should have proxy host and port as nil by default" do
18   - Rakismet.proxy_host.should be_nil
19   - Rakismet.proxy_port.should be_nil
20   - end
21   - end
22   -
23   - describe ".validate_config" do
24   - it "should raise an error if key is not found" do
25   - Rakismet.key = ''
26   - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined)
27   - end
28   -
29   - it "should raise an error if url is not found" do
30   - Rakismet.url = ''
31   - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined)
32   - end
33   -
34   - it "should raise an error if host is not found" do
35   - Rakismet.host = ''
36   - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined)
37   - end
38   - end
39   -
40   - describe ".validate_key" do
41   - before (:each) do
42   - @proxy = mock(Net::HTTP)
43   - Net::HTTP.stub!(:Proxy).and_return(@proxy)
44   - end
45   -
46   - it "should use proxy host and port" do
47   - Rakismet.proxy_host = 'proxy_host'
48   - Rakismet.proxy_port = 'proxy_port'
49   - @proxy.stub!(:start).and_return(mock_response('valid'))
50   - Net::HTTP.should_receive(:Proxy).with('proxy_host', 'proxy_port').and_return(@proxy)
51   - Rakismet.validate_key
52   - end
53   -
54   - it "should set @@valid_key = true if key is valid" do
55   - @proxy.stub!(:start).and_return(mock_response('valid'))
56   - Rakismet.validate_key
57   - Rakismet.valid_key?.should be_true
58   - end
59   -
60   - it "should set @@valid_key = false if key is invalid" do
61   - @proxy.stub!(:start).and_return(mock_response('invalid'))
62   - Rakismet.validate_key
63   - Rakismet.valid_key?.should be_false
64   - end
65   -
66   - it "should build url with host" do
67   - host = "api.antispam.typepad.com"
68   - Rakismet.host = host
69   - @proxy.should_receive(:start).with(host).and_yield(http)
70   - Rakismet.validate_key
71   - end
72   - end
73   -
74   - describe ".akismet_call" do
75   - before do
76   - @proxy = mock(Net::HTTP)
77   - Net::HTTP.stub!(:Proxy).and_return(@proxy)
78   - @proxy.stub(:start).and_yield(http)
79   - end
80   -
81   - it "should use proxy host and port" do
82   - Rakismet.proxy_host = 'proxy_host'
83   - Rakismet.proxy_port = 'proxy_port'
84   - @proxy.stub!(:start).and_return(mock_response('valid'))
85   - Net::HTTP.should_receive(:Proxy).with('proxy_host', 'proxy_port').and_return(@proxy)
86   - Rakismet.send(:akismet_call, 'bogus-function')
87   - end
88   -
89   - it "should build url with API key for the correct host" do
90   - host = 'api.antispam.typepad.com'
91   - Rakismet.host = host
92   - @proxy.should_receive(:start).with("#{Rakismet.key}.#{host}")
93   - Rakismet.send(:akismet_call, 'bogus-function')
94   - end
95   -
96   - it "should post data to named function" do
97   - http.should_receive(:post).with('/1.1/bogus-function', %r(foo=#{CGI.escape 'escape//this'}), Rakismet.headers)
98   - Rakismet.send(:akismet_call, 'bogus-function', { :foo => 'escape//this' })
99   - end
100   -
101   - it "should default to not being in test mode" do
102   - http.should_receive(:post).with(anything, %r(is_test=0), anything)
103   - Rakismet.send(:akismet_call, 'bogus-function')
104   - end
105   -
106   - it "should be in test mode when configured" do
107   - Rakismet.test = true
108   - http.should_receive(:post).with(anything, %r(is_test=1), anything)
109   - Rakismet.send(:akismet_call, 'bogus-function')
110   - end
111   -
112   - it "should return response.body" do
113   - Rakismet.send(:akismet_call, 'bogus-function').should eql('akismet response')
114   - end
115   -
116   - it "should build query string when params are nil" do
117   - lambda {
118   - Rakismet.send(:akismet_call, 'bogus-function', { :nil_param => nil })
119   - }.should_not raise_error(NoMethodError)
120   - end
121   - end
122   -
123   -end
vendor/plugins/rakismet/spec/spec_helper.rb
... ... @@ -1,34 +0,0 @@
1   -require File.expand_path "lib/rakismet"
2   -require 'ostruct'
3   -
4   -RSpec.configure do |config|
5   - config.mock_with :rspec
6   -end
7   -
8   -class AkismetModel
9   - include Rakismet::Model
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
35 0 \ No newline at end of file