mirage 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
1
  source :rubygems
2
2
 
3
3
  gem 'sinatra'
4
- gem "eventmachine", "1.0.0.rc.4"
5
4
  gem 'childprocess'
6
5
  gem "waitforit"
7
6
  gem "thor"
@@ -16,9 +16,9 @@ GEM
16
16
  diff-lcs (1.1.3)
17
17
  domain_name (0.5.1)
18
18
  unf (~> 0.0.3)
19
- eventmachine (1.0.0.rc.4)
20
- eventmachine (1.0.0.rc.4-java)
21
- eventmachine (1.0.0.rc.4-x86-mingw32)
19
+ eventmachine (1.0.0)
20
+ eventmachine (1.0.0-java)
21
+ eventmachine (1.0.0-x86-mingw32)
22
22
  ffi (1.0.11)
23
23
  ffi (1.0.11-java)
24
24
  gherkin (2.7.2)
@@ -97,7 +97,6 @@ PLATFORMS
97
97
  DEPENDENCIES
98
98
  childprocess
99
99
  cucumber
100
- eventmachine (= 1.0.0.rc.4)
101
100
  jeweler
102
101
  jruby-openssl
103
102
  mechanize
data/HISTORY CHANGED
@@ -1,3 +1,4 @@
1
+ V2.4.2 - update eventmachine, make sure Mirage.start always returns a client
1
2
  V2.4.1 - adding rdoc for configure method
2
3
  V2.4.0 - Adding ability to set defaults
3
4
  V2.3.0 - Enhanced commandline/programmatic api
data/README.md CHANGED
@@ -20,6 +20,7 @@ What's New?
20
20
  -----------
21
21
  ### 2.4.0
22
22
  ---------
23
+ #### What do I get?
23
24
  ##### 1: Configure your client with defaults for each of your responses
24
25
  Remove the repetition of setting things like the content-type each to time you put a response on to Mirage
25
26
 
@@ -31,6 +32,8 @@ Remove the repetition of setting things like the content-type each to time you p
31
32
  end
32
33
 
33
34
  client.put("greeting", "hello") -> template put on to Mirage with a delay of 0.5 seconds and content-type text/xml configured
35
+ #### What do I have to do to upgrade?
36
+ Nothing, this is a new feature. Let me know if you have any problems :)
34
37
 
35
38
 
36
39
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.4.2
@@ -1,7 +1,6 @@
1
1
  module Mirage
2
2
  module CLIBridge
3
- def mirage_process_ids *ports
4
- ports.flatten!
3
+ def mirage_process_ids ports
5
4
  mirage_instances = {}
6
5
  ["Mirage Server", "mirage_server", "mirage server"].each do |process_name|
7
6
  processes_with_name(process_name).lines.collect { |line| line.chomp }.each do |process_line|
@@ -11,7 +10,7 @@ module CLIBridge
11
10
  end
12
11
  end
13
12
 
14
- return mirage_instances if ports.first.to_s.downcase == "all"
13
+ return mirage_instances if ports.first.to_s == "all" || ports.empty?
15
14
  Hash[mirage_instances.find_all { |port, pid| ports.include?(port.to_i) }]
16
15
  end
17
16
 
@@ -21,7 +20,6 @@ module CLIBridge
21
20
 
22
21
  def processes_with_name name
23
22
  if ChildProcess.windows?
24
-
25
23
  `tasklist /V | findstr "#{name.gsub(" ", '\\ ')}"`
26
24
  else
27
25
  IO.popen("ps aux | grep '#{name}' | grep -v grep | grep -v #{$$}")
@@ -10,10 +10,22 @@ module Mirage
10
10
  #
11
11
  # Client.new => a client that is configured to connect to Mirage on http://localhost:7001/mirage (the default settings for Mirage)
12
12
  # Client.new(URL) => a client that is configured to connect to an instance of Mirage running on the specified url.
13
+ # Client.new(hash) => a client that is configured to connect to an instance of Mirage running on the specified url or localhost port.
14
+ # e.g: Client.new(:url => url) or Client.new(:port => port)
13
15
  #
14
16
  # a block can be passed to configure the client with defaults: see configure
15
- def initialize url="http://localhost:7001/mirage", &block
16
- @url = url
17
+ def initialize options={:url => "http://localhost:7001/mirage"}, &block
18
+ if options.is_a?(String) && options =~ URI.regexp
19
+ warn("Client.new(url): Deprecated usage, please use :url => url | :port => port")
20
+ @url = options
21
+ elsif options.kind_of?(Hash) && options[:port]
22
+ @url = "http://localhost:#{options[:port]}/mirage"
23
+ elsif options.kind_of?(Hash) && options[:url]
24
+ @url = options[:url]
25
+ else
26
+ raise "specify a valid URL or port"
27
+ end
28
+
17
29
  reset
18
30
  configure &block if block_given?
19
31
  end
@@ -57,7 +69,7 @@ module Mirage
57
69
  # end
58
70
  def put endpoint, response_value, &block
59
71
  response = Mirage::Response.new response_value
60
- @defaults.each_pair{|key, value|response.send("#{key}=", value) if value}
72
+ @defaults.each_pair { |key, value| response.send("#{key}=", value) if value }
61
73
  yield response if block_given?
62
74
 
63
75
  build_response(http_put("#{@url}/templates/#{endpoint}", response.value, response.headers))
@@ -135,6 +147,10 @@ module Mirage
135
147
  build_response(http_put("#{@url}/defaults", ''))
136
148
  end
137
149
 
150
+ def == client
151
+ client.is_a?(Client) && @url == client.url
152
+ end
153
+
138
154
  private
139
155
  def build_response response
140
156
  case response.code.to_i
@@ -12,6 +12,7 @@ module Mirage
12
12
  # Mirage.start :port => 9001 -> Configured MirageClient ready to use.
13
13
  def start options={:port => 7001}
14
14
  Runner.new.invoke(:start, [], options)
15
+ Mirage::Client.new(options)
15
16
  end
16
17
 
17
18
  # Stop locally running instance(s) of Mirage
@@ -20,7 +21,7 @@ module Mirage
20
21
  # Mirage.stop -> Will stop mirage if there is only instance running. Can be running on any port.
21
22
  # Mirage.stop :port => port -> stop mirage on a given port
22
23
  # Mirage.stop :port => [port1, port2...] -> stops multiple running instances of Mirage
23
- def stop options={}
24
+ def stop options={:port => []}
24
25
  options = {:port => :all} if options == :all
25
26
 
26
27
  if options[:port]
@@ -40,7 +41,7 @@ module Mirage
40
41
  # Mirage.running? :port => port -> boolean indicating whether Mirage is running on *locally* on the given port
41
42
  # Mirage.running? url -> boolean indicating whether Mirage is running on the given URL
42
43
  def running? options_or_url = {:port => 7001}
43
- url = options_or_url.is_a?(Hash) ? "http://localhost:#{options_or_url[:port]}/mirage" : options_or_url
44
+ url = options_or_url.kind_of?(Hash) ? "http://localhost:#{options_or_url[:port]}/mirage" : options_or_url
44
45
  http_get(url) and return true
45
46
  rescue Errno::ECONNREFUSED
46
47
  return false
@@ -59,15 +60,17 @@ module Mirage
59
60
  method_option :debug, :type => :boolean, :default => false, :desc => "run in debug mode"
60
61
 
61
62
  def start
62
- unless mirage_process_ids([options[:port]]).empty?
63
- puts "Mirage is already running: #{mirage_process_ids([options[:port]]).values.join(",")}"
63
+ port = options[:port]
64
+ process_ids = mirage_process_ids([port])
65
+ unless process_ids.empty?
66
+ warn "Mirage is already running: #{process_ids.values.join(",")}"
64
67
  return
65
68
  end
66
69
 
67
70
  mirage_server_file = "#{File.dirname(__FILE__)}/../../../mirage_server.rb"
68
71
 
69
72
  if ChildProcess.windows?
70
- command = ["cmd", "/C", "start", "mirage server port #{options[:port]}", RUBY_CMD, mirage_server_file]
73
+ command = ["cmd", "/C", "start", "mirage server port #{port}", RUBY_CMD, mirage_server_file]
71
74
  else
72
75
  command = [RUBY_CMD, mirage_server_file]
73
76
  end
@@ -76,41 +79,24 @@ module Mirage
76
79
  command = command.concat(options.to_a).flatten.collect { |arg| arg.to_s }
77
80
  ChildProcess.build(*command).start
78
81
 
79
- mirage_client = Mirage::Client.new "http://localhost:#{options[:port]}/mirage"
80
- wait_until(:timeout_after => 30.seconds) { mirage_client.running? }
82
+ wait_until(:timeout_after => 30.seconds) { Mirage.running?(options) }
81
83
 
82
84
  begin
83
- mirage_client.prime
85
+ Mirage::Client.new(options).prime
84
86
  rescue Mirage::InternalServerException => e
85
87
  puts "WARN: #{e.message}"
86
88
  end
87
- mirage_client
88
89
  end
89
90
 
90
91
  desc "stop", "Stops mirage"
91
- method_option :port, :aliases => "-p", :type => :array, :banner => "[port_1 port_2|all]", :desc => "port(s) of mirage instance(s). ALL stops all running instances"
92
+ method_option :port, :aliases => "-p", :type => :array, :default => [], :banner => "[port_1 port_2|all]", :desc => "port(s) of mirage instance(s). ALL stops all running instances"
92
93
 
93
94
  def stop
94
- ports = options[:port] || []
95
- if ports.empty?
96
- mirage_process_ids = mirage_process_ids([:all])
97
- raise ClientError.new("Mirage is running on ports #{mirage_process_ids.keys.sort.join(", ")}. Please run mirage stop -p [PORT(s)] instead") if mirage_process_ids.size > 1
98
- end
99
-
100
- ports = case ports
101
- when %w(all), [:all], []
102
- [:all]
103
- else
104
- ports.collect { |port| port.to_i }
105
- end
106
-
107
- mirage_process_ids(ports).values.each do |process_id|
108
- kill process_id
109
- end
110
-
111
- wait_until do
112
- mirage_process_ids(ports).empty?
113
- end
95
+ ports = options[:port].collect{|port| port=~/\d+/ ? port.to_i : port}
96
+ process_ids = mirage_process_ids(ports)
97
+ raise ClientError.new("Mirage is running on ports #{process_ids.keys.sort.join(", ")}. Please run mirage stop -p [PORT(s)] instead") if (process_ids.size > 1 && ports.empty?)
98
+ process_ids.values.each { |process_id| kill process_id }
99
+ wait_until { mirage_process_ids(options[:port]).empty? }
114
100
  end
115
101
 
116
102
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "mirage"
8
- s.version = "2.4.1"
8
+ s.version = "2.4.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Leon Davis"]
12
- s.date = "2012-09-11"
12
+ s.date = "2012-09-20"
13
13
  s.description = "Mirage aids testing of your applications by hosting mock responses so that your applications do not have to talk to real endpoints. Its accessible via HTTP and has a RESTful interface."
14
14
  s.executables = ["mirage"]
15
15
  s.extra_rdoc_files = [
@@ -69,6 +69,7 @@ Gem::Specification.new do |s|
69
69
  "server/extensions/object.rb",
70
70
  "server/mock_response.rb",
71
71
  "spec/cli_bridge_spec.rb",
72
+ "spec/client_spec.rb",
72
73
  "spec/runner_spec.rb",
73
74
  "spec/spec_helper.rb",
74
75
  "test.rb",
@@ -86,7 +87,6 @@ Gem::Specification.new do |s|
86
87
 
87
88
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
88
89
  s.add_runtime_dependency(%q<sinatra>, [">= 0"])
89
- s.add_runtime_dependency(%q<eventmachine>, ["= 1.0.0.rc.4"])
90
90
  s.add_runtime_dependency(%q<childprocess>, [">= 0"])
91
91
  s.add_runtime_dependency(%q<waitforit>, [">= 0"])
92
92
  s.add_runtime_dependency(%q<thor>, [">= 0"])
@@ -101,7 +101,6 @@ Gem::Specification.new do |s|
101
101
  s.add_development_dependency(%q<jruby-openssl>, [">= 0"])
102
102
  else
103
103
  s.add_dependency(%q<sinatra>, [">= 0"])
104
- s.add_dependency(%q<eventmachine>, ["= 1.0.0.rc.4"])
105
104
  s.add_dependency(%q<childprocess>, [">= 0"])
106
105
  s.add_dependency(%q<waitforit>, [">= 0"])
107
106
  s.add_dependency(%q<thor>, [">= 0"])
@@ -117,7 +116,6 @@ Gem::Specification.new do |s|
117
116
  end
118
117
  else
119
118
  s.add_dependency(%q<sinatra>, [">= 0"])
120
- s.add_dependency(%q<eventmachine>, ["= 1.0.0.rc.4"])
121
119
  s.add_dependency(%q<childprocess>, [">= 0"])
122
120
  s.add_dependency(%q<waitforit>, [">= 0"])
123
121
  s.add_dependency(%q<thor>, [">= 0"])
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'mirage/client'
3
+
4
+
5
+
6
+ describe Mirage::Client do
7
+ include Mirage
8
+
9
+ before :each do
10
+ @response = mock('response').as_null_object
11
+ end
12
+
13
+
14
+ it 'is configured to connect to local host port 7001 by default' do
15
+ client = Client.new
16
+ client.should_receive(:http_put).with(/localhost:7001/, anything, anything).and_return(@response)
17
+ client.put "greeting", "hello"
18
+ end
19
+
20
+ it 'can be configured with a url pointing to Mirage' do
21
+ url = "http://url.for.mirage"
22
+ client = Client.new url
23
+ client.should_receive(:http_put).with(/#{url}/, anything, anything).and_return(@response)
24
+ client.put "greeting", "hello"
25
+ end
26
+
27
+ it 'can be configured with a port refering to which port Mirage is running on on localhost' do
28
+ port = 9001
29
+ client = Client.new :port => port
30
+ client.should_receive(:http_put).with(/localhost:#{port}/, anything, anything).and_return(@response)
31
+ client.put "greeting", "hello"
32
+ end
33
+
34
+ it 'raises an error if neither a port or url specified in the argument' do
35
+ expect{Client.new({})}.should raise_error()
36
+ expect{Client.new("rubbish")}.should raise_error()
37
+ end
38
+ end
@@ -13,7 +13,8 @@ describe Mirage do
13
13
 
14
14
  it 'should start Mirage on port 7001 by default' do
15
15
  @runner.should_receive(:invoke).with(:start, [], {:port => 7001})
16
- Mirage.start
16
+ client = Mirage.start
17
+ client.should == Mirage::Client.new
17
18
  end
18
19
 
19
20
  it 'should start mirage on the given port' do
@@ -47,24 +48,31 @@ describe Mirage do
47
48
 
48
49
  describe Mirage::Runner do
49
50
  it 'should stop the running instance of Mirage' do
50
-
51
+ options = {:port => []}
51
52
  runner = Mirage::Runner.new
52
- runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({"7001" => "18901"})
53
+ runner.options = options
54
+
55
+ runner.should_receive(:mirage_process_ids).with([]).any_number_of_times.and_return({"7001" => "18901"})
53
56
 
54
57
  runner.should_receive(:kill).with("18901") do
55
58
  runner.rspec_reset
56
- runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({})
59
+ runner.should_receive(:mirage_process_ids).with([]).any_number_of_times.and_return({})
57
60
  end
58
61
 
59
- runner.stop
62
+ Mirage::Runner.should_receive(:new).and_return(runner)
63
+ runner.invoke(:stop, [], options)
60
64
  end
61
65
 
62
66
  it 'should not stop any instances when more than one is running' do
67
+ options = {:port => []}
63
68
  runner = Mirage::Runner.new
64
- runner.should_receive(:mirage_process_ids).with([:all]).any_number_of_times.and_return({"7001" => "18901", "7002" => "18902", "7003" => "18903"})
69
+ runner.options = options
70
+
71
+ runner.should_receive(:mirage_process_ids).with([]).any_number_of_times.and_return({"7001" => "18901", "7002" => "18902", "7003" => "18903"})
65
72
  runner.should_not_receive(:kill)
73
+ Mirage::Runner.should_receive(:new).and_return(runner)
66
74
 
67
- lambda { runner.stop }.should raise_error(Mirage::ClientError)
75
+ lambda { runner.invoke(:stop, [], options) }.should raise_error(Mirage::ClientError)
68
76
  end
69
77
 
70
78
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mirage
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-11 00:00:00.000000000Z
12
+ date: 2012-09-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &17771380 !ruby/object:Gem::Requirement
16
+ requirement: &25392540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17771380
25
- - !ruby/object:Gem::Dependency
26
- name: eventmachine
27
- requirement: &17770580 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - =
31
- - !ruby/object:Gem::Version
32
- version: 1.0.0.rc.4
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *17770580
24
+ version_requirements: *25392540
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: childprocess
38
- requirement: &17769600 !ruby/object:Gem::Requirement
27
+ requirement: &25391440 !ruby/object:Gem::Requirement
39
28
  none: false
40
29
  requirements:
41
30
  - - ! '>='
@@ -43,10 +32,10 @@ dependencies:
43
32
  version: '0'
44
33
  type: :runtime
45
34
  prerelease: false
46
- version_requirements: *17769600
35
+ version_requirements: *25391440
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: waitforit
49
- requirement: &17768660 !ruby/object:Gem::Requirement
38
+ requirement: &25390580 !ruby/object:Gem::Requirement
50
39
  none: false
51
40
  requirements:
52
41
  - - ! '>='
@@ -54,10 +43,10 @@ dependencies:
54
43
  version: '0'
55
44
  type: :runtime
56
45
  prerelease: false
57
- version_requirements: *17768660
46
+ version_requirements: *25390580
58
47
  - !ruby/object:Gem::Dependency
59
48
  name: thor
60
- requirement: &17767820 !ruby/object:Gem::Requirement
49
+ requirement: &25389580 !ruby/object:Gem::Requirement
61
50
  none: false
62
51
  requirements:
63
52
  - - ! '>='
@@ -65,10 +54,10 @@ dependencies:
65
54
  version: '0'
66
55
  type: :runtime
67
56
  prerelease: false
68
- version_requirements: *17767820
57
+ version_requirements: *25389580
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: thin
71
- requirement: &17766980 !ruby/object:Gem::Requirement
60
+ requirement: &25384880 !ruby/object:Gem::Requirement
72
61
  none: false
73
62
  requirements:
74
63
  - - ! '>='
@@ -76,10 +65,10 @@ dependencies:
76
65
  version: '0'
77
66
  type: :development
78
67
  prerelease: false
79
- version_requirements: *17766980
68
+ version_requirements: *25384880
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: rake
82
- requirement: &17765980 !ruby/object:Gem::Requirement
71
+ requirement: &25383820 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
74
  - - ! '>='
@@ -87,10 +76,10 @@ dependencies:
87
76
  version: '0'
88
77
  type: :development
89
78
  prerelease: false
90
- version_requirements: *17765980
79
+ version_requirements: *25383820
91
80
  - !ruby/object:Gem::Dependency
92
81
  name: cucumber
93
- requirement: &17765040 !ruby/object:Gem::Requirement
82
+ requirement: &25382520 !ruby/object:Gem::Requirement
94
83
  none: false
95
84
  requirements:
96
85
  - - ! '>='
@@ -98,10 +87,10 @@ dependencies:
98
87
  version: '0'
99
88
  type: :development
100
89
  prerelease: false
101
- version_requirements: *17765040
90
+ version_requirements: *25382520
102
91
  - !ruby/object:Gem::Dependency
103
92
  name: rspec
104
- requirement: &17764080 !ruby/object:Gem::Requirement
93
+ requirement: &25381620 !ruby/object:Gem::Requirement
105
94
  none: false
106
95
  requirements:
107
96
  - - ! '>='
@@ -109,10 +98,10 @@ dependencies:
109
98
  version: '0'
110
99
  type: :development
111
100
  prerelease: false
112
- version_requirements: *17764080
101
+ version_requirements: *25381620
113
102
  - !ruby/object:Gem::Dependency
114
103
  name: jeweler
115
- requirement: &17759740 !ruby/object:Gem::Requirement
104
+ requirement: &25380220 !ruby/object:Gem::Requirement
116
105
  none: false
117
106
  requirements:
118
107
  - - ! '>='
@@ -120,10 +109,10 @@ dependencies:
120
109
  version: '0'
121
110
  type: :development
122
111
  prerelease: false
123
- version_requirements: *17759740
112
+ version_requirements: *25380220
124
113
  - !ruby/object:Gem::Dependency
125
114
  name: sinatra-contrib
126
- requirement: &17759060 !ruby/object:Gem::Requirement
115
+ requirement: &25379320 !ruby/object:Gem::Requirement
127
116
  none: false
128
117
  requirements:
129
118
  - - ! '>='
@@ -131,10 +120,10 @@ dependencies:
131
120
  version: '0'
132
121
  type: :development
133
122
  prerelease: false
134
- version_requirements: *17759060
123
+ version_requirements: *25379320
135
124
  - !ruby/object:Gem::Dependency
136
125
  name: mechanize
137
- requirement: &17758100 !ruby/object:Gem::Requirement
126
+ requirement: &25378420 !ruby/object:Gem::Requirement
138
127
  none: false
139
128
  requirements:
140
129
  - - ! '>='
@@ -142,10 +131,10 @@ dependencies:
142
131
  version: '0'
143
132
  type: :development
144
133
  prerelease: false
145
- version_requirements: *17758100
134
+ version_requirements: *25378420
146
135
  - !ruby/object:Gem::Dependency
147
136
  name: nokogiri
148
- requirement: &17757280 !ruby/object:Gem::Requirement
137
+ requirement: &25377700 !ruby/object:Gem::Requirement
149
138
  none: false
150
139
  requirements:
151
140
  - - ! '>='
@@ -153,10 +142,10 @@ dependencies:
153
142
  version: '0'
154
143
  type: :development
155
144
  prerelease: false
156
- version_requirements: *17757280
145
+ version_requirements: *25377700
157
146
  - !ruby/object:Gem::Dependency
158
147
  name: jruby-openssl
159
- requirement: &17756480 !ruby/object:Gem::Requirement
148
+ requirement: &25375700 !ruby/object:Gem::Requirement
160
149
  none: false
161
150
  requirements:
162
151
  - - ! '>='
@@ -164,7 +153,7 @@ dependencies:
164
153
  version: '0'
165
154
  type: :development
166
155
  prerelease: false
167
- version_requirements: *17756480
156
+ version_requirements: *25375700
168
157
  description: Mirage aids testing of your applications by hosting mock responses so
169
158
  that your applications do not have to talk to real endpoints. Its accessible via
170
159
  HTTP and has a RESTful interface.
@@ -228,6 +217,7 @@ files:
228
217
  - server/extensions/object.rb
229
218
  - server/mock_response.rb
230
219
  - spec/cli_bridge_spec.rb
220
+ - spec/client_spec.rb
231
221
  - spec/runner_spec.rb
232
222
  - spec/spec_helper.rb
233
223
  - test.rb
@@ -249,7 +239,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
239
  version: '0'
250
240
  segments:
251
241
  - 0
252
- hash: -2060049518291107890
242
+ hash: -1894067030623386639
253
243
  required_rubygems_version: !ruby/object:Gem::Requirement
254
244
  none: false
255
245
  requirements: