rack-test 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ doc
3
3
  coverage
4
4
  VERSION
5
5
  *.rbc
6
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source :gemcutter
2
+
3
+ gem 'rspec', '>= 2.0.0.beta.15'
4
+ gem "rack"
5
+ gem "sinatra"
data/Gemfile.lock ADDED
@@ -0,0 +1,23 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ rack (1.2.1)
6
+ rspec (2.0.0.beta.20)
7
+ rspec-core (= 2.0.0.beta.20)
8
+ rspec-expectations (= 2.0.0.beta.20)
9
+ rspec-mocks (= 2.0.0.beta.20)
10
+ rspec-core (2.0.0.beta.20)
11
+ rspec-expectations (2.0.0.beta.20)
12
+ diff-lcs (>= 1.1.2)
13
+ rspec-mocks (2.0.0.beta.20)
14
+ sinatra (1.0)
15
+ rack (>= 1.0)
16
+
17
+ PLATFORMS
18
+ ruby
19
+
20
+ DEPENDENCIES
21
+ rack
22
+ rspec (>= 2.0.0.beta.15)
23
+ sinatra
data/History.txt CHANGED
@@ -1,4 +1,11 @@
1
- == Git
1
+ == 0.5.5 / 2010-09-22
2
+
3
+ * Bug fixes
4
+
5
+ * Fix encoding of file uploads on Ruby 1.9 (Alan Kennedy)
6
+ * Set env["HTTP_HOST"] when making requests (Istvan Hoka)
7
+
8
+ == 0.5.4 / 2009-05-26
2
9
 
3
10
  * Bug fixes
4
11
 
data/Rakefile CHANGED
@@ -1,31 +1,25 @@
1
1
  require "rubygems"
2
2
 
3
- begin
4
- require "spec/rake/spectask"
5
- rescue LoadError
6
- desc "Run specs"
7
- task(:spec) { $stderr.puts '`gem install rspec` to run specs' }
8
- else
9
- Spec::Rake::SpecTask.new do |t|
10
- t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""]
11
- t.libs << 'lib'
12
- t.libs << 'spec'
13
- t.warning = true
14
- end
15
3
 
16
- task :default => :spec
4
+ require 'rspec/core'
5
+ require "rspec/core/rake_task"
17
6
 
18
- desc "Run all specs in spec directory with RCov"
19
- Spec::Rake::SpecTask.new(:rcov) do |t|
20
- t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""]
21
- t.libs << 'lib'
22
- t.libs << 'spec'
23
- t.warning = true
24
- t.rcov = true
25
- t.rcov_opts = ['-x spec']
26
- end
7
+ RSpec::Core::RakeTask.new do |t|
8
+ t.pattern = "./**/*_spec.rb"
9
+ t.ruby_opts = "-w"
27
10
  end
28
11
 
12
+ task :default => :spec
13
+
14
+ # desc "Run all specs in spec directory with RCov"
15
+ # RSpec::Core::RakeTask.new(:rcov) do |t|
16
+ # t.libs << 'lib'
17
+ # t.libs << 'spec'
18
+ # t.warning = true
19
+ # t.rcov = true
20
+ # t.rcov_opts = ['-x spec']
21
+ # end
22
+
29
23
  desc "Generate RDoc"
30
24
  task :docs do
31
25
  FileUtils.rm_rf("doc")
data/lib/rack/test.rb CHANGED
@@ -9,7 +9,7 @@ require "rack/test/uploaded_file"
9
9
 
10
10
  module Rack
11
11
  module Test
12
- VERSION = "0.5.4"
12
+ VERSION = "0.5.5"
13
13
 
14
14
  DEFAULT_HOST = "example.org"
15
15
  MULTIPART_BOUNDARY = "----------XnJLe9ZIbbGUYtzPQJ16u1"
@@ -161,6 +161,8 @@ module Rack
161
161
  uri.path = "/#{uri.path}" unless uri.path[0] == ?/
162
162
  uri.host ||= @default_host
163
163
 
164
+ env["HTTP_HOST"] = [uri.host, uri.port].compact.join(":")
165
+
164
166
  env = default_env.merge(env)
165
167
 
166
168
  env.update("HTTPS" => "on") if URI::HTTPS === uri
@@ -95,7 +95,8 @@ module Rack
95
95
  end.join
96
96
 
97
97
  else
98
- build_primitive_part(name, value)
98
+ primitive_part = build_primitive_part(name, value)
99
+ primitive_part.encoding_aware? ? primitive_part.force_encoding('BINARY') : primitive_part
99
100
  end
100
101
 
101
102
  }.join + "--#{MULTIPART_BOUNDARY}--\r"
data/rack-test.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rack-test}
5
- s.version = "0.5.4"
5
+ s.version = "0.5.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Bryan Helmkamp"]
9
- s.date = %q{2010-05-26}
9
+ s.date = %q{2010-09-22}
10
10
  s.description = %q{Rack::Test is a small, simple testing API for Rack apps. It can be used on its
11
11
  own or as a reusable starting point for Web frameworks and testing libraries
12
12
  to build on. Most of its initial functionality is an extraction of Merb 1.0's
@@ -19,6 +19,8 @@ request helpers feature.}
19
19
  s.files = [
20
20
  ".document",
21
21
  ".gitignore",
22
+ "Gemfile",
23
+ "Gemfile.lock",
22
24
  "History.txt",
23
25
  "MIT-LICENSE.txt",
24
26
  "README.rdoc",
@@ -41,8 +43,10 @@ request helpers feature.}
41
43
  "spec/rack/test/multipart_spec.rb",
42
44
  "spec/rack/test/utils_spec.rb",
43
45
  "spec/rack/test_spec.rb",
44
- "spec/spec.opts",
45
- "spec/spec_helper.rb"
46
+ "spec/spec_helper.rb",
47
+ "spec/support/core_ext/string.rb",
48
+ "spec/support/matchers/body.rb",
49
+ "spec/support/matchers/challenge.rb"
46
50
  ]
47
51
  s.homepage = %q{http://github.com/brynary/rack-test}
48
52
  s.require_paths = ["lib"]
@@ -56,7 +60,10 @@ request helpers feature.}
56
60
  "spec/rack/test/multipart_spec.rb",
57
61
  "spec/rack/test/utils_spec.rb",
58
62
  "spec/rack/test_spec.rb",
59
- "spec/spec_helper.rb"
63
+ "spec/spec_helper.rb",
64
+ "spec/support/core_ext/string.rb",
65
+ "spec/support/matchers/body.rb",
66
+ "spec/support/matchers/challenge.rb"
60
67
  ]
61
68
 
62
69
  if s.respond_to? :specification_version then
@@ -1,3 +1,4 @@
1
+ require "rubygems"
1
2
  require "sinatra/base"
2
3
 
3
4
  module Rack
@@ -1,11 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Rack::Test::Session do
4
- def have_body(string)
5
- simple_matcher "have body #{string.inspect}" do |response|
6
- response.body.should == string
7
- end
8
- end
9
4
 
10
5
  context "cookies" do
11
6
  it "keeps a cookie jar" do
@@ -12,14 +12,6 @@ describe Rack::Test::Session do
12
12
  app
13
13
  end
14
14
 
15
- def be_challenge
16
- simple_matcher "a HTTP Digest challenge response" do |response|
17
- response.status == 401 &&
18
- response['WWW-Authenticate'] =~ /^Digest / &&
19
- response.body.empty?
20
- end
21
- end
22
-
23
15
  it 'incorrectly authenticates GETs' do
24
16
  digest_authorize 'foo', 'bar'
25
17
  get '/'
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Rack::Test::Session do
@@ -51,6 +53,17 @@ describe Rack::Test::Session do
51
53
  last_request.POST["foo"].should == "bar? baz"
52
54
  end
53
55
 
56
+ it "sends params encoded as ISO-8859-1" do
57
+ post "/", "photo" => uploaded_file, "foo" => "bar", "utf8" => "☃"
58
+ last_request.POST["foo"].should == "bar"
59
+
60
+ if last_request.POST["utf8"].encoding_aware?
61
+ last_request.POST["utf8"].should == "\xE2\x98\x83".force_encoding("BINARY")
62
+ else
63
+ last_request.POST["utf8"].should == "\xE2\x98\x83"
64
+ end
65
+ end
66
+
54
67
  it "sends params with parens in names" do
55
68
  post "/", "photo" => uploaded_file, "foo(1i)" => "bar"
56
69
  last_request.POST["foo(1i)"].should == "bar"
@@ -103,7 +103,7 @@ describe Rack::Test::Utils do
103
103
  params["people"][0]["files"][:tempfile].read.should == "bar\n"
104
104
  end
105
105
 
106
- it "should return nil if no UploadedFiles were used" do
106
+ it "returns nil if no UploadedFiles were used" do
107
107
  data = build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}])
108
108
  data.should be_nil
109
109
  end
@@ -146,12 +146,12 @@ describe Rack::Test::Session do
146
146
  end
147
147
 
148
148
  context "when input is given" do
149
- it "should send the input" do
149
+ it "sends the input" do
150
150
  request "/", :method => "POST", :input => "foo"
151
151
  last_request.env["rack.input"].read.should == "foo"
152
152
  end
153
153
 
154
- it "should not send a multipart request" do
154
+ it "does not send a multipart request" do
155
155
  request "/", :method => "POST", :input => "foo"
156
156
  last_request.env["CONTENT_TYPE"].should_not == "application/x-www-form-urlencoded"
157
157
  end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,16 @@
1
1
  require "rubygems"
2
- require "spec"
2
+ require "bundler/setup"
3
3
 
4
- gem "rack", "~> 1.0.0"
4
+ require "rack"
5
+ require "rspec"
6
+
7
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
5
8
 
6
9
  require "rack/test"
7
10
  require File.dirname(__FILE__) + "/fixtures/fake_app"
8
11
 
9
- Spec::Runner.configure do |config|
12
+ Rspec.configure do |config|
13
+ config.mock_with :rspec
10
14
  config.include Rack::Test::Methods
11
15
 
12
16
  def app
@@ -18,7 +22,7 @@ Spec::Runner.configure do |config|
18
22
 
19
23
  end
20
24
 
21
- describe "any #verb methods", :shared => true do
25
+ shared_examples_for "any #verb methods" do
22
26
  it "requests the URL using VERB" do
23
27
  send(verb, "/")
24
28
 
@@ -42,6 +46,16 @@ describe "any #verb methods", :shared => true do
42
46
  yielded.should be_true
43
47
  end
44
48
 
49
+ it "sets the HTTP_HOST header with port" do
50
+ send(verb, "http://example.org:8080/uri")
51
+ last_request.env["HTTP_HOST"].should == "example.org:8080"
52
+ end
53
+
54
+ it "sets the HTTP_HOST header without port" do
55
+ send(verb, "/uri")
56
+ last_request.env["HTTP_HOST"].should == "example.org"
57
+ end
58
+
45
59
  context "for a XHR" do
46
60
  it "sends XMLHttpRequest for the X-Requested-With header" do
47
61
  send(verb, "/", {}, { :xhr => true })
@@ -0,0 +1,12 @@
1
+ # Taken from ActiveSuport v3
2
+ class String
3
+ if defined?(Encoding) && "".respond_to?(:encode)
4
+ def encoding_aware?
5
+ true
6
+ end
7
+ else
8
+ def encoding_aware?
9
+ false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ RSpec::Matchers.define :have_body do |expected|
2
+ match do |response|
3
+ response.body.should == expected
4
+ end
5
+
6
+ description do
7
+ "have body #{expected.inspect}"
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ RSpec::Matchers.define :be_challenge do
2
+ match do |actual_response|
3
+ actual_response.status == 401 &&
4
+ actual_response['WWW-Authenticate'] =~ /^Digest / &&
5
+ actual_response.body.empty?
6
+ end
7
+
8
+ description do
9
+ "a HTTP Digest challenge response"
10
+ end
11
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-test
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 4
10
- version: 0.5.4
9
+ - 5
10
+ version: 0.5.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bryan Helmkamp
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-05-26 00:00:00 -04:00
18
+ date: 2010-09-22 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -49,6 +49,8 @@ extra_rdoc_files:
49
49
  files:
50
50
  - .document
51
51
  - .gitignore
52
+ - Gemfile
53
+ - Gemfile.lock
52
54
  - History.txt
53
55
  - MIT-LICENSE.txt
54
56
  - README.rdoc
@@ -71,8 +73,10 @@ files:
71
73
  - spec/rack/test/multipart_spec.rb
72
74
  - spec/rack/test/utils_spec.rb
73
75
  - spec/rack/test_spec.rb
74
- - spec/spec.opts
75
76
  - spec/spec_helper.rb
77
+ - spec/support/core_ext/string.rb
78
+ - spec/support/matchers/body.rb
79
+ - spec/support/matchers/challenge.rb
76
80
  has_rdoc: true
77
81
  homepage: http://github.com/brynary/rack-test
78
82
  licenses: []
@@ -115,3 +119,6 @@ test_files:
115
119
  - spec/rack/test/utils_spec.rb
116
120
  - spec/rack/test_spec.rb
117
121
  - spec/spec_helper.rb
122
+ - spec/support/core_ext/string.rb
123
+ - spec/support/matchers/body.rb
124
+ - spec/support/matchers/challenge.rb
data/spec/spec.opts DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- -fs