httpspec_simple 0.1.7 → 0.1.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 645b42d56bb4db55f1dce37ace28f07581258232
4
- data.tar.gz: 624b70cab0c40e33688cd238c98b4ac47373bbdb
3
+ metadata.gz: c7a4a13d7119d5d2f05affddfb927380d85f57c4
4
+ data.tar.gz: 3f71018eafd3e423a945b962d07edc8a54163ce9
5
5
  SHA512:
6
- metadata.gz: e1bbc733be03f4974d79412c859d2672151ca5a25c6f22e46504f6ed726795428a221379733a3396d22bc95955c9aa246cfbc208849f400ff5b1d68de75b5e84
7
- data.tar.gz: e6d6b01a230f5b1d8a3c2c7e4adfde90fdea988c9adc5c44310ee920caf266df9d57ebbf96f86cd521cb769492db078f928b35588777e4bd5f10bea5ade482a0
6
+ metadata.gz: 70c10461277c63e4203225f5c902a6280bc85433bee02092e60b6db0c88a1ad975e023ea3087dc7903d5c6c55579aa66a219cc7d928cb15a9a716061ecb2bcd4
7
+ data.tar.gz: af985c27b460a7a61b8127f29065cd1c509220fe27492f9772453c0c6aaa405e7b13212f949bdb604d4e3a706121efe8a38ebfafde11660c6b3123e4395a2524
data/README.md CHANGED
@@ -42,6 +42,18 @@ http://kozy4324.github.io/blog/archives/
42
42
 
43
43
  Example passes if response is 200 ok
44
44
 
45
+ ### be_http_redirect
46
+
47
+ Example passes if response is 301 or 302
48
+
49
+ ### be_http_redirect_301_to(url)
50
+
51
+ Example passes if response is 301 and `Location` response header has a value which equals expected url
52
+
53
+ ### be_http_redirect_302_to(url)
54
+
55
+ Example passes if response is 302 and `Location` response header has a value which equals expected url
56
+
45
57
  ### resond_within(n).seconds
46
58
 
47
59
  Example passes if response time is less than n seconds
@@ -27,6 +27,24 @@ module HttpspecSimple
27
27
  end
28
28
  end
29
29
 
30
+ %w|301 302|.each do |code|
31
+ RSpec::Matchers.define "be_http_redirect_#{code}_to".to_sym do |expected|
32
+ match do |actual|
33
+ location_header = (actual.headers['location'] || []).first
34
+ actual.status == code && location_header == expected
35
+ end
36
+
37
+ failure_message_for_should do |actual|
38
+ if actual.status == '301' || actual.status == '302'
39
+ location_header = (actual.headers['location'] || []).first
40
+ "expected: #{code}, #{expected}\n got: #{actual.status}, #{location_header}"
41
+ else
42
+ "expected: #{code}, #{expected}\n got: #{actual.status}"
43
+ end
44
+ end
45
+ end
46
+ end
47
+
30
48
  RSpec::Matchers.define :respond_within do |expected|
31
49
  match do |actual|
32
50
  (@response_time = actual.response_time) < expected
@@ -3,7 +3,7 @@ require 'uri'
3
3
 
4
4
  module HttpspecSimple
5
5
  class Request
6
- attr_reader :response_time, :status, :body
6
+ attr_reader :response_time, :status, :body, :headers
7
7
 
8
8
  def initialize(url, opt = {})
9
9
  @url = URI.parse(url)
@@ -30,6 +30,7 @@ module HttpspecSimple
30
30
  end
31
31
  end
32
32
  @status = res ? res.code : 'timeout'
33
+ @headers = res ? res.to_hash : {}
33
34
  unless res.nil?
34
35
  @body = res.body
35
36
  charset = (res['content-type'] || '').split(';').select{|i| i.start_with?('charset=')}.map{|i| i.sub('charset=', '')}[0]
@@ -78,6 +79,7 @@ module HttpspecSimple
78
79
  def response_time; self.class.response_time; end
79
80
  def status; self.class.status; end
80
81
  def body; self.class.body; end
82
+ def headers; self.class.headers; end
81
83
  end
82
84
  class << sub
83
85
  def url=(_url); @url = _url; end
@@ -87,6 +89,7 @@ module HttpspecSimple
87
89
  def response_time; request.response_time; end
88
90
  def status; request.status; end
89
91
  def body; request.body; end
92
+ def headers; request.headers; end
90
93
  end
91
94
  sub.url = url
92
95
  sub.opt = opt
@@ -1,3 +1,3 @@
1
1
  module HttpspecSimple
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
@@ -34,6 +34,31 @@ describe 'custom matchers' do
34
34
  end
35
35
  end
36
36
 
37
+ describe '#be_http_redirect_30(1|2)_to' do
38
+ it "should check status code 301 with Location header" do
39
+ _, response = server_start('/' => Proc.new {|req, res|
40
+ res.status = '301'
41
+ res['Location'] = 'http://example.com/hoge'
42
+ }) do
43
+ response = request('/', :immediately => true)
44
+ end
45
+ expect {
46
+ response.should be_http_redirect_301_to 'http://example.com/hoge'
47
+ }.not_to raise_error
48
+ end
49
+ it "should check status code 302 with Location header" do
50
+ _, response = server_start('/' => Proc.new {|req, res|
51
+ res.status = '302'
52
+ res['Location'] = 'http://example.com/foo'
53
+ }) do
54
+ response = request('/', :immediately => true)
55
+ end
56
+ expect {
57
+ response.should be_http_redirect_302_to 'http://example.com/foo'
58
+ }.not_to raise_error
59
+ end
60
+ end
61
+
37
62
  describe '#respond_within(num).seconds' do
38
63
  it "should check response time" do
39
64
  requests, response = server_start('/' => Proc.new {|req, res| sleep 2 }) do
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpspec_simple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koji NAKAMURA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-12 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.14.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.14.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: RSpec extension for HTTP request
@@ -59,8 +59,8 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
62
+ - ".gitignore"
63
+ - ".rspec"
64
64
  - Gemfile
65
65
  - LICENSE.txt
66
66
  - README.md
@@ -84,17 +84,17 @@ require_paths:
84
84
  - lib
85
85
  required_ruby_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - '>='
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.0.3
97
+ rubygems_version: 2.2.0
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: RSpec extension for HTTP request