apirunner 0.4.9 → 0.4.10

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.9
1
+ 0.4.10
data/apirunner.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{apirunner}
8
- s.version = "0.4.9"
8
+ s.version = "0.4.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["jan@moviepilot.com"]
12
- s.date = %q{2010-10-28}
12
+ s.date = %q{2010-10-29}
13
13
  s.description = %q{apirunner is a testsuite to query your RESTful JSON API and match response with your defined expectations}
14
14
  s.email = %q{developers@moviepilot.com}
15
15
  s.extra_rdoc_files = [
@@ -54,6 +54,7 @@ Gem::Specification.new do |s|
54
54
  "lib/apirunner/railtie.rb",
55
55
  "lib/checker.rb",
56
56
  "lib/csv_writer.rb",
57
+ "lib/curl_command_generator.rb",
57
58
  "lib/expectation_matcher.rb",
58
59
  "lib/http_client.rb",
59
60
  "lib/plugins/plug01_response_json_syntax_checker.rb",
@@ -0,0 +1,25 @@
1
+ module CurlCommandGenerator
2
+ def curlize(url, options = {})
3
+ options = {:method => :get, :body => nil, :headers => nil}.merge( options )
4
+ "curl -i #{headers2args(options[:headers])} #{method2arg(options[:method])} #{body2arg(options[:body])} #{url}"
5
+ end
6
+
7
+ private
8
+ def method2arg(method_name)
9
+ method_name && [:get,:put,:delete,:post].include?(method_name.to_sym) ? "-X#{method_name.to_s.upcase}" : ""
10
+ end
11
+
12
+ def body2arg(body)
13
+ # TODO: format body depending on the content type that is set, not always as json
14
+ body ? "-d'#{body.to_json}'" : ""
15
+ end
16
+
17
+ def headers2args(hash)
18
+ hash ? hash.inject(""){|string, key_value| string += " -H\"#{key_value[0]}: #{escape_quotes(key_value[1])}\""} : ""
19
+ end
20
+
21
+
22
+ def escape_quotes(string)
23
+ string.to_s.gsub(/"/, '\"')
24
+ end
25
+ end
data/lib/http_client.rb CHANGED
@@ -1,4 +1,8 @@
1
+ require 'curl_command_generator'
2
+
1
3
  class HttpClient
4
+ include ::CurlCommandGenerator
5
+
2
6
  require 'net/http'
3
7
  require "cgi"
4
8
  require "benchmark"
@@ -34,27 +38,31 @@ class HttpClient
34
38
 
35
39
  # sends GET request and returns response
36
40
  def get(headers, resource, data, params)
37
- request = Net::HTTP::Get.new(build_uri(resource, params).request_uri, initheader = headers)
41
+ puts curlize( build_uri(resource, params), :headers => headers, :method => :get, :body => data) if ENV['VERBOSE']
42
+ request = Net::HTTP::Get.new(build_uri(resource, params).request_uri, headers)
38
43
  return Benchmark.realtime{ @response = @http.request(request) }, @response
39
44
  end
40
45
 
41
46
  # sends PUT request and returns response
42
47
  def put(headers, resource, data, params)
43
- request = Net::HTTP::Put.new(resource_path(resource), initheader = headers)
48
+ puts curlize( build_uri(resource, params), :headers => headers, :method => :put, :body => data) if ENV['VERBOSE']
49
+ request = Net::HTTP::Put.new(resource_path(resource), headers)
44
50
  request.body = data.to_json
45
51
  return Benchmark.realtime{ @response = @http.request(request) }, @response
46
52
  end
47
53
 
48
54
  # sends POST request and returns response
49
55
  def post(headers, resource, data, params)
50
- request = Net::HTTP::Post.new(resource_path(resource), initheader = headers)
56
+ puts curlize( build_uri(resource, params), :headers => headers, :method => :post, :body => data) if ENV['VERBOSE']
57
+ request = Net::HTTP::Post.new(resource_path(resource), headers)
51
58
  request.body = data.to_json
52
59
  return Benchmark.realtime{ @response = @http.request(request) }, @response
53
60
  end
54
61
 
55
62
  # sends DELETE request and returns response
56
63
  def delete(headers, resource, data, params)
57
- request = Net::HTTP::Delete.new(resource_path(resource), initheader = headers)
64
+ puts curlize( build_uri(resource, params), :headers => headers, :method => :delete, :body => data) if ENV['VERBOSE']
65
+ request = Net::HTTP::Delete.new(resource_path(resource), headers)
58
66
  return Benchmark.realtime{ @response = @http.request(request) }, @response
59
67
  end
60
68
 
@@ -41,7 +41,7 @@ describe 'http_client' do
41
41
  @http_client.send(:build_response, response, 0.0, "GET", "resource", {}).code.should_not be_nil
42
42
  @http_client.send(:build_response, response, 0.0, "GET", "resource", {}).message.should_not be_nil
43
43
  @http_client.send(:build_response, response, 0.0, "GET", "resource", {}).body.should == {:duffy => "duck"}
44
- @http_client.send(:build_response, response, 0.0, "GET", "resource", {}).headers.should == {:daisy => "duck"}
44
+ @http_client.send(:build_response, response, 0.0, "GET", "resource", {}).headers.should == {"daisy" => "duck"}
45
45
  end
46
46
  end
47
47
  describe "resource_path" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 9
9
- version: 0.4.9
8
+ - 10
9
+ version: 0.4.10
10
10
  platform: ruby
11
11
  authors:
12
12
  - jan@moviepilot.com
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-28 00:00:00 +02:00
17
+ date: 2010-10-29 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -256,6 +256,7 @@ files:
256
256
  - lib/apirunner/railtie.rb
257
257
  - lib/checker.rb
258
258
  - lib/csv_writer.rb
259
+ - lib/curl_command_generator.rb
259
260
  - lib/expectation_matcher.rb
260
261
  - lib/http_client.rb
261
262
  - lib/plugins/plug01_response_json_syntax_checker.rb
@@ -291,7 +292,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
291
292
  requirements:
292
293
  - - ">="
293
294
  - !ruby/object:Gem::Version
294
- hash: 4590717876218024260
295
+ hash: -2862160756938208368
295
296
  segments:
296
297
  - 0
297
298
  version: "0"