apirunner 0.1.1 → 0.1.3

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/Gemfile CHANGED
@@ -15,4 +15,5 @@ group :development do
15
15
  gem "bundler", "~> 1.0.0"
16
16
  gem "jeweler", "~> 1.5.0.pre3"
17
17
  gem "rcov", ">= 0"
18
+ gem "mocha", ">= 0.9.8"
18
19
  end
data/Gemfile.lock CHANGED
@@ -20,6 +20,8 @@ GEM
20
20
  git (>= 1.2.5)
21
21
  rake
22
22
  json_pure (1.4.6)
23
+ mocha (0.9.8)
24
+ rake
23
25
  nokogiri (1.4.3.1)
24
26
  rake (0.8.7)
25
27
  rcov (0.9.9)
@@ -44,6 +46,7 @@ DEPENDENCIES
44
46
  cucumber
45
47
  httparty (~> 0.6.1)
46
48
  jeweler (~> 1.5.0.pre3)
49
+ mocha (>= 0.9.8)
47
50
  nokogiri (~> 1.4.3.1)
48
51
  rcov
49
52
  rspec (>= 2.0.0.beta.19)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.3
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.1.1"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["moviepilot"]
12
- s.date = %q{2010-09-20}
12
+ s.date = %q{2010-09-21}
13
13
  s.description = %q{longer description of your gem}
14
14
  s.email = %q{developers@moviepilot.com}
15
15
  s.extra_rdoc_files = [
@@ -40,7 +40,9 @@ Gem::Specification.new do |s|
40
40
  "lib/http_client.rb",
41
41
  "lib/tasks/api.rake",
42
42
  "spec/.rspec",
43
+ "spec/api_runner_spec.rb",
43
44
  "spec/expectation_matcher_spec.rb",
45
+ "spec/http_client_spec.rb",
44
46
  "spec/spec_helper.rb"
45
47
  ]
46
48
  s.homepage = %q{http://github.com/moviepilot/apirunner}
@@ -48,7 +50,9 @@ Gem::Specification.new do |s|
48
50
  s.rubygems_version = %q{1.3.7}
49
51
  s.summary = %q{one-line summary of your gem}
50
52
  s.test_files = [
53
+ "spec/api_runner_spec.rb",
51
54
  "spec/expectation_matcher_spec.rb",
55
+ "spec/http_client_spec.rb",
52
56
  "spec/spec_helper.rb"
53
57
  ]
54
58
 
@@ -64,6 +68,7 @@ Gem::Specification.new do |s|
64
68
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
65
69
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
66
70
  s.add_development_dependency(%q<rcov>, [">= 0"])
71
+ s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
67
72
  s.add_development_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
68
73
  s.add_development_dependency(%q<cucumber>, [">= 0"])
69
74
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -77,6 +82,7 @@ Gem::Specification.new do |s|
77
82
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
78
83
  s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
79
84
  s.add_dependency(%q<rcov>, [">= 0"])
85
+ s.add_dependency(%q<mocha>, [">= 0.9.8"])
80
86
  s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
81
87
  s.add_dependency(%q<cucumber>, [">= 0"])
82
88
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -91,6 +97,7 @@ Gem::Specification.new do |s|
91
97
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
92
98
  s.add_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
93
99
  s.add_dependency(%q<rcov>, [">= 0"])
100
+ s.add_dependency(%q<mocha>, [">= 0.9.8"])
94
101
  s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
95
102
  s.add_dependency(%q<cucumber>, [">= 0"])
96
103
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
data/lib/api_runner.rb CHANGED
@@ -3,9 +3,13 @@ class ApiRunner
3
3
  require 'expectation_matcher'
4
4
  require 'http_client'
5
5
 
6
+ CONFIG_FILE = "config/api_runner.yml"
7
+ SPEC_PATH = "test/api_runner/"
8
+ EXCLUDES_FILE = "test/api_runner/excludes.yml"
9
+
6
10
  # initializes the object, loads environment, build base_uri
7
11
  def initialize(env)
8
- @http_client11 = HttpClient.new
12
+ @http_client = HttpClient.new
9
13
  @spec = []
10
14
  @errors = []
11
15
  @excludes = []
@@ -63,13 +67,13 @@ class ApiRunner
63
67
 
64
68
  # loads environment config data from yaml file
65
69
  def load_config(env)
66
- config = YAML.load_file("config/api_runner.yml")
70
+ config = YAML.load_file(self.class.config_file)
67
71
  config[env.to_s].each { |key, value| instance_variable_set("@#{key}", value) }
68
72
  end
69
73
 
70
74
  # loads spec cases from yaml files
71
75
  def load_url_spec
72
- path = "test/api_runner/"
76
+ path = self.class.spec_path
73
77
  Dir.new(path).entries.each do |dir_entry|
74
78
  @spec.push *YAML.load_file(path+dir_entry) if not (File.directory? dir_entry or dir_entry.match(/^\./) or dir_entry.match(/excludes/))
75
79
  end
@@ -77,8 +81,23 @@ class ApiRunner
77
81
 
78
82
  # loads and parses items that need to be excluded from the checks in certain environments
79
83
  def load_excludes(env)
80
- excludes_file = "test/api_runner/excludes.yml"
84
+ excludes_file = self.class.excludes_file
81
85
  @excludes = YAML.load_file(excludes_file).detect{ |a| a.first == env.to_s }[1]["excludes"]
82
86
  end
87
+
88
+ # returns config files path and can be stubbed this way
89
+ def self.config_file
90
+ CONFIG_FILE
91
+ end
92
+
93
+ # returns path to spec files that can be stubbed for tests
94
+ def self.spec_path
95
+ SPEC_PATH
96
+ end
97
+
98
+ # returns excludes file path that can be stubbed
99
+ def self.excludes_file
100
+ EXCLUDES_FILE
101
+ end
83
102
  end
84
103
 
@@ -3,7 +3,7 @@ class ExpectationMatcher
3
3
 
4
4
  def initialize(excludes=nil)
5
5
  @test_types = [:response_code, :response_body_format, :response_headers, :response_body]
6
- @excludes = excludes
6
+ @excludes = excludes || []
7
7
  end
8
8
 
9
9
  # returns the available test types if this matcher class
@@ -145,7 +145,6 @@ class ExpectationMatcher
145
145
 
146
146
  # returns true if the given regular expression matches the given value
147
147
  def regex_matches?(regex, value)
148
- debugger
149
148
  regex = Regexp.compile( regex.gsub(/^\//, '').gsub(/\/$/,'') )
150
149
  !!value.to_s.match(regex)
151
150
  end
data/lib/http_client.rb CHANGED
@@ -4,9 +4,11 @@ class HttpClient
4
4
 
5
5
  # sends http request with given method, uri and data and returns servers response
6
6
  def send_request(method, uri, data=nil)
7
- build_response(self.class.send(method, uri, data))
7
+ build_response(self.class.send(method, uri, data ||= {}))
8
8
  end
9
9
 
10
+ protected
11
+
10
12
  # returns struct containing response.code, headers, body and message
11
13
  # this is only for easily interfaceing another http client
12
14
  def build_response(raw_response)
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'apirunner' do
4
+ before(:each) do
5
+ ApiRunner.stub(:config_file).and_return("examples/config/api_runner.yml")
6
+ ApiRunner.stub(:excludes_file).and_return("examples/test/api_runner/excludes.yml")
7
+ ApiRunner.stub(:spec_path).and_return("examples/test/api_runner/")
8
+ @a = ApiRunner.new(:local)
9
+ end
10
+ describe 'initialize' do
11
+ it 'should fill all instance variables' do
12
+ @a.instance_variable_get(:@protocol).should eql "http"
13
+ @a.instance_variable_get(:@host).should eql "localhost"
14
+ @a.instance_variable_get(:@port).should eql 3000
15
+ @a.instance_variable_get(:@namespace).should eql "api1v0"
16
+ end
17
+ it 'should fill @excludes' do
18
+ @a.instance_variable_get(:@excludes).should_not be_nil
19
+ @a.instance_variable_get(:@excludes).should be_a(Array)
20
+ @a.instance_variable_get(:@excludes).include?("content-length").should be_true
21
+ @a.instance_variable_get(:@excludes).include?("notthere").should be_false
22
+ end
23
+ it 'should fill @spec'
24
+ it 'should instantiate an http client into @http_client' do
25
+ @a.instance_variable_get(:@http_client).should be_a(HttpClient)
26
+ end
27
+ it 'should instantiate an expectation_matcher into @expectation' do
28
+ @a.instance_variable_get(:@expectation).should be_a(ExpectationMatcher)
29
+ end
30
+ end
31
+
32
+ describe 'run_tests' do
33
+ it 'should send a request for every given testcase'
34
+ it 'should run a test for every test_type'
35
+ it 'should output an "F" if an error occured'
36
+ it 'should save an error message in @errors if an error occured'
37
+ it 'should output a "." if all test_types of a certain test_case passed'
38
+ end
39
+
40
+ describe 'send_request' do
41
+ it 'should invoke send_request at the @http_client with the appropiate method, uri and data'
42
+ end
43
+
44
+ describe 'target_uri' do
45
+ it 'should create a correct target uri from existing instance variables'
46
+ end
47
+
48
+ describe 'server_is_available?' do
49
+ it 'should return true if the requested server is available'
50
+ it 'should return false if the given server is not available'
51
+ end
52
+
53
+ describe 'load_config' do
54
+ it 'should load the configuration from a YAML file'
55
+ it 'should put the config into certain instance variables'
56
+ end
57
+
58
+ describe 'load_url_spec' do
59
+ it 'should load the URL spec from a YAML file'
60
+ it 'should create an array of test_cases in @spec instance variable'
61
+ end
62
+
63
+ describe 'load_excludes' do
64
+ it 'should load the excludes from a yaml file'
65
+ it 'should populate @excludes instance variable with the excludes from the YAML file'
66
+ it 'should make sure that @excludes is an array'
67
+ end
68
+ end
@@ -1,6 +1,11 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'json'
3
+ require 'nokogiri'
2
4
 
3
5
  describe 'ExpectationMatcher' do
6
+ before(:each) do
7
+ @em = ExpectationMatcher.new
8
+ end
4
9
  describe 'regex_matches?' do
5
10
  it 'should return true if given regex matches the given string' do
6
11
  ExpectationMatcher.new.send(:regex_matches?, "/^\\d{2}$/", "12").should be_true
@@ -9,5 +14,221 @@ describe 'ExpectationMatcher' do
9
14
  ExpectationMatcher.new.send(:regex_matches?, "/^\\d{2}$/", "133").should be_false
10
15
  end
11
16
  end
17
+
18
+ describe 'testtypes' do
19
+ it 'should return the available testtypes of the class' do
20
+ @em.test_types.should eql ([:response_code, :response_body_format, :response_headers, :response_body])
21
+ end
22
+ it 'should at least return one testtype' do
23
+ @em.test_types.size.should >= 1
24
+ end
25
+ it 'should return an array of symbols' do
26
+ @em.test_types.should be_a(Array)
27
+ @em.test_types.each do |type|
28
+ type.should be_a(Symbol)
29
+ end
30
+ end
31
+ it 'should not return nil' do
32
+ @em.test_types.should_not be_nil
33
+ end
34
+ end
35
+
36
+ describe 'check' do
37
+ it 'should invoke http client with the given method, response and testcase' do
38
+ @em = ExpectationMatcher.new
39
+ @em.should_receive(:put)
40
+ @em.check(:put, {}, [])
41
+ @em.should_receive(:post)
42
+ @em.check(:post, {}, [])
43
+ @em.should_receive(:get)
44
+ @em.check(:get, {}, [])
45
+ @em.should_receive(:delete)
46
+ @em.check(:delete, {}, [])
47
+ end
48
+ end
49
+
50
+ describe 'response_code' do
51
+ it 'should return a struct representing success if the given response code matches the expected one' do
52
+ response_struct = Struct.new(:code, :message, :headers, :body)
53
+ response = response_struct.new
54
+ response.code = 404
55
+ testcase = { 'response_expectation' => { 'status_code' => 404 } }
56
+ @em.send(:response_code, response, testcase).should be_a(Struct)
57
+ @em.send(:response_code, response, testcase).succeeded.should be_true
58
+ @em.send(:response_code, response, testcase).error.should be_nil
59
+ end
60
+ it 'should return a struct representing failure if the given repsonse code does not match the expected one' do
61
+ response_struct = Struct.new(:code, :message, :headers, :body)
62
+ response = response_struct.new
63
+ response.code = 400
64
+ testcase = { 'response_expectation' => { 'status_code' => 404 } }
65
+ @em.send(:response_code, response, testcase).should be_a(Struct)
66
+ @em.send(:response_code, response, testcase).succeeded.should be_false
67
+ @em.send(:response_code, response, testcase).error.should_not be_nil
68
+ end
69
+ end
70
+
71
+ describe 'response_body_format' do
72
+ before(:each) do
73
+ response_struct = Struct.new(:code, :message, :headers, :body)
74
+ @response = response_struct.new
75
+ end
76
+ it 'should return a struct representing success if the given response body is nil, cause this is allowed' do
77
+ @response.body = nil
78
+ @em.send(:response_body_format, @response, {}).should be_a(Struct)
79
+ @em.send(:response_body_format, @response, {}).succeeded.should be_true
80
+ @em.send(:response_body_format, @response, {}).error.should be_nil
81
+ end
82
+ it 'should return the given response body in JSON format, if a valid JSON string is given to check' do
83
+ @response.body = {:fooz => "baaz"}.to_json
84
+ @em.send(:response_body_format, @response, {}).should be_a(Struct)
85
+ @em.send(:response_body_format, @response, {}).succeeded.should be_true
86
+ @em.send(:response_body_format, @response, {}).error.should be_nil
87
+ end
88
+ it 'should not fatal but return false, if the given response body is no valid JSON' do
89
+ @response.body = "foozbaz"
90
+ @em.send(:response_body_format, @response, {}).should be_a(Struct)
91
+ @em.send(:response_body_format, @response, {}).succeeded.should be_false
92
+ @em.send(:response_body_format, @response, {}).error.should_not be_nil
93
+ end
94
+ end
95
+
96
+ describe 'response_headers' do
97
+ before(:each) do
98
+ response_struct = Struct.new(:code, :message, :headers, :body)
99
+ @response = response_struct.new
100
+ end
101
+ it 'should return a struct representing success, if one certain expected header value matches the response header' do
102
+ pending "TODO:pair this one"
103
+ @response.headers = {"content-type"=>["text/html; charset=utf-8"], "cache-control"=>["no-cache"], "x-runtime"=>["0.340116"], "server"=>["WEBrick/1.3.1 (Ruby/1.9.2/2010-08-18)"], "date"=>["Tue, 21 Sep 2010 11:33:05 GMT"], "content-length"=>["149"], "connection"=>["close"], "Last-Modified" => "2010-10-01 23:23:23"}
104
+ testcase = { 'response_expectation' => { 'headers' => {"Last-Modified"=>"/.*/"} } }
105
+ @em.send(:response_headers, @response, testcase).should be_a(Struct)
106
+ @em.send(:response_headers, @response, testcase).succeeded.should be_true
107
+ @em.send(:response_headers, @response, testcase).error.should be_nil
108
+ end
109
+ it 'should return a struct representing success, if more than one expected header values match the ones in the repsonse header' do
110
+ pending "TODO: pair this one"
111
+ end
112
+ it 'should even return a struct representing success if the response header contains more values than the excpected' do
113
+ pending "TODO: pair this one"
114
+ end
115
+ it 'should return a struct representing an error, if one single expected header value does not match the one in response' do
116
+ pending "TODO: pair this one"
117
+ end
118
+ it 'should return a struct representing an error, if one of more expected header values does not match the corresponding one in the response' do
119
+ pending "TODO: pair this one"
120
+ end
121
+ it 'should return a struct representing success, if the expected header is nil - no expectation exists' do
122
+ pending "TODO: pair this one"
123
+ testcase = { 'response_expectation' => { 'headers' => nil } }
124
+ @em.send(:response_headers, @response, testcase).should be_a(Struct)
125
+ @em.send(:response_headers, @response, testcase).succeeded.should be_true
126
+ @em.send(:response_headers, @response, testcase).error.should be_nil
127
+ end
128
+ end
129
+
130
+ describe 'response_body' do
131
+ it 'should check something'
132
+ it 'should return a result struct'
133
+ end
134
+
135
+ describe 'matcher_pathes_from' do
136
+ it 'should return pathes to all leaves of a given tree including relative pathes in case of arrays in the JSON' do
137
+ xml_tree = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><hash><bla>laber</bla><foo><values type=\"array\"><value><a>1</a></value><value><b type=\"integer\">2</b></value><value><c>/.*/</c></value></values></foo><bar>baz</bar></hash>"
138
+ tree = Nokogiri::XML(xml_tree)
139
+ @em.send(:matcher_pathes_from, tree).should be_a(Array)
140
+ @em.send(:matcher_pathes_from, tree).include?("/hash/bla").should be_true
141
+ @em.send(:matcher_pathes_from, tree).include?("/hash/foo/values/*/a").should be_true
142
+ @em.send(:matcher_pathes_from, tree).include?("/hash/foo/values/*/b").should be_true
143
+ @em.send(:matcher_pathes_from, tree).include?("/hash/foo/values/*/c").should be_true
144
+ @em.send(:matcher_pathes_from, tree).include?("/hash/bar").should be_true
145
+ @em.send(:matcher_pathes_from, tree).each do |path|
146
+ path.should be_a(String)
147
+ end
148
+ end
149
+ end
150
+
151
+ describe 'relative_path' do
152
+ it 'should substitute an absolute addressing in a given path' do
153
+ path = "/bla/foo/values[6]/duffy/duck"
154
+ @em.send(:relative_path, path).should eql "/bla/foo/*/duffy/duck"
155
+ end
156
+ it 'should substitute more than one absolute adressing in a given path' do
157
+ path = "/bla/foo/values[6]/duffy/friends[1]/duck"
158
+ @em.send(:relative_path, path).should eql "/bla/foo/*/duffy/*/duck"
159
+ end
160
+ it 'should return a string' do
161
+ path = "/bla/foo/values[6]/duffy/friends[1]/duck"
162
+ @em.send(:relative_path, path).should be_a(String)
163
+ end
164
+ end
165
+
166
+ describe 'excluded?' do
167
+ before(:each) do
168
+ @em = ExpectationMatcher.new(['foo', 'bar'])
169
+ end
170
+ it 'should return true if the given string is present in the @excludes instance variable of the class' do
171
+ @em.send(:excluded?, 'foo').should be_true
172
+ end
173
+ it 'should return false if the given string is not present in the @excludes instance variable of the class' do
174
+ @em.send(:excluded?, 'fooz').should be_false
175
+ end
176
+ end
177
+
178
+ describe 'is_regex?' do
179
+ it 'should return true if the given string seems to be a regular expression' do
180
+ string = "/^\d{3}$/"
181
+ @em.send(:is_regex?, string).should be_true
182
+ end
183
+ it 'should return false if the given string does not seem to be a regular expression' do
184
+ string = "fooz"
185
+ @em.send(:is_regex?, string).should be_false
186
+ string = "/fooz"
187
+ @em.send(:is_regex?, string).should be_false
188
+ string = "fooz/"
189
+ @em.send(:is_regex?, string).should be_false
190
+ end
191
+ end
192
+
193
+ describe 'regex_matches?' do
194
+ it 'should return true if the given regular expression matches the given value' do
195
+ regex = "^\\d{2}$"
196
+ value = "12"
197
+ @em.send(:regex_matches?, regex, value).should be_true
198
+ end
199
+ it 'should return false if the giveb reular expression does not match the given value' do
200
+ regex = "^\\d{2}$"
201
+ value = "123"
202
+ @em.send(:regex_matches?, regex, value).should be_false
203
+ value = "foo"
204
+ @em.send(:regex_matches?, regex, value).should be_false
205
+ end
206
+ end
207
+
208
+ describe 'string_matches?' do
209
+ it 'should return true if the given string matches the given value' do
210
+ string = "bar"
211
+ value = "bar"
212
+ @em.send(:string_matches?, string, value).should be_true
213
+ end
214
+ it 'should return false if the given string does not match the given value' do
215
+ string = "bar"
216
+ value = "foo"
217
+ @em.send(:string_matches?, string, value).should be_false
218
+ end
219
+ end
220
+
221
+ describe 'valid_json?' do
222
+ it 'should return true if the given response body consists of valid JSON' do
223
+ validateable = { :foo => "bar" }.to_json
224
+ @em.send(:valid_json?, validateable).should be_true
225
+ end
226
+ it 'should return true if the given response body is nil' do
227
+ @em.send(:valid_json?, nil).should be_true
228
+ end
229
+ it 'should return false if the given response body consists of anything else but valid JSON' do
230
+ @em.send(:valid_json?, "foobar").should be_false
231
+ end
232
+ end
12
233
  end
13
234
 
@@ -0,0 +1,47 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'http_client' do
4
+ before(:each) do
5
+ @http_client = HttpClient.new
6
+ any_response = Struct.new(:code, :message, :headers, :body)
7
+ @response = any_response.new(:code => 200, :message => "Ok", :headers => {:foo => ["baz" => "bar"], :body => {:a => "b"}})
8
+ end
9
+ describe 'send_request' do
10
+ it 'should invoke a send request in the underlying http class with the given method, uri and data' do
11
+ @http_client.class.should_receive(:put)
12
+ @http_client.should_receive(:build_response).and_return(@response)
13
+ @http_client.send_request(:put, "http://foo.bar", nil)
14
+
15
+ @http_client.class.should_receive(:get)
16
+ @http_client.should_receive(:build_response).and_return(@response)
17
+ @http_client.send_request(:get, "http://foo.bar", nil)
18
+ end
19
+ it 'should invoke build response and return its output to the caller' do
20
+ @http_client.should_receive(:build_response).and_return("response")
21
+ @http_client.send_request(:put, "http://foo.bar", nil).should eql "response"
22
+ end
23
+ it 'should not fatal if expected data attribute is nil' do
24
+ pending "TODO: pair this one"
25
+ @http_client.should_receive(:build_response).and_return(@response)
26
+ @http_client.send_request(:put, "http://foo.bar", nil).should_not raise_error
27
+ end
28
+ end
29
+
30
+ describe 'build_response' do
31
+ it 'should return a struct consisting of 4 symbols: :code, :message, :headers and :body with right types' do
32
+ raw_response_struct = Struct.new(:code, :message, :headers, :body)
33
+ response = raw_response_struct.new
34
+
35
+ response.code = 404
36
+ response.message = "Hi Duffy Duck"
37
+ response.headers = { :foo => ["bar" => "baz"] }
38
+ response.body = { :duffy => "duck" }
39
+
40
+ @http_client.send(:build_response, response).to_s.should eql response.to_s
41
+ @http_client.send(:build_response, response).code.should_not be_nil
42
+ @http_client.send(:build_response, response).message.should_not be_nil
43
+ @http_client.send(:build_response, response).body.should_not be_nil
44
+ @http_client.send(:build_response, response).headers.should_not be_nil
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 1
9
- version: 0.1.1
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - moviepilot
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-20 00:00:00 +02:00
17
+ date: 2010-09-21 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -123,8 +123,23 @@ dependencies:
123
123
  prerelease: false
124
124
  version_requirements: *id007
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: mocha
127
127
  requirement: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ segments:
133
+ - 0
134
+ - 9
135
+ - 8
136
+ version: 0.9.8
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: *id008
140
+ - !ruby/object:Gem::Dependency
141
+ name: rspec
142
+ requirement: &id009 !ruby/object:Gem::Requirement
128
143
  none: false
129
144
  requirements:
130
145
  - - ">="
@@ -138,10 +153,10 @@ dependencies:
138
153
  version: 2.0.0.beta.19
139
154
  type: :development
140
155
  prerelease: false
141
- version_requirements: *id008
156
+ version_requirements: *id009
142
157
  - !ruby/object:Gem::Dependency
143
158
  name: cucumber
144
- requirement: &id009 !ruby/object:Gem::Requirement
159
+ requirement: &id010 !ruby/object:Gem::Requirement
145
160
  none: false
146
161
  requirements:
147
162
  - - ">="
@@ -151,10 +166,10 @@ dependencies:
151
166
  version: "0"
152
167
  type: :development
153
168
  prerelease: false
154
- version_requirements: *id009
169
+ version_requirements: *id010
155
170
  - !ruby/object:Gem::Dependency
156
171
  name: bundler
157
- requirement: &id010 !ruby/object:Gem::Requirement
172
+ requirement: &id011 !ruby/object:Gem::Requirement
158
173
  none: false
159
174
  requirements:
160
175
  - - ~>
@@ -166,10 +181,10 @@ dependencies:
166
181
  version: 1.0.0
167
182
  type: :development
168
183
  prerelease: false
169
- version_requirements: *id010
184
+ version_requirements: *id011
170
185
  - !ruby/object:Gem::Dependency
171
186
  name: jeweler
172
- requirement: &id011 !ruby/object:Gem::Requirement
187
+ requirement: &id012 !ruby/object:Gem::Requirement
173
188
  none: false
174
189
  requirements:
175
190
  - - ~>
@@ -182,10 +197,10 @@ dependencies:
182
197
  version: 1.5.0.pre3
183
198
  type: :development
184
199
  prerelease: false
185
- version_requirements: *id011
200
+ version_requirements: *id012
186
201
  - !ruby/object:Gem::Dependency
187
202
  name: rcov
188
- requirement: &id012 !ruby/object:Gem::Requirement
203
+ requirement: &id013 !ruby/object:Gem::Requirement
189
204
  none: false
190
205
  requirements:
191
206
  - - ">="
@@ -195,7 +210,7 @@ dependencies:
195
210
  version: "0"
196
211
  type: :development
197
212
  prerelease: false
198
- version_requirements: *id012
213
+ version_requirements: *id013
199
214
  description: longer description of your gem
200
215
  email: developers@moviepilot.com
201
216
  executables: []
@@ -229,7 +244,9 @@ files:
229
244
  - lib/http_client.rb
230
245
  - lib/tasks/api.rake
231
246
  - spec/.rspec
247
+ - spec/api_runner_spec.rb
232
248
  - spec/expectation_matcher_spec.rb
249
+ - spec/http_client_spec.rb
233
250
  - spec/spec_helper.rb
234
251
  has_rdoc: true
235
252
  homepage: http://github.com/moviepilot/apirunner
@@ -245,7 +262,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
245
262
  requirements:
246
263
  - - ">="
247
264
  - !ruby/object:Gem::Version
248
- hash: -1083630349754663416
265
+ hash: -1063302093406786431
249
266
  segments:
250
267
  - 0
251
268
  version: "0"
@@ -265,5 +282,7 @@ signing_key:
265
282
  specification_version: 3
266
283
  summary: one-line summary of your gem
267
284
  test_files:
285
+ - spec/api_runner_spec.rb
268
286
  - spec/expectation_matcher_spec.rb
287
+ - spec/http_client_spec.rb
269
288
  - spec/spec_helper.rb