OSDN Git Service

Replaced mongrel with thin
[redminele/redminele.git] / ruby / lib / ruby / gems / 1.8 / gems / thin-1.2.11-x86-mswin32 / spec / request / mongrel_spec.rb
diff --git a/ruby/lib/ruby/gems/1.8/gems/thin-1.2.11-x86-mswin32/spec/request/mongrel_spec.rb b/ruby/lib/ruby/gems/1.8/gems/thin-1.2.11-x86-mswin32/spec/request/mongrel_spec.rb
new file mode 100644 (file)
index 0000000..20cc335
--- /dev/null
@@ -0,0 +1,39 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+require 'digest/sha1'
+
+describe Request, 'legacy Mongrel tests' do
+  it 'should raise error on large header names' do
+    proc { R("GET /#{rand_data(10,120)} HTTP/1.1\r\nX-#{rand_data(1024, 1024+(1024))}: Test\r\n\r\n") }.
+      should raise_error(InvalidRequest)
+  end
+
+  it 'should raise error on large mangled field values' do
+    proc { R("GET /#{rand_data(10,120)} HTTP/1.1\r\nX-Test: #{rand_data(1024, 1024*1024, false)}\r\n\r\n") }.
+      should raise_error(InvalidRequest)
+  end
+  
+  it 'should raise error on big fat ugly headers' do
+    get = "GET /#{rand_data(10,120)} HTTP/1.1\r\n"
+    get << "X-Test: test\r\n" * (80 * 1024)
+    proc { R(get) }.should raise_error(InvalidRequest)
+  end
+
+  it 'should raise error on random garbage' do
+    proc { R("GET #{rand_data(1024, 1024+(1024), false)} #{rand_data(1024, 1024+(1024), false)}\r\n\r\n") }.
+      should raise_error(InvalidRequest)
+  end
+  
+  private
+    def rand_data(min, max, readable=true)
+      count = min + ((rand(max)+1) *10).to_i
+      res = count.to_s + "/"
+
+      if readable
+        res << Digest::SHA1.hexdigest(rand(count * 100).to_s) * (count / 40)
+      else
+        res << Digest::SHA1.digest(rand(count * 100).to_s) * (count / 20)
+      end
+
+      return res
+    end
+end
\ No newline at end of file