tarantula 0.5.0 → 0.5.1
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
CHANGED
data/ci/rails2.gemfile
CHANGED
data/ci/rails3.gemfile
CHANGED
@@ -11,8 +11,8 @@ module Relevance
|
|
11
11
|
|
12
12
|
def self.rails_integration_test(integration_test, options = {})
|
13
13
|
t = Crawler.new
|
14
|
-
t.max_url_length = options[:max_url_length] if options[:max_url_length]
|
15
|
-
t.proxy = RailsIntegrationProxy.new(integration_test)
|
14
|
+
t.max_url_length = options[:max_url_length] if options[:max_url_length]
|
15
|
+
t.proxy = RailsIntegrationProxy.new(integration_test)
|
16
16
|
t.handlers << HtmlDocumentHandler.new(t)
|
17
17
|
t.handlers << InvalidHtmlHandler.new
|
18
18
|
t.log_grabber = Relevance::Tarantula::LogGrabber.new(File.join(rails_root, "log/test.log"))
|
@@ -33,22 +33,36 @@ module Relevance
|
|
33
33
|
|
34
34
|
[:get, :post, :put, :delete].each do |verb|
|
35
35
|
define_method(verb) do |url, *args|
|
36
|
-
|
37
|
-
|
36
|
+
response = nil
|
37
|
+
begin
|
38
|
+
integration_test.send(verb, url, *args)
|
39
|
+
response = integration_test.response
|
40
|
+
rescue *error_classes => e
|
41
|
+
response = integration_test.response
|
42
|
+
alter_response(response, '404', e.message + "\n\n" + e.backtrace.join("\n"))
|
43
|
+
rescue Exception => e
|
44
|
+
response = integration_test.response
|
45
|
+
alter_response(response, '500', e.message + "\n\n" + e.backtrace.join("\n"))
|
46
|
+
end
|
38
47
|
patch_response(url, response)
|
39
48
|
response
|
40
49
|
end
|
41
50
|
end
|
42
51
|
|
52
|
+
def alter_response(response, code, body)
|
53
|
+
response.meta.attr_accessor :code
|
54
|
+
response.code = code
|
55
|
+
response.body = body
|
56
|
+
response
|
57
|
+
end
|
58
|
+
|
43
59
|
def patch_response(url, response)
|
44
60
|
if response.code == '404'
|
45
61
|
if File.exist?(static_content_path(url))
|
46
62
|
case ext = File.extension(url)
|
47
63
|
when /html|te?xt|css|js|jpe?g|gif|psd|png|eps|pdf|ico/
|
48
|
-
response.body = static_content_file(url)
|
49
64
|
response.headers["type"] = "text/#{ext}" # readable as response.content_type
|
50
|
-
response
|
51
|
-
response.code = "200"
|
65
|
+
alter_response(response, '200', static_content_file(url))
|
52
66
|
else
|
53
67
|
log "Skipping unknown type #{url}"
|
54
68
|
end
|
@@ -61,6 +75,7 @@ module Relevance
|
|
61
75
|
end
|
62
76
|
end
|
63
77
|
|
78
|
+
|
64
79
|
def static_content_file(url)
|
65
80
|
File.read(static_content_path(url))
|
66
81
|
end
|
@@ -68,6 +83,14 @@ module Relevance
|
|
68
83
|
def static_content_path(url)
|
69
84
|
File.expand_path(File.join(rails_root, "public", url))
|
70
85
|
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def error_classes
|
89
|
+
defined?(ActionController::RoutingError) ?
|
90
|
+
[ActiveRecord::RecordNotFound, ActionController::RoutingError] :
|
91
|
+
[ActiveRecord::RecordNotFound]
|
92
|
+
end
|
93
|
+
|
71
94
|
end
|
72
95
|
|
73
96
|
end
|
@@ -43,7 +43,19 @@ describe "Relevance::Tarantula::RailsIntegrationProxy" do
|
|
43
43
|
Relevance::Tarantula::RailsIntegrationProxy.new(o)
|
44
44
|
o.methods(false).map(&:to_s).sort.should == %w{response response=}
|
45
45
|
end
|
46
|
+
end
|
46
47
|
|
48
|
+
describe "Relevance::Tarantula::RailsIntegrationProxy errors" do
|
49
|
+
it "alters response to contain the error message" do
|
50
|
+
@rip = Relevance::Tarantula::RailsIntegrationProxy.new(stub)
|
51
|
+
@response = Struct.new(:body, :code).new(nil, nil)
|
52
|
+
@rip.integration_test = stub_everything(:response => @response) do |stub|
|
53
|
+
stub.stubs(:get).raises(Exception, 'Internal Server Error')
|
54
|
+
end
|
55
|
+
response = @rip.get("/url")
|
56
|
+
response.code.should == '500'
|
57
|
+
response.body.should =~ /\AInternal Server Error\n\n/
|
58
|
+
end
|
47
59
|
end
|
48
60
|
|
49
61
|
describe "Relevance::Tarantula::RailsIntegrationProxy patching" do
|
metadata
CHANGED
@@ -1,144 +1,136 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tarantula
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
version: 0.5.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Relevance, Inc.
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: htmlentities
|
22
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 4.3.0
|
23
22
|
type: :runtime
|
24
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
|
-
requirements:
|
26
|
+
requirements:
|
27
27
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 51
|
30
|
-
segments:
|
31
|
-
- 4
|
32
|
-
- 3
|
33
|
-
- 0
|
28
|
+
- !ruby/object:Gem::Version
|
34
29
|
version: 4.3.0
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
30
|
+
- !ruby/object:Gem::Dependency
|
37
31
|
name: hpricot
|
38
|
-
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.8.4
|
39
38
|
type: :runtime
|
40
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
|
-
requirements:
|
42
|
+
requirements:
|
43
43
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 55
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
- 8
|
49
|
-
- 4
|
44
|
+
- !ruby/object:Gem::Version
|
50
45
|
version: 0.8.4
|
51
|
-
|
52
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
- !ruby/object:Gem::Dependency
|
53
47
|
name: rspec
|
54
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.12.0
|
55
54
|
type: :development
|
56
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
|
-
requirements:
|
58
|
+
requirements:
|
59
59
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
hash: 63
|
62
|
-
segments:
|
63
|
-
- 2
|
64
|
-
- 12
|
65
|
-
- 0
|
60
|
+
- !ruby/object:Gem::Version
|
66
61
|
version: 2.12.0
|
67
|
-
|
68
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
- !ruby/object:Gem::Dependency
|
69
63
|
name: rdoc
|
70
|
-
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 3.12.0
|
71
70
|
type: :development
|
72
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
|
-
requirements:
|
74
|
+
requirements:
|
75
75
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
hash: 55
|
78
|
-
segments:
|
79
|
-
- 3
|
80
|
-
- 12
|
81
|
-
- 0
|
76
|
+
- !ruby/object:Gem::Version
|
82
77
|
version: 3.12.0
|
83
|
-
|
84
|
-
- !ruby/object:Gem::Dependency
|
78
|
+
- !ruby/object:Gem::Dependency
|
85
79
|
name: log_buddy
|
86
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.6.0
|
87
86
|
type: :development
|
88
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
|
-
requirements:
|
90
|
+
requirements:
|
91
91
|
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
hash: 7
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
- 6
|
97
|
-
- 0
|
92
|
+
- !ruby/object:Gem::Version
|
98
93
|
version: 0.6.0
|
99
|
-
|
100
|
-
- !ruby/object:Gem::Dependency
|
94
|
+
- !ruby/object:Gem::Dependency
|
101
95
|
name: mocha
|
102
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.13.2
|
103
102
|
type: :development
|
104
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
|
-
requirements:
|
106
|
+
requirements:
|
107
107
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
hash: 47
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
- 13
|
113
|
-
- 2
|
108
|
+
- !ruby/object:Gem::Version
|
114
109
|
version: 0.13.2
|
115
|
-
|
116
|
-
- !ruby/object:Gem::Dependency
|
110
|
+
- !ruby/object:Gem::Dependency
|
117
111
|
name: rails
|
118
|
-
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.3.0
|
119
118
|
type: :development
|
120
|
-
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
|
-
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
hash: 3
|
126
|
-
segments:
|
127
|
-
- 2
|
128
|
-
- 3
|
129
|
-
- 0
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
130
125
|
version: 2.3.0
|
131
|
-
|
132
|
-
|
133
|
-
email:
|
126
|
+
description: Tarantula is a big fuzzy spider. It crawls your Rails 2.3 and 3.x applications,
|
127
|
+
fuzzing data to see what breaks.
|
128
|
+
email:
|
134
129
|
- opensource@thinkrelevance.com
|
135
130
|
executables: []
|
136
|
-
|
137
131
|
extensions: []
|
138
|
-
|
139
132
|
extra_rdoc_files: []
|
140
|
-
|
141
|
-
files:
|
133
|
+
files:
|
142
134
|
- .autotest
|
143
135
|
- .gitignore
|
144
136
|
- .rvmrc
|
@@ -229,36 +221,33 @@ files:
|
|
229
221
|
- vendor/xss-shield/test/test_safe_string.rb
|
230
222
|
homepage: https://github.com/relevance/tarantula
|
231
223
|
licenses: []
|
232
|
-
|
233
224
|
post_install_message:
|
234
225
|
rdoc_options: []
|
235
|
-
|
236
|
-
require_paths:
|
226
|
+
require_paths:
|
237
227
|
- lib
|
238
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
228
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
239
229
|
none: false
|
240
|
-
requirements:
|
241
|
-
- -
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
|
244
|
-
segments:
|
230
|
+
requirements:
|
231
|
+
- - ! '>='
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
version: '0'
|
234
|
+
segments:
|
245
235
|
- 0
|
246
|
-
|
247
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
hash: -3645130857833541584
|
237
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
248
238
|
none: false
|
249
|
-
requirements:
|
250
|
-
- -
|
251
|
-
- !ruby/object:Gem::Version
|
252
|
-
|
253
|
-
segments:
|
239
|
+
requirements:
|
240
|
+
- - ! '>='
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
243
|
+
segments:
|
254
244
|
- 0
|
255
|
-
|
245
|
+
hash: -3645130857833541584
|
256
246
|
requirements: []
|
257
|
-
|
258
247
|
rubyforge_project:
|
259
|
-
rubygems_version: 1.8.
|
248
|
+
rubygems_version: 1.8.24
|
260
249
|
signing_key:
|
261
250
|
specification_version: 3
|
262
251
|
summary: A big hairy fuzzy spider that crawls your site, wreaking havoc
|
263
|
-
test_files:
|
252
|
+
test_files:
|
264
253
|
- template/tarantula_test.rb
|