rspec-http 0.9.0 → 0.10.0

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
@@ -1,3 +1,9 @@
1
+ == 0.10.0
2
+
3
+ * RSpec::Matchers::MatcherError used is removed from RSpec
4
+ (https://github.com/rspec/rspec-expectations/commit/e031971317884815f2397c70ee9b02e467d0ef3c)
5
+ * Support for Rake::MockResponse which does not have method code
6
+
1
7
  == 0.0.1
2
8
 
3
- * Matchers for HTTP response codes
9
+ * Matchers for HTTP response codes
data/Gemfile CHANGED
@@ -4,9 +4,10 @@ gem "rack", "~> 1.0"
4
4
  gem "ruby-debug", :platforms => [:ruby_18, :jruby]
5
5
  gem "ruby-debug19", :platforms => :ruby_19
6
6
  gem "rcov", :platforms => :ruby_18
7
+ gem "rake", "~> 0.9.2"
7
8
 
8
9
  platforms :jruby do
9
10
  gem "jruby-openssl"
10
11
  end
11
12
 
12
- gemspec
13
+ gemspec
data/README.rdoc CHANGED
@@ -1,8 +1,8 @@
1
- = RSpec HTTP 0.9.0
1
+ = RSpec HTTP 0.10.0
2
2
 
3
3
  (c) Copyright 2010-2011 {C42 Engineering}[http://c42.in]. All Rights Reserved.
4
4
 
5
- RSpec HTTP is a RSpec extension library that adds support for writing specs that cover HTTP based API (or more popularly, RESTful APIs).
5
+ RSpec HTTP is a RSpec extension library that adds support for writing specs that cover HTTP based APIs (or more popularly, RESTful APIs).
6
6
 
7
7
  To use this library, first add the rspec-http gem to your Gemfile like so:
8
8
  gem 'rspec-http', '~> 0.9'
data/Rakefile CHANGED
@@ -1,11 +1,14 @@
1
+ require "bundler/gem_tasks"
1
2
  require "bundler"
2
3
  Bundler.setup
3
4
 
5
+ require 'rake/dsl_definition'
4
6
  require 'rspec/core/rake_task'
5
7
 
8
+
6
9
  desc "Run all examples"
7
10
  RSpec::Core::RakeTask.new(:spec) do |t|
8
11
  t.rspec_opts = %w[--color]
9
12
  end
10
13
 
11
- task :default => :spec
14
+ task :default => :spec
@@ -14,7 +14,7 @@ module RSpec
14
14
  when String then HeaderStringMatcher.new(header, expected_value)
15
15
  when Regexp then HeaderRegexpMatcher.new(header, expected_value)
16
16
  when NO_VALUE then HeaderPresenceMatcher.new(header)
17
- else raise RSpec::Matchers::MatcherError.new("The value for a header should be either a String or a Regexp and not of type #{expected_value.class}")
17
+ else raise SyntaxError.new("The value for a header should be either a String or a Regexp and not of type #{expected_value.class}")
18
18
  end
19
19
  else
20
20
  @matcher = HeaderPresenceMatcher.new(header)
@@ -115,4 +115,4 @@ module RSpec
115
115
  end
116
116
  end
117
117
  end
118
- end
118
+ end
@@ -7,7 +7,7 @@ module RSpec
7
7
 
8
8
  def matches?(target)
9
9
  @target = target
10
- @target.code.to_i == @expected_code
10
+ @target.status == @expected_code
11
11
  end
12
12
 
13
13
  def description
@@ -23,12 +23,12 @@ module RSpec
23
23
  end
24
24
 
25
25
  def common_message
26
- message = "have a response code of #{@expected_code}, but got #{@target.code}"
27
- if @target.code.to_i == 302 || @target.code.to_i == 201
26
+ message = "have a response code of #{@expected_code}, but got #{@target.status}"
27
+ if @target.status == 302 || @target.status == 201
28
28
  message += " with a location of #{@target['Location'] || @target['location']}"
29
29
  end
30
30
  message
31
31
  end
32
32
  end
33
33
  end
34
- end
34
+ end
@@ -1,7 +1,7 @@
1
1
  module RSpec # :nodoc:
2
2
  module Http # :nodoc:
3
3
  module Version # :nodoc:
4
- STRING = '0.9.0'
4
+ STRING = '0.10.0'
5
5
  end
6
6
  end
7
7
  end
@@ -4,16 +4,16 @@ module RSpec::Http
4
4
  describe HeaderMatchers do
5
5
  let(:response) { Rack::Response.new }
6
6
  before(:each) { response["Content-Type"] = "text/plain"}
7
-
7
+
8
8
  context "checking for the presence of a header" do
9
9
  it "passes if the header is set" do
10
10
  response.should have_header("Content-Type")
11
11
  end
12
-
12
+
13
13
  it "fails if the header is not set" do
14
14
  response.should_not have_header("Foobar")
15
15
  end
16
-
16
+
17
17
  it "returns an appropriate failure message in the positive case" do
18
18
  lambda {
19
19
  response.should have_header("Foobar")
@@ -25,7 +25,7 @@ module RSpec::Http
25
25
  response.should_not have_header("Content-Type")
26
26
  }.should fail_with("The header 'Content-Type' should not have been found, but it was and it has a value of 'text/plain'")
27
27
  end
28
-
28
+
29
29
  it "should be case insensitive" do
30
30
  response.should have_header("Content-Type")
31
31
  response.should have_header("content-type")
@@ -33,17 +33,17 @@ module RSpec::Http
33
33
  response.should have_header("CONTENT-TYPE")
34
34
  end
35
35
  end
36
-
36
+
37
37
  context "checking the value of the header" do
38
38
  it "passes if the value is set correctly" do
39
39
  response.should have_header("Content-Type" => "text/plain")
40
40
  end
41
-
41
+
42
42
  context "incorrect value" do
43
43
  it "fails if the value is incorrect" do
44
44
  response.should_not have_header("Content-Type" => "text/csv")
45
45
  end
46
-
46
+
47
47
  it "returns an appropriate failure message in the positive case" do
48
48
  lambda {
49
49
  response.should have_header("Content-Type" => "text/csv")
@@ -56,12 +56,12 @@ module RSpec::Http
56
56
  }.should fail_with("Expected the response header 'Content-Type' to have a value that is not 'text/plain'")
57
57
  end
58
58
  end
59
-
59
+
60
60
  context "missing header" do
61
61
  it "fails if the header is missing" do
62
62
  response.should_not have_header("Foobar" => "text/csv")
63
63
  end
64
-
64
+
65
65
  it "returns an appropriate failure message in the positive case" do
66
66
  lambda {
67
67
  response.should have_header("Foobar" => "text/csv")
@@ -69,17 +69,17 @@ module RSpec::Http
69
69
  end
70
70
  end
71
71
  end
72
-
72
+
73
73
  context "comparing the value to a regex" do
74
74
  it "passes if the value is set correctly" do
75
75
  response.should have_header("Content-Type" => /plain/)
76
76
  end
77
-
77
+
78
78
  context "incorrect value" do
79
79
  it "fails if the value is incorrect" do
80
80
  response.should_not have_header("Content-Type" => /csv/)
81
81
  end
82
-
82
+
83
83
  it "returns an appropriate failure message in the positive case" do
84
84
  lambda {
85
85
  response.should have_header("Content-Type" => /csv/)
@@ -92,24 +92,24 @@ module RSpec::Http
92
92
  }.should fail_with("Expected the response header 'Content-Type' to have a value that does not match /plain/ but it was 'text/plain'")
93
93
  end
94
94
  end
95
-
95
+
96
96
  context "missing header" do
97
97
  it "fails if the header is missing" do
98
98
  response.should_not have_header("Foobar" => /csv/)
99
99
  end
100
-
100
+
101
101
  it "returns an appropriate failure message in the positive case" do
102
102
  lambda {
103
103
  response.should have_header("Foobar" => "text/csv")
104
104
  }.should fail_with("The header 'Foobar' was not found")
105
105
  end
106
106
  end
107
-
107
+
108
108
  it "fails if the value is something other than a String or Regexp" do
109
109
  lambda {
110
110
  response.should have_header("Content-Type" => [])
111
- }.should raise_error(RSpec::Matchers::MatcherError, 'The value for a header should be either a String or a Regexp and not of type Array')
111
+ }.should raise_error(SyntaxError, 'The value for a header should be either a String or a Regexp and not of type Array')
112
112
  end
113
113
  end
114
114
  end
115
- end
115
+ end
@@ -4,54 +4,48 @@ module RSpec::Http
4
4
  describe ResponseCodeMatchers do
5
5
  include ResponseCodeMatchers
6
6
 
7
- let(:response) { mock('HTTP Response') }
8
-
9
7
  context 'status to matcher conversion' do
10
8
  it "replaces spaces with underscores" do
11
9
  StatusCodes.clean_up_status("Method Not Allowed").should eq(:method_not_allowed)
12
10
  end
13
-
11
+
14
12
  it "downcases capital letters" do
15
13
  StatusCodes.clean_up_status("IM Used").should eq(:im_used)
16
14
  end
17
-
15
+
18
16
  it "removes apostrophes" do
19
17
  StatusCodes.clean_up_status("I'm A Teapot").should eq(:im_a_teapot)
20
18
  end
21
-
19
+
22
20
  it "replaces hyphens with underscores" do
23
21
  StatusCodes.clean_up_status("Non-Authoritative Information").should eq(:non_authoritative_information)
24
22
  end
25
23
  end
26
-
24
+
27
25
  context "matching codes" do
28
26
  StatusCodes.values.each do |code, status|
29
27
  it "understands if a response is of type #{status}" do
30
- response.stub(:code).and_return(code.to_s)
28
+ response = Rack::MockResponse.new(code, {}, "")
31
29
  response.should send("be_http_#{StatusCodes.as_valid_method_name(code)}")
32
30
  end
33
-
31
+
34
32
  it "understands if a response is not of type #{status}" do
35
- response.stub(:code).and_return('0')
33
+ response = Rack::MockResponse.new(0, {}, "")
36
34
  response.should_not send("be_http_#{StatusCodes.as_valid_method_name(code)}")
37
35
  end
38
36
  end
39
-
37
+
40
38
  context "where the value of the location header field can be important" do
41
- before :each do
42
- response.stub(:[]).with('Location').and_return('http://test.server')
43
- end
44
-
45
39
  it "response of type created" do
46
- response.stub(:code).and_return('201')
40
+ response = Rack::MockResponse.new(201, {"Location" => "http://test.server"}, "")
47
41
  expect{ response.should be_http_ok }.to raise_error(/with a location of http:\/\/test\.server$/)
48
42
  end
49
43
 
50
44
  it "response of type redirect" do
51
- response.stub(:code).and_return('302')
45
+ response = Rack::MockResponse.new(302, {"Location" => "http://test.server"}, "")
52
46
  expect{ response.should be_http_ok }.to raise_error(/with a location of http:\/\/test\.server$/)
53
47
  end
54
48
  end
55
49
  end
56
50
  end
57
- end
51
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-08-18 00:00:00.000000000 +05:30
14
- default_executable:
13
+ date: 2012-05-09 00:00:00.000000000Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: rspec
18
- requirement: &2152429900 !ruby/object:Gem::Requirement
17
+ requirement: &70143901345000 !ruby/object:Gem::Requirement
19
18
  none: false
20
19
  requirements:
21
20
  - - ~>
@@ -23,7 +22,7 @@ dependencies:
23
22
  version: '2.0'
24
23
  type: :runtime
25
24
  prerelease: false
26
- version_requirements: *2152429900
25
+ version_requirements: *70143901345000
27
26
  description: RSpec HTTP is an extension library that makes it easier to write specs
28
27
  for HTTP/REST APIs
29
28
  email: ckponnappa@gmail.com
@@ -51,7 +50,6 @@ files:
51
50
  - spec/rspec/http/response_code_matchers_spec.rb
52
51
  - spec/spec_helper.rb
53
52
  - spec/support/matchers.rb
54
- has_rdoc: true
55
53
  homepage: http://c42.in/open_source
56
54
  licenses: []
57
55
  post_install_message:
@@ -65,15 +63,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
63
  - - ! '>='
66
64
  - !ruby/object:Gem::Version
67
65
  version: '0'
66
+ segments:
67
+ - 0
68
+ hash: -941351284999052965
68
69
  required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  none: false
70
71
  requirements:
71
72
  - - ! '>='
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
75
+ segments:
76
+ - 0
77
+ hash: -941351284999052965
74
78
  requirements: []
75
79
  rubyforge_project:
76
- rubygems_version: 1.6.2
80
+ rubygems_version: 1.8.10
77
81
  signing_key:
78
82
  specification_version: 3
79
83
  summary: RSpec HTTP is an extension library that makes it easier to write specs for