cobweb 1.0.11 → 1.0.12

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.
@@ -0,0 +1,250 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ #require 'sidekiq/testing'
3
+
4
+ describe CrawlWorker, :local_only => true do
5
+
6
+ before(:all) do
7
+ #store all existing resque process ids so we don't kill them afterwards
8
+ @existing_processes = `ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`.split("\n")
9
+ puts @existing_processes
10
+ @existing_processes.should be_empty
11
+
12
+ # START WORKERS ONLY FOR CRAWL QUEUE SO WE CAN COUNT ENQUEUED PROCESS AND FINISH QUEUES
13
+ puts "Starting Workers... Please Wait..."
14
+ `mkdir log`
15
+ `rm -rf output.log`
16
+ io = IO.popen("nohup sidekiq -r ./lib/crawl_worker.rb -q crawl_worker > ./log/output.log &")
17
+ puts "Workers Started."
18
+
19
+ end
20
+
21
+ before(:each) do
22
+ @base_url = "http://localhost:3532/"
23
+ @base_page_count = 77
24
+
25
+ clear_queues
26
+ end
27
+
28
+ describe "with no crawl limit" do
29
+ before(:each) do
30
+ @request = {
31
+ :crawl_id => Digest::SHA1.hexdigest("#{Time.now.to_i}.#{Time.now.usec}"),
32
+ :crawl_limit => nil,
33
+ :quiet => false,
34
+ :debug => false,
35
+ :cache => nil,
36
+ :queue_system => :sidekiq
37
+ }
38
+ @cobweb = Cobweb.new @request
39
+ end
40
+
41
+ it "should crawl entire site" do
42
+ crawl = @cobweb.start(@base_url)
43
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
44
+ wait_for_crawl_finished crawl[:crawl_id]
45
+ CrawlProcessWorker.queue_size.should == @base_page_count
46
+ end
47
+ it "detect crawl finished" do
48
+ crawl = @cobweb.start(@base_url)
49
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
50
+ wait_for_crawl_finished crawl[:crawl_id]
51
+ CrawlFinishedWorker.queue_size.should == 1
52
+ end
53
+ end
54
+ describe "with limited mime_types" do
55
+ before(:each) do
56
+ @request = {
57
+ :crawl_id => Digest::SHA1.hexdigest("#{Time.now.to_i}.#{Time.now.usec}"),
58
+ :quiet => true,
59
+ :cache => nil,
60
+ :queue_system => :sidekiq,
61
+ :valid_mime_types => ["text/html"]
62
+ }
63
+ @cobweb = Cobweb.new @request
64
+ end
65
+
66
+ it "should only crawl html pages" do
67
+ crawl = @cobweb.start(@base_url)
68
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
69
+ wait_for_crawl_finished crawl[:crawl_id]
70
+ CrawlProcessWorker.queue_size.should == 8
71
+
72
+ mime_types = CrawlProcessWorker.queue_items(0, 100).map{|job| JSON.parse(job)["args"][0]["mime_type"]}
73
+
74
+ mime_types.count.should == 8
75
+ mime_types.map{|m| m.should == "text/html"}
76
+ mime_types.select{|m| m=="text/html"}.count.should == 8
77
+
78
+
79
+ end
80
+
81
+ end
82
+ describe "with a crawl limit" do
83
+ before(:each) do
84
+ @request = {
85
+ :crawl_id => Digest::SHA1.hexdigest("#{Time.now.to_i}.#{Time.now.usec}"),
86
+ :quiet => true,
87
+ :queue_system => :sidekiq,
88
+ :cache => nil
89
+ }
90
+ end
91
+
92
+ describe "of 1" do
93
+ before(:each) do
94
+ @request[:crawl_limit] = 1
95
+ @cobweb = Cobweb.new @request
96
+ end
97
+
98
+ it "should not crawl the entire site" do
99
+ crawl = @cobweb.start(@base_url)
100
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
101
+ wait_for_crawl_finished crawl[:crawl_id]
102
+ CrawlProcessWorker.queue_size.should_not == @base_page_count
103
+ end
104
+ it "should only crawl 1 page" do
105
+ crawl = @cobweb.start(@base_url)
106
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
107
+ wait_for_crawl_finished crawl[:crawl_id]
108
+ CrawlProcessWorker.queue_size.should == 1
109
+ end
110
+ it "should notify of crawl finished" do
111
+ crawl = @cobweb.start(@base_url)
112
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
113
+ wait_for_crawl_finished crawl[:crawl_id]
114
+ CrawlFinishedWorker.queue_size.should == 1
115
+ end
116
+
117
+ end
118
+
119
+ describe "of 5" do
120
+ before(:each) do
121
+ @request[:crawl_limit] = 5
122
+ end
123
+
124
+ describe "limiting count to html pages only" do
125
+ before(:each) do
126
+ @request[:crawl_limit_by_page] = true
127
+ @cobweb = Cobweb.new @request
128
+ end
129
+
130
+ it "should only use html pages towards the crawl limit" do
131
+ crawl = @cobweb.start(@base_url)
132
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
133
+ wait_for_crawl_finished crawl[:crawl_id]
134
+
135
+ mime_types = CrawlProcessWorker.queue_items(0, 200).map{|job| JSON.parse(job)["args"][0]["mime_type"]}
136
+ ap mime_types
137
+ mime_types.select{|m| m=="text/html"}.count.should == 5
138
+ end
139
+ end
140
+ end
141
+
142
+ describe "of 10" do
143
+ before(:each) do
144
+ @request[:crawl_limit] = 10
145
+ @cobweb = Cobweb.new @request
146
+ end
147
+
148
+ it "should not crawl the entire site" do
149
+ crawl = @cobweb.start(@base_url)
150
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
151
+ wait_for_crawl_finished crawl[:crawl_id]
152
+ CrawlProcessWorker.queue_size.should_not == @base_page_count
153
+ end
154
+ it "should notify of crawl finished" do
155
+ crawl = @cobweb.start(@base_url)
156
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
157
+ wait_for_crawl_finished crawl[:crawl_id]
158
+ CrawlFinishedWorker.queue_size.should == 1
159
+ end
160
+ it "should only crawl 10 objects" do
161
+ crawl = @cobweb.start(@base_url)
162
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
163
+ wait_for_crawl_finished crawl[:crawl_id]
164
+ CrawlProcessWorker.queue_size.should == 10
165
+ end
166
+ end
167
+
168
+ describe "of 100" do
169
+ before(:each) do
170
+ @request[:crawl_limit] = 100
171
+ @cobweb = Cobweb.new @request
172
+ end
173
+
174
+ it "should crawl the entire sample site" do
175
+ crawl = @cobweb.start(@base_url)
176
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
177
+ wait_for_crawl_finished crawl[:crawl_id]
178
+ CrawlProcessWorker.queue_size.should == @base_page_count
179
+ end
180
+ it "should notify of crawl finished" do
181
+ crawl = @cobweb.start(@base_url)
182
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
183
+ wait_for_crawl_finished crawl[:crawl_id]
184
+ CrawlFinishedWorker.queue_size.should == 1
185
+ end
186
+ it "should not crawl 100 pages" do
187
+ crawl = @cobweb.start(@base_url)
188
+ @stat = Stats.new({:crawl_id => crawl[:crawl_id]})
189
+ wait_for_crawl_finished crawl[:crawl_id]
190
+ CrawlProcessWorker.queue_size.should_not == 100
191
+ end
192
+ end
193
+ end
194
+
195
+ after(:all) do
196
+ @all_processes = `ps aux | grep sidekiq | grep -v grep | grep -v sidekiq-web | awk '{print $2}'`.split("\n")
197
+ unless (@all_processes - @existing_processes).empty?
198
+ command = "kill #{(@all_processes - @existing_processes).join(" ")}"
199
+ IO.popen(command)
200
+ end
201
+ clear_queues
202
+ end
203
+
204
+ end
205
+
206
+ def wait_for_crawl_finished(crawl_id, timeout=20)
207
+ @counter = 0
208
+ start_time = Time.now
209
+ while(running?(crawl_id) && Time.now < start_time + timeout) do
210
+ sleep 1
211
+ end
212
+ if Time.now > start_time + timeout
213
+ raise "End of crawl not detected"
214
+ end
215
+ end
216
+
217
+ def running?(crawl_id)
218
+ status = @stat.get_status
219
+ result = true
220
+ if status == CobwebCrawlHelper::STARTING
221
+ result = true
222
+ else
223
+ if status == @last_stat
224
+ if @counter > 20
225
+ raise "Static status: #{status}"
226
+ else
227
+ @counter += 1
228
+ end
229
+ else
230
+ result = status != CobwebCrawlHelper::FINISHED && status != CobwebCrawlHelper::CANCELLED
231
+ end
232
+ end
233
+ @last_stat = @stat.get_status
234
+ result
235
+ end
236
+
237
+ def clear_queues
238
+ Sidekiq.redis do |conn|
239
+ conn.smembers("queues").each do |queue_name|
240
+ conn.del("queue:#{queue_name}")
241
+ conn.srem("queues", queue_name)
242
+ end
243
+ end
244
+ sleep 2
245
+
246
+ CrawlProcessWorker.queue_size.should == 0
247
+ CrawlFinishedWorker.queue_size.should == 0
248
+ end
249
+
250
+
@@ -1,8 +1,9 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Robots do
4
-
4
+ include HttpStubs
5
5
  before(:each) do
6
+ setup_stubs
6
7
  @cobweb = Cobweb.new :quiet => true, :cache => nil
7
8
  end
8
9
 
@@ -0,0 +1,95 @@
1
+ module HttpStubs
2
+
3
+ def setup_stubs
4
+
5
+ @default_headers = {"Cache-Control" => "private, max-age=0",
6
+ "Date" => "Wed, 10 Nov 2010 09:06:17 GMT",
7
+ "Expires" => "-1",
8
+ "Content-Type" => "text/html; charset=UTF-8",
9
+ "Content-Encoding" => "",
10
+ "Transfer-Encoding" => "chunked",
11
+ "Server" => "gws",
12
+ "X-XSS-Protection" => "1; mode=block"}
13
+
14
+ @symbolized_default_headers = {:"Cache-Control" => "private, max-age=0",
15
+ :"Date" => "Wed, 10 Nov 2010 09:06:17 GMT",
16
+ :"Expires" => "-1",
17
+ :"Content-Type" => "text/html; charset=UTF-8",
18
+ :"Content-Encoding" => "",
19
+ :"Transfer-Encoding" => "chunked",
20
+ :"Server" => "gws",
21
+ :"X-XSS-Protection" => "1; mode=block"}
22
+
23
+
24
+ @mock_http_client = mock(Net::HTTP)
25
+ @mock_http_request = mock(Net::HTTPRequest)
26
+ @mock_http_robot_request = mock(Net::HTTPRequest)
27
+ @mock_http_redirect_request = mock(Net::HTTPRequest)
28
+ @mock_http_redirect_request2 = mock(Net::HTTPRequest)
29
+
30
+ @mock_http_response = mock(Net::HTTPResponse)
31
+ @mock_http_robot_response = mock(Net::HTTPResponse)
32
+ @mock_http_redirect_response = mock(Net::HTTPRedirection)
33
+ @mock_http_redirect_response2 = mock(Net::HTTPRedirection)
34
+ @mock_http_get = mock(Net::HTTP::Get)
35
+
36
+ Net::HTTP.stub!(:new).and_return(@mock_http_client)
37
+ Net::HTTP::Get.stub!(:new).and_return(@mock_http_request)
38
+ Net::HTTP::Get.stub!(:new).with("/redirect.html", an_instance_of(Hash)).and_return(@mock_http_redirect_request)
39
+ Net::HTTP::Get.stub!(:new).with("/robots.txt", an_instance_of(Hash)).and_return(@mock_http_robot_request)
40
+ Net::HTTP::Get.stub!(:new).with("/redirect2.html", an_instance_of(Hash)).and_return(@mock_http_redirect_request2)
41
+ Net::HTTP::Get.stub!(:new).with("/redirected.html", an_instance_of(Hash)).and_return(@mock_http_request)
42
+
43
+ Net::HTTP::Head.stub!(:new).and_return(@mock_http_request)
44
+
45
+ @mock_http_client.stub!(:request).with(@mock_http_request).and_return(@mock_http_response)
46
+ @mock_http_client.stub!(:request).with(@mock_http_robot_request).and_return(@mock_http_robot_response)
47
+ @mock_http_client.stub!(:request).with(@mock_http_redirect_request).and_return(@mock_http_redirect_response)
48
+ @mock_http_client.stub!(:request).with(@mock_http_redirect_request2).and_return(@mock_http_redirect_response2)
49
+ @mock_http_client.stub!(:read_timeout=).and_return(nil)
50
+ @mock_http_client.stub!(:open_timeout=).and_return(nil)
51
+ @mock_http_client.stub!(:start).and_return(@mock_http_response)
52
+ @mock_http_client.stub!(:address).and_return("www.baseurl.com")
53
+ @mock_http_client.stub!(:port).and_return("80")
54
+
55
+ @mock_http_robot_response.stub!(:code).and_return(200)
56
+ @mock_http_robot_response.stub!(:body).and_return(File.open(File.dirname(__FILE__) + '/../spec/samples/robots.txt', "r").read)
57
+ @mock_http_robot_response.stub!(:content_type).and_return("text/plain")
58
+ @mock_http_robot_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
59
+ @mock_http_robot_response.stub!(:[]).with("location").and_return(@default_headers["location"])
60
+ @mock_http_robot_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
61
+ @mock_http_robot_response.stub!(:content_length).and_return(1024)
62
+ @mock_http_robot_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
63
+ @mock_http_robot_response.stub!(:to_hash).and_return(@default_headers)
64
+
65
+ @mock_http_response.stub!(:code).and_return(200)
66
+ @mock_http_response.stub!(:content_type).and_return("text/html")
67
+ @mock_http_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
68
+ @mock_http_response.stub!(:[]).with("location").and_return(@default_headers["location"])
69
+ @mock_http_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
70
+ @mock_http_response.stub!(:content_length).and_return(1024)
71
+ @mock_http_response.stub!(:body).and_return("asdf")
72
+ @mock_http_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
73
+ @mock_http_response.stub!(:to_hash).and_return(@default_headers)
74
+
75
+ @mock_http_redirect_response.stub!(:code).and_return(301)
76
+ @mock_http_redirect_response.stub!(:content_type).and_return("text/html")
77
+ @mock_http_redirect_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
78
+ @mock_http_redirect_response.stub!(:[]).with("location").and_return("http://redirected-to.com/redirect2.html")
79
+ @mock_http_redirect_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
80
+ @mock_http_redirect_response.stub!(:content_length).and_return(2048)
81
+ @mock_http_redirect_response.stub!(:body).and_return("redirected body")
82
+ @mock_http_redirect_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
83
+ @mock_http_redirect_response.stub!(:to_hash).and_return(@default_headers)
84
+
85
+ @mock_http_redirect_response2.stub!(:code).and_return(301)
86
+ @mock_http_redirect_response2.stub!(:content_type).and_return("text/html")
87
+ @mock_http_redirect_response2.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
88
+ @mock_http_redirect_response2.stub!(:[]).with("location").and_return("http://redirected-to.com/redirected.html")
89
+ @mock_http_redirect_response2.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
90
+ @mock_http_redirect_response2.stub!(:content_length).and_return(2048)
91
+ @mock_http_redirect_response2.stub!(:body).and_return("redirected body")
92
+ @mock_http_redirect_response2.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
93
+ @mock_http_redirect_response2.stub!(:to_hash).and_return(@default_headers)
94
+ end
95
+ end
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li class="current"><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li class="current"><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li class="current"><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li class="current"><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li class="current"><a href="tables.html">Tables</a></li>
@@ -71,7 +71,7 @@
71
71
  </ul>
72
72
  </li>
73
73
  <li class="current"><a href="typography.html">Typography</a></li>
74
- <li><a href="boxgrid.html">Boxes Grid</a></li>
74
+ <li><a href="boxgrid>withsillyname.html">Boxes Grid</a></li>
75
75
  <li><a href="forms.html">Forms</a></li>
76
76
  <li><a href="gallery.html">Gallery</a></li>
77
77
  <li><a href="tables.html">Tables</a></li>
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/sidekiq/cobweb_helper')
1
2
  require File.expand_path(File.dirname(__FILE__) + '/../lib/cobweb')
2
3
  require File.expand_path(File.dirname(__FILE__) + '/../spec/samples/sample_server')
4
+ require File.expand_path(File.dirname(__FILE__) + '/../spec/http_stubs')
3
5
  require 'mock_redis'
4
6
  require 'thin' if ENV["TRAVIS_RUBY_VERSION"].nil?
7
+ require 'sidekiq'
8
+
9
+ require 'coveralls'
10
+ Coveralls.wear!
5
11
 
6
12
  # Sets up the environment as test so that exceptions are raised
7
13
  ENVIRONMENT = "test"
@@ -32,94 +38,6 @@ RSpec.configure do |config|
32
38
 
33
39
  #redis_mock.flushdb
34
40
 
35
- @default_headers = {"Cache-Control" => "private, max-age=0",
36
- "Date" => "Wed, 10 Nov 2010 09:06:17 GMT",
37
- "Expires" => "-1",
38
- "Content-Type" => "text/html; charset=UTF-8",
39
- "Content-Encoding" => "",
40
- "Transfer-Encoding" => "chunked",
41
- "Server" => "gws",
42
- "X-XSS-Protection" => "1; mode=block"}
43
-
44
- @symbolized_default_headers = {:"Cache-Control" => "private, max-age=0",
45
- :"Date" => "Wed, 10 Nov 2010 09:06:17 GMT",
46
- :"Expires" => "-1",
47
- :"Content-Type" => "text/html; charset=UTF-8",
48
- :"Content-Encoding" => "",
49
- :"Transfer-Encoding" => "chunked",
50
- :"Server" => "gws",
51
- :"X-XSS-Protection" => "1; mode=block"}
52
-
53
- @mock_http_client = mock(Net::HTTP)
54
- @mock_http_request = mock(Net::HTTPRequest)
55
- @mock_http_robot_request = mock(Net::HTTPRequest)
56
- @mock_http_redirect_request = mock(Net::HTTPRequest)
57
- @mock_http_redirect_request2 = mock(Net::HTTPRequest)
58
-
59
- @mock_http_response = mock(Net::HTTPResponse)
60
- @mock_http_robot_response = mock(Net::HTTPResponse)
61
- @mock_http_redirect_response = mock(Net::HTTPRedirection)
62
- @mock_http_redirect_response2 = mock(Net::HTTPRedirection)
63
- @mock_http_get = mock(Net::HTTP::Get)
64
-
65
- Net::HTTP.stub!(:new).and_return(@mock_http_client)
66
- Net::HTTP::Get.stub!(:new).and_return(@mock_http_request)
67
- Net::HTTP::Get.stub!(:new).with("/redirect.html", an_instance_of(Hash)).and_return(@mock_http_redirect_request)
68
- Net::HTTP::Get.stub!(:new).with("/robots.txt", an_instance_of(Hash)).and_return(@mock_http_robot_request)
69
- Net::HTTP::Get.stub!(:new).with("/redirect2.html", an_instance_of(Hash)).and_return(@mock_http_redirect_request2)
70
- Net::HTTP::Get.stub!(:new).with("/redirected.html", an_instance_of(Hash)).and_return(@mock_http_request)
71
-
72
- Net::HTTP::Head.stub!(:new).and_return(@mock_http_request)
73
-
74
- @mock_http_client.stub!(:request).with(@mock_http_request).and_return(@mock_http_response)
75
- @mock_http_client.stub!(:request).with(@mock_http_robot_request).and_return(@mock_http_robot_response)
76
- @mock_http_client.stub!(:request).with(@mock_http_redirect_request).and_return(@mock_http_redirect_response)
77
- @mock_http_client.stub!(:request).with(@mock_http_redirect_request2).and_return(@mock_http_redirect_response2)
78
- @mock_http_client.stub!(:read_timeout=).and_return(nil)
79
- @mock_http_client.stub!(:open_timeout=).and_return(nil)
80
- @mock_http_client.stub!(:start).and_return(@mock_http_response)
81
- @mock_http_client.stub!(:address).and_return("www.baseurl.com")
82
- @mock_http_client.stub!(:port).and_return("80")
83
-
84
- @mock_http_robot_response.stub!(:code).and_return(200)
85
- @mock_http_robot_response.stub!(:body).and_return(File.open(File.dirname(__FILE__) + '/../spec/samples/robots.txt', "r").read)
86
- @mock_http_robot_response.stub!(:content_type).and_return("text/plain")
87
- @mock_http_robot_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
88
- @mock_http_robot_response.stub!(:[]).with("location").and_return(@default_headers["location"])
89
- @mock_http_robot_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
90
- @mock_http_robot_response.stub!(:content_length).and_return(1024)
91
- @mock_http_robot_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
92
- @mock_http_robot_response.stub!(:to_hash).and_return(@default_headers)
93
-
94
- @mock_http_response.stub!(:code).and_return(200)
95
- @mock_http_response.stub!(:content_type).and_return("text/html")
96
- @mock_http_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
97
- @mock_http_response.stub!(:[]).with("location").and_return(@default_headers["location"])
98
- @mock_http_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
99
- @mock_http_response.stub!(:content_length).and_return(1024)
100
- @mock_http_response.stub!(:body).and_return("asdf")
101
- @mock_http_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
102
- @mock_http_response.stub!(:to_hash).and_return(@default_headers)
103
-
104
- @mock_http_redirect_response.stub!(:code).and_return(301)
105
- @mock_http_redirect_response.stub!(:content_type).and_return("text/html")
106
- @mock_http_redirect_response.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
107
- @mock_http_redirect_response.stub!(:[]).with("location").and_return("http://redirected-to.com/redirect2.html")
108
- @mock_http_redirect_response.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
109
- @mock_http_redirect_response.stub!(:content_length).and_return(2048)
110
- @mock_http_redirect_response.stub!(:body).and_return("redirected body")
111
- @mock_http_redirect_response.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
112
- @mock_http_redirect_response.stub!(:to_hash).and_return(@default_headers)
113
-
114
- @mock_http_redirect_response2.stub!(:code).and_return(301)
115
- @mock_http_redirect_response2.stub!(:content_type).and_return("text/html")
116
- @mock_http_redirect_response2.stub!(:[]).with("Content-Type").and_return(@default_headers["Content-Type"])
117
- @mock_http_redirect_response2.stub!(:[]).with("location").and_return("http://redirected-to.com/redirected.html")
118
- @mock_http_redirect_response2.stub!(:[]).with("Content-Encoding").and_return(@default_headers["Content-Encoding"])
119
- @mock_http_redirect_response2.stub!(:content_length).and_return(2048)
120
- @mock_http_redirect_response2.stub!(:body).and_return("redirected body")
121
- @mock_http_redirect_response2.stub!(:get_fields).with('set-cookie').and_return(["session=al98axx; expires=Fri, 31-Dec-1999 23:58:23", "query=rubyscript; expires=Fri, 31-Dec-1999 23:58:23"])
122
- @mock_http_redirect_response2.stub!(:to_hash).and_return(@default_headers)
123
41
  }
124
42
 
125
43
  end