httpspec_simple 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5514ba53d9108406aac1f80530b6926bddbedb58
4
- data.tar.gz: 273a467cd18a9e54e10dd80266202167ab9a2889
3
+ metadata.gz: 449b2744628e5346a0b00d4b2821594d6c7a2fa0
4
+ data.tar.gz: fe55183fdaf2626edd5f143ec3aa4697597cb580
5
5
  SHA512:
6
- metadata.gz: 1120cc25e2addd35c536fb37f60936538193b4cda2bfedff8c35abcbe76a1e056ca6db2814ccf225df11dcebda2ac2c0e51fbfd176aec693059d14f80ed16e34
7
- data.tar.gz: 71bc7074b5b87acf5a1c687ef923898c9e14449fd07d9ab068725766b68ddfb9a753fffd38708f2a5f2dda4e150bdabb8d6a3aa6be13b6b66f01571e64359f23
6
+ metadata.gz: 616d09c544780c39a702af97489cbf44514bec61129557a7726903b53668cfd9458e4589154320454a61a8570b8c0d646571e097135266a0439d06b259b99ea1
7
+ data.tar.gz: bef28e58f66faed2c1b4deb216393ccfe9753cb0a305ba510180dc4990d3de0121c592e1ed08e9dfca5af19029352f8769065d53b2d37a84cad74362de8200b0
data/README.md CHANGED
@@ -20,7 +20,7 @@ describe request('/blog/archives/') do
20
20
  end
21
21
  ```
22
22
 
23
- ## Custom matcher
23
+ ## Custom matchers
24
24
 
25
25
  ### be_http_ok
26
26
 
@@ -30,6 +30,16 @@ Example passes if response is 200 ok
30
30
 
31
31
  Example passes if response time is less than n seconds
32
32
 
33
+ ## helper method
34
+
35
+ ### request(url)
36
+
37
+ Do request
38
+
39
+ ### base_url(prepend_string)
40
+
41
+ Prepend to the url string passed to following `request` method
42
+
33
43
  ## Contributing
34
44
 
35
45
  1. Fork it
@@ -30,4 +30,36 @@ module HttpspecSimple
30
30
  "respond within #{expected} seconds"
31
31
  end
32
32
  end
33
+
34
+ RSpec::Matchers.define :retrieve_body_including do |expected|
35
+ match do |actual|
36
+ actual.body.include?(expected)
37
+ end
38
+
39
+ failure_message_for_should do |actual|
40
+ "expected the body to include \"#{expected}\""
41
+ end
42
+ end
43
+
44
+ RSpec::Matchers.define :retrieve_body_matching do |expected|
45
+ match do |actual|
46
+ matchdata = actual.body.match(expected)
47
+ @captures = matchdata.captures if matchdata
48
+ !matchdata.nil?
49
+ end
50
+
51
+ failure_message_for_should do |actual|
52
+ "expected the body to match \"#{expected}\""
53
+ end
54
+
55
+ define_method :description do
56
+ if @captures
57
+ messages = []
58
+ @captures.each_with_index {|capture, index| messages.push("#{index} => \"#{capture}\"")}
59
+ "retrieve body matching /#{expected}/ {#{messages.join(" ")}}"
60
+ else
61
+ "retrieve body matching /#{expected}/"
62
+ end
63
+ end
64
+ end
33
65
  end
@@ -3,7 +3,7 @@ require 'uri'
3
3
 
4
4
  module HttpspecSimple
5
5
  class Request
6
- attr_reader :response_time, :status
6
+ attr_reader :response_time, :status, :body
7
7
 
8
8
  def initialize(url, opt = {})
9
9
  @url = URI.parse(url)
@@ -13,8 +13,8 @@ module HttpspecSimple
13
13
  http.open_timeout = opt[:timeout]
14
14
  end
15
15
  retry_count = opt[:retry].to_i
16
- @status, @response_time = http.start do |http|
17
- res, response_time = process_time do
16
+ res, @response_time = http.start do |http|
17
+ process_time do
18
18
  open_timeout_error = if Net.const_defined?(:OpenTimeout) then Net::OpenTimeout else Timeout::Error end
19
19
  read_timeout_error = if Net.const_defined?(:ReadTimeout) then Net::ReadTimeout else Timeout::Error end
20
20
  begin
@@ -25,11 +25,12 @@ module HttpspecSimple
25
25
  end
26
26
  res
27
27
  end
28
- unless res.nil?
29
- [res.code, response_time]
30
- else
31
- ['timeout', response_time]
32
- end
28
+ end
29
+ @status = res ? res.code : 'timeout'
30
+ unless res.nil?
31
+ @body = res.body
32
+ charset = (res['content-type'] || '').split(';').select{|i| i.start_with?('charset=')}.map{|i| i.sub('charset=', '')}[0]
33
+ @body.force_encoding(charset) unless charset.nil?
33
34
  end
34
35
  end
35
36
 
@@ -1,3 +1,3 @@
1
1
  module HttpspecSimple
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -22,4 +22,22 @@ describe 'custom matchers' do
22
22
  }.to raise_error(RSpec::Expectations::ExpectationNotMetError)
23
23
  end
24
24
  end
25
+
26
+ describe '#retrieve_body_including(string)' do
27
+ it "should check response body" do
28
+ requests, response = server_start('/' => Proc.new {|req, res| res.body = "<div>body string</div>" }) do
29
+ request('/')
30
+ end
31
+ response.should retrieve_body_including 'dy st'
32
+ end
33
+ end
34
+
35
+ describe '#retrieve_body_matching(regexp)' do
36
+ it "should check response body" do
37
+ requests, response = server_start('/' => Proc.new {|req, res| res.body = "<div>body string</div>" }) do
38
+ request('/')
39
+ end
40
+ response.should retrieve_body_matching %r|<div>(.+?)</div>|
41
+ end
42
+ end
25
43
  end
@@ -50,4 +50,11 @@ describe HttpspecSimple::Request do
50
50
  end
51
51
  end
52
52
  end
53
+
54
+ it "should store the response body" do
55
+ requests, response = server_start( '/' => Proc.new {|req, res| res.body = "body_string" } ) do
56
+ HttpspecSimple::Request.new('http://localhost:10080/')
57
+ end
58
+ response.body.should == "body_string"
59
+ end
53
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httpspec_simple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koji NAKAMURA