mirage-on-thin 3.0.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 +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.simplecov +6 -0
- data/.travis.yml +3 -0
- data/Gemfile +29 -0
- data/Gemfile.lock +151 -0
- data/HISTORY +22 -0
- data/README.md +156 -0
- data/Rakefile +10 -0
- data/VERSION +1 -0
- data/bin/mirage +14 -0
- data/features/.nav +29 -0
- data/features/client/clear.feature +78 -0
- data/features/client/configure.feature +72 -0
- data/features/client/model.feature +95 -0
- data/features/client/preview_responses.feature +33 -0
- data/features/client/prime.feature +32 -0
- data/features/client/put.feature +111 -0
- data/features/client/readme.md +3 -0
- data/features/client/requests.feature +20 -0
- data/features/client/running.feature +51 -0
- data/features/client/save_and_revert.feature +39 -0
- data/features/client/start.feature +46 -0
- data/features/client/stop.feature +53 -0
- data/features/commandline_interface/help.feature +17 -0
- data/features/commandline_interface/readme.md +1 -0
- data/features/commandline_interface/start.feature +18 -0
- data/features/commandline_interface/stop.feature +42 -0
- data/features/logging.feature +6 -0
- data/features/prime.feature +35 -0
- data/features/readme.md +7 -0
- data/features/requests/delete.feature +48 -0
- data/features/requests/get.feature +36 -0
- data/features/save_and_revert.feature +35 -0
- data/features/step_definitions/my_steps.rb +98 -0
- data/features/step_definitions/observation_steps.rb +103 -0
- data/features/support/command_line.rb +33 -0
- data/features/support/env.rb +22 -0
- data/features/support/hooks.rb +26 -0
- data/features/support/mirage.rb +12 -0
- data/features/support/web.rb +20 -0
- data/features/templates/delete.feature +45 -0
- data/features/templates/get.feature +54 -0
- data/features/templates/path_wildcards.feature +10 -0
- data/features/templates/preview.feature +18 -0
- data/features/templates/put.feature +77 -0
- data/features/templates/put_with_substitutions.feature +22 -0
- data/features/templates/readme.md +4 -0
- data/features/templates/required_content.feature +113 -0
- data/features/web_user_interface.feature +44 -0
- data/full_build.sh +100 -0
- data/lib/mirage/client.rb +10 -0
- data/lib/mirage/client/cli_bridge.rb +30 -0
- data/lib/mirage/client/client.rb +73 -0
- data/lib/mirage/client/error.rb +22 -0
- data/lib/mirage/client/helpers/method_builder.rb +19 -0
- data/lib/mirage/client/request.rb +26 -0
- data/lib/mirage/client/requests.rb +13 -0
- data/lib/mirage/client/runner.rb +103 -0
- data/lib/mirage/client/template.rb +56 -0
- data/lib/mirage/client/template/configuration.rb +44 -0
- data/lib/mirage/client/template/model.rb +48 -0
- data/lib/mirage/client/template/model/common_methods.rb +24 -0
- data/lib/mirage/client/template/model/instance_methods.rb +95 -0
- data/lib/mirage/client/templates.rb +50 -0
- data/mirage-on-thin.gemspec +175 -0
- data/mirage_server.rb +35 -0
- data/server/app.rb +4 -0
- data/server/binary_data_checker.rb +15 -0
- data/server/extensions/hash.rb +10 -0
- data/server/extensions/object.rb +5 -0
- data/server/helpers.rb +3 -0
- data/server/helpers/http_headers.rb +31 -0
- data/server/helpers/template_requirements.rb +33 -0
- data/server/mock_response.rb +242 -0
- data/server/server.rb +184 -0
- data/spec/client/cli_bridge_spec.rb +63 -0
- data/spec/client/client_spec.rb +179 -0
- data/spec/client/helpers/method_builder_spec.rb +40 -0
- data/spec/client/request_spec.rb +39 -0
- data/spec/client/requests_spec.rb +9 -0
- data/spec/client/runner_spec.rb +138 -0
- data/spec/client/template/configuration_spec.rb +32 -0
- data/spec/client/template/model/common_methods_spec.rb +25 -0
- data/spec/client/template/model/instance_methods_spec.rb +169 -0
- data/spec/client/template/model_spec.rb +119 -0
- data/spec/client/template_spec.rb +146 -0
- data/spec/client/templates_spec.rb +197 -0
- data/spec/resources/binary.file +0 -0
- data/spec/server/binary_data_checker_spec.rb +21 -0
- data/spec/server/helpers/http_headers_spec.rb +20 -0
- data/spec/server/helpers/template_requirements_spec.rb +34 -0
- data/spec/server/mock_response_spec.rb +577 -0
- data/spec/server/server_spec.rb +156 -0
- data/spec/spec_helper.rb +85 -0
- data/tasks/application.rake +7 -0
- data/tasks/packaging.rake +28 -0
- data/tasks/tests.rake +25 -0
- data/views/index.haml +16 -0
- data/views/response.haml +46 -0
- metadata +337 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'base64'
|
|
4
|
+
|
|
5
|
+
describe "Mirage Server" do
|
|
6
|
+
include_context :rack_test, :disable_sinatra_error_handling => true
|
|
7
|
+
before :each do
|
|
8
|
+
Mirage::MockResponse.delete_all
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
describe "when adding responses" do
|
|
13
|
+
before :each do
|
|
14
|
+
@mock_response = Mirage::MockResponse.new('endpoint','value')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should create a mock response with the supplied template spec' do
|
|
18
|
+
endpoint = 'greeting'
|
|
19
|
+
spec = {"somekeys" => 'some_values'}
|
|
20
|
+
|
|
21
|
+
Mirage::MockResponse.should_receive(:new).with(endpoint, spec).and_return(@mock_response)
|
|
22
|
+
put('/templates/greeting', spec.to_json)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'should set the requests url against the template that is created' do
|
|
26
|
+
method = 'post'
|
|
27
|
+
response_id = 1
|
|
28
|
+
Mirage::MockResponse.should_receive(:new).and_return(@mock_response)
|
|
29
|
+
put('/templates/greeting', {:request => {:http_method => method}}.to_json)
|
|
30
|
+
@mock_response.requests_url.should == "http://example.org/requests/#{response_id}"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context '/templates' do
|
|
36
|
+
describe '/preview' do
|
|
37
|
+
it 'should give the value' do
|
|
38
|
+
response_body = 'hello'
|
|
39
|
+
content_type = 'application/javascript'
|
|
40
|
+
response_id = JSON.parse(put('/templates/greeting', {:response => {:body => Base64.encode64(response_body), :content_type => content_type}}.to_json).body)['id']
|
|
41
|
+
response = get("/templates/#{response_id}/preview")
|
|
42
|
+
response.body.should == response_body
|
|
43
|
+
response.content_type.should include(content_type)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
describe 'matching templates' do
|
|
51
|
+
before :each do
|
|
52
|
+
@endpoint = "greeting"
|
|
53
|
+
@options = {:body => anything, :params => anything, :endpoint => @endpoint, :headers => anything, :http_method => anything}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'should use request parameters' do
|
|
57
|
+
parameters = {"key" => 'value'}
|
|
58
|
+
|
|
59
|
+
Mirage::MockResponse.should_receive(:find).with(@options.merge(:params => parameters)).and_return(Mirage::MockResponse.new(@endpoint, {:response => {:body => "hello"}}))
|
|
60
|
+
get("/responses/#{@endpoint}", parameters)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'should use the request body' do
|
|
64
|
+
body = 'body'
|
|
65
|
+
|
|
66
|
+
Mirage::MockResponse.should_receive(:find).with(@options.merge(:body => body)).and_return(Mirage::MockResponse.new(@endpoint, {:response => {:body => "hello"}}))
|
|
67
|
+
post("/responses/#{@endpoint}", body)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'should use headers' do
|
|
71
|
+
headers = {"HEADER" => 'VALUE'}
|
|
72
|
+
application_expectations do |app|
|
|
73
|
+
app.stub(:env).and_return(headers)
|
|
74
|
+
app.should_receive(:extract_http_headers).with(headers).and_return(headers)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
Mirage::MockResponse.should_receive(:find).with(@options.merge(:headers => headers)).and_return(Mirage::MockResponse.new(@endpoint, {:response => {:body => "hello"}}))
|
|
78
|
+
get("/responses/#{@endpoint}")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'should return the default response if a specific match is not found' do
|
|
82
|
+
Mirage::MockResponse.should_receive(:find_default).with(@options.merge(:http_method =>"post")).and_return(Mirage::MockResponse.new("greeting", {:response => {:body => "hello"}}))
|
|
83
|
+
|
|
84
|
+
response_template = {
|
|
85
|
+
:request => {
|
|
86
|
+
:body_content => %w(leon),
|
|
87
|
+
:content_type => "post"
|
|
88
|
+
},
|
|
89
|
+
:response => {
|
|
90
|
+
:body => "hello leon"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
put("/templates/#{@endpoint}", response_template.to_json)
|
|
94
|
+
post("/responses/#{@endpoint}")
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
describe "operations" do
|
|
101
|
+
describe 'resolving responses' do
|
|
102
|
+
it 'should return the default response' do
|
|
103
|
+
put('/templates/level1', {:response => {:body => Base64.encode64("level1")}}.to_json)
|
|
104
|
+
put('/templates/level1/level2', {:response => {:body => Base64.encode64("level2"), :default => true}}.to_json)
|
|
105
|
+
get('/responses/level1/level2/level3').body.should == "level2"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it 'should set any headers specified' do
|
|
109
|
+
headers = {header: 'value'}
|
|
110
|
+
put('/templates/greeting', {:response => {headers: headers, :body => ''}}.to_json)
|
|
111
|
+
get('/responses/greeting').headers['header'].should == 'value'
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe 'checking templates' do
|
|
116
|
+
it 'should return the descriptor for a template' do
|
|
117
|
+
response_body = "hello"
|
|
118
|
+
response_id = JSON.parse(put('/templates/greeting', {:response => {:body => Base64.encode64(response_body)}}.to_json).body)['id']
|
|
119
|
+
template = JSON.parse(get("/templates/#{response_id}").body)
|
|
120
|
+
template.should == JSON.parse({:endpoint => "greeting",
|
|
121
|
+
:id => response_id,
|
|
122
|
+
:requests_url => "http://example.org/requests/#{response_id}",
|
|
123
|
+
:request => {:parameters => {}, :http_method => "get", :body_content => [], :headers => {}},
|
|
124
|
+
:response => {:default => false,
|
|
125
|
+
:body => Base64.encode64(response_body),
|
|
126
|
+
:delay => 0,
|
|
127
|
+
:content_type => "text/plain",
|
|
128
|
+
:status => 200}
|
|
129
|
+
}.to_json)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it 'should return tracked request data' do
|
|
134
|
+
response_id = JSON.parse(put('/templates/greeting', {:request => {:http_method => :post}, :response => {:body => Base64.encode64("hello")}}.to_json).body)['id']
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
header "MYHEADER", "my_header_value"
|
|
138
|
+
post("/responses/greeting?param=value", 'body')
|
|
139
|
+
request_data = JSON.parse(get("/requests/#{response_id}").body)
|
|
140
|
+
|
|
141
|
+
request_data['parameters'].should == {'param' => 'value'}
|
|
142
|
+
request_data['headers']["MYHEADER"].should == "my_header_value"
|
|
143
|
+
request_data['body'].should == "body"
|
|
144
|
+
request_data['request_url'].should == "http://example.org/responses/greeting?param=value"
|
|
145
|
+
request_data['id'].should == "http://example.org/requests/#{response_id}"
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
it 'should delete a template' do
|
|
151
|
+
response_id = JSON.parse(put('/templates/greeting', {:response => {:body => Base64.encode64("hello")}}.to_json).body)['id']
|
|
152
|
+
delete("/templates/#{response_id}")
|
|
153
|
+
expect { get("/templates/#{response_id}") }.to raise_error(Mirage::ServerResponseNotFound)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
ROOT_DIR = "#{File.dirname(__FILE__)}/.."
|
|
2
|
+
$LOAD_PATH.unshift "#{ROOT_DIR}/lib"
|
|
3
|
+
$LOAD_PATH.unshift "#{ROOT_DIR}/server"
|
|
4
|
+
require 'simplecov' if ENV['coverage'] && RUBY_PLATFORM != 'java'
|
|
5
|
+
require 'mirage/client'
|
|
6
|
+
require 'rspec'
|
|
7
|
+
require 'json'
|
|
8
|
+
require 'base64'
|
|
9
|
+
|
|
10
|
+
module JsonHelpers
|
|
11
|
+
def convert_keys_to_strings hash
|
|
12
|
+
JSON.parse(hash.to_json)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
RSpec.configure do |config|
|
|
17
|
+
include Mirage
|
|
18
|
+
config.include JsonHelpers
|
|
19
|
+
|
|
20
|
+
shared_context :windows do
|
|
21
|
+
def process_string_for_mirage(mirage_port, pid)
|
|
22
|
+
%Q{ruby.exe #{pid} Console 1 6,076 K Running WIN-ATPGMMC0218\\\\leon 0:01:58 mirage server port #{mirage_port}}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
before :each do
|
|
26
|
+
ChildProcess.stub(:windows?).and_return(true)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
shared_context :linux do
|
|
31
|
+
def process_string_for_mirage(mirage_port, pid)
|
|
32
|
+
"team #{pid} 6.2 0.4 84328 20760 pts/1 Sl 22:15 0:00 Mirage Server port #{mirage_port}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
before :each do
|
|
36
|
+
ChildProcess.stub(:windows?).and_return(false)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
shared_context :resources do
|
|
40
|
+
let(:resources_dir){"#{File.dirname(__FILE__)}/resources"}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
shared_context :rack_test do |options|
|
|
44
|
+
options = {:disable_sinatra_error_handling => false}.merge(options||{})
|
|
45
|
+
require 'sinatra'
|
|
46
|
+
require 'app'
|
|
47
|
+
require 'rack/test'
|
|
48
|
+
include Rack::Test::Methods
|
|
49
|
+
|
|
50
|
+
def app
|
|
51
|
+
@app_expectations ||= proc{}
|
|
52
|
+
Mirage::Server.new do |app|
|
|
53
|
+
@app_expectations.call app
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def application_expectations &block
|
|
58
|
+
@app_expectations = proc do |app|
|
|
59
|
+
app.stub(:dup).and_return(app)
|
|
60
|
+
block.call app
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
if options[:disable_sinatra_error_handling]
|
|
65
|
+
module Mirage
|
|
66
|
+
class Server < Sinatra::Base
|
|
67
|
+
configure do
|
|
68
|
+
set :show_exceptions, false
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
module Sinatra
|
|
74
|
+
class Base
|
|
75
|
+
def handle_exception! boom
|
|
76
|
+
raise boom
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
task :clean do |task|
|
|
2
|
+
if system "gem list -i mirage"
|
|
3
|
+
puts "cleaning"
|
|
4
|
+
system "gem uninstall -x mirage"
|
|
5
|
+
end
|
|
6
|
+
Dir['*.gem'].each { |gem| FileUtils.rm_f(gem) }
|
|
7
|
+
task.reenable
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
Jeweler::Tasks.new do |gem|
|
|
11
|
+
gem.name = "mirage-on-thin"
|
|
12
|
+
gem.homepage = "https://github.com/lashd/mirage"
|
|
13
|
+
gem.license = "MIT"
|
|
14
|
+
gem.summary = "Mirage is a easy mock server for testing your applications"
|
|
15
|
+
gem.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.'
|
|
16
|
+
gem.authors = ["Leon Davis"]
|
|
17
|
+
gem.executables = ['mirage']
|
|
18
|
+
gem.post_install_message = %{
|
|
19
|
+
===============================================================================
|
|
20
|
+
Mirage v3:
|
|
21
|
+
|
|
22
|
+
Mirage has just gone up a major version from 2 to 3. If your project uses
|
|
23
|
+
a previous version take a look at https://github.com/lashd/mirage to see
|
|
24
|
+
what's changed
|
|
25
|
+
===============================================================================
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
Jeweler::RubygemsDotOrgTasks.new
|
data/tasks/tests.rake
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
task :specs
|
|
2
|
+
|
|
3
|
+
%w(client server).each do |type|
|
|
4
|
+
public_task_name = "#{type}_specs"
|
|
5
|
+
private_task_name = "_#{public_task_name}"
|
|
6
|
+
|
|
7
|
+
RSpec::Core::RakeTask.new(private_task_name) do |task|
|
|
8
|
+
task.pattern = "spec/#{type}/**/*_spec.rb"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
desc "specs for: #{type}"
|
|
12
|
+
task public_task_name do
|
|
13
|
+
ENV['coverage'] = type
|
|
14
|
+
Rake::Task[private_task_name].invoke
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Rake::Task["specs"].prerequisites << public_task_name
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
require 'cucumber'
|
|
22
|
+
require 'cucumber/rake/task'
|
|
23
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
|
24
|
+
t.cucumber_opts = "mode=regression features --format pretty"
|
|
25
|
+
end
|
data/views/index.haml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
%html
|
|
2
|
+
%head
|
|
3
|
+
%body
|
|
4
|
+
%h1 Welcome to Mirage
|
|
5
|
+
|
|
6
|
+
%p
|
|
7
|
+
Below are any responses you are currently hosting.
|
|
8
|
+
%br
|
|
9
|
+
%br
|
|
10
|
+
Click the response itself to peek at it and click 'track' to view the last request that triggered it.
|
|
11
|
+
%br
|
|
12
|
+
%br
|
|
13
|
+
|
|
14
|
+
%h2 Responses
|
|
15
|
+
- ::Mirage::MockResponse.all.each do |mock_response|
|
|
16
|
+
#{haml :response, :locals => {:mock_response => mock_response}}
|
data/views/response.haml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
- response = locals[:mock_response]
|
|
2
|
+
|
|
3
|
+
%div
|
|
4
|
+
%label{:style => 'font-weight: bold'}
|
|
5
|
+
endpoint:
|
|
6
|
+
%a{href: "/templates/#{response.response_id}/preview"} #{response.name}
|
|
7
|
+
%span -:-
|
|
8
|
+
%a{href: "/requests/#{response.response_id}"} Track
|
|
9
|
+
%br
|
|
10
|
+
%label{:style => 'font-weight: bold'}
|
|
11
|
+
ID:
|
|
12
|
+
#{response.response_id}
|
|
13
|
+
%br
|
|
14
|
+
%label{:style => 'font-weight: bold'}
|
|
15
|
+
status:
|
|
16
|
+
#{response.response_spec.status}
|
|
17
|
+
%br
|
|
18
|
+
%label{:style => 'font-weight: bold'}
|
|
19
|
+
Content-Type:
|
|
20
|
+
#{response.response_spec[:content_type]}
|
|
21
|
+
%br
|
|
22
|
+
%label{:style => 'font-weight: bold'}
|
|
23
|
+
required http method:
|
|
24
|
+
#{response.request_spec.http_method}
|
|
25
|
+
%br
|
|
26
|
+
%label{:style => 'font-weight: bold'}
|
|
27
|
+
required headers:
|
|
28
|
+
#{response.request_spec.headers.to_hash}
|
|
29
|
+
%br
|
|
30
|
+
%label{:style => 'font-weight: bold'}
|
|
31
|
+
required parameters:
|
|
32
|
+
#{response.request_spec.parameters.to_hash}
|
|
33
|
+
%br
|
|
34
|
+
%label{:style => 'font-weight: bold'}
|
|
35
|
+
required body content:
|
|
36
|
+
#{response.request_spec.body_content}
|
|
37
|
+
%br
|
|
38
|
+
%label{:style => 'font-weight: bold'}
|
|
39
|
+
delay:
|
|
40
|
+
#{response.response_spec.delay}
|
|
41
|
+
%br
|
|
42
|
+
%label{:style => 'font-weight: bold'}
|
|
43
|
+
default:
|
|
44
|
+
#{response.default? ? 'true' : 'false'}
|
|
45
|
+
%br
|
|
46
|
+
%br
|
metadata
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: mirage-on-thin
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.0.8
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Leon Davis
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: sinatra
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - '>='
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - '>='
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: thin
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: childprocess
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: waitforit
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - '>='
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: thor
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - '>='
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - '>='
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: ptools
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - '>='
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - '>='
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: httparty
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - '>='
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: haml
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - '>='
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - '>='
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: hashie
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - '>='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - '>='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: rake
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - '>='
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - '>='
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: jeweler
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - '>='
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - '>='
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: sinatra-contrib
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - '>='
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - '>='
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: jruby-openssl
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - '>='
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - '>='
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
195
|
+
description: Mirage aids testing of your applications by hosting mock responses so
|
|
196
|
+
that your applications do not have to talk to real endpoints. Its accessible via
|
|
197
|
+
HTTP and has a RESTful interface.
|
|
198
|
+
email:
|
|
199
|
+
executables:
|
|
200
|
+
- mirage
|
|
201
|
+
extensions: []
|
|
202
|
+
extra_rdoc_files:
|
|
203
|
+
- README.md
|
|
204
|
+
files:
|
|
205
|
+
- .ruby-gemset
|
|
206
|
+
- .ruby-version
|
|
207
|
+
- .simplecov
|
|
208
|
+
- .travis.yml
|
|
209
|
+
- Gemfile
|
|
210
|
+
- Gemfile.lock
|
|
211
|
+
- HISTORY
|
|
212
|
+
- README.md
|
|
213
|
+
- Rakefile
|
|
214
|
+
- VERSION
|
|
215
|
+
- bin/mirage
|
|
216
|
+
- features/.nav
|
|
217
|
+
- features/client/clear.feature
|
|
218
|
+
- features/client/configure.feature
|
|
219
|
+
- features/client/model.feature
|
|
220
|
+
- features/client/preview_responses.feature
|
|
221
|
+
- features/client/prime.feature
|
|
222
|
+
- features/client/put.feature
|
|
223
|
+
- features/client/readme.md
|
|
224
|
+
- features/client/requests.feature
|
|
225
|
+
- features/client/running.feature
|
|
226
|
+
- features/client/save_and_revert.feature
|
|
227
|
+
- features/client/start.feature
|
|
228
|
+
- features/client/stop.feature
|
|
229
|
+
- features/commandline_interface/help.feature
|
|
230
|
+
- features/commandline_interface/readme.md
|
|
231
|
+
- features/commandline_interface/start.feature
|
|
232
|
+
- features/commandline_interface/stop.feature
|
|
233
|
+
- features/logging.feature
|
|
234
|
+
- features/prime.feature
|
|
235
|
+
- features/readme.md
|
|
236
|
+
- features/requests/delete.feature
|
|
237
|
+
- features/requests/get.feature
|
|
238
|
+
- features/save_and_revert.feature
|
|
239
|
+
- features/step_definitions/my_steps.rb
|
|
240
|
+
- features/step_definitions/observation_steps.rb
|
|
241
|
+
- features/support/command_line.rb
|
|
242
|
+
- features/support/env.rb
|
|
243
|
+
- features/support/hooks.rb
|
|
244
|
+
- features/support/mirage.rb
|
|
245
|
+
- features/support/web.rb
|
|
246
|
+
- features/templates/delete.feature
|
|
247
|
+
- features/templates/get.feature
|
|
248
|
+
- features/templates/path_wildcards.feature
|
|
249
|
+
- features/templates/preview.feature
|
|
250
|
+
- features/templates/put.feature
|
|
251
|
+
- features/templates/put_with_substitutions.feature
|
|
252
|
+
- features/templates/readme.md
|
|
253
|
+
- features/templates/required_content.feature
|
|
254
|
+
- features/web_user_interface.feature
|
|
255
|
+
- full_build.sh
|
|
256
|
+
- lib/mirage/client.rb
|
|
257
|
+
- lib/mirage/client/cli_bridge.rb
|
|
258
|
+
- lib/mirage/client/client.rb
|
|
259
|
+
- lib/mirage/client/error.rb
|
|
260
|
+
- lib/mirage/client/helpers/method_builder.rb
|
|
261
|
+
- lib/mirage/client/request.rb
|
|
262
|
+
- lib/mirage/client/requests.rb
|
|
263
|
+
- lib/mirage/client/runner.rb
|
|
264
|
+
- lib/mirage/client/template.rb
|
|
265
|
+
- lib/mirage/client/template/configuration.rb
|
|
266
|
+
- lib/mirage/client/template/model.rb
|
|
267
|
+
- lib/mirage/client/template/model/common_methods.rb
|
|
268
|
+
- lib/mirage/client/template/model/instance_methods.rb
|
|
269
|
+
- lib/mirage/client/templates.rb
|
|
270
|
+
- mirage-on-thin.gemspec
|
|
271
|
+
- mirage_server.rb
|
|
272
|
+
- server/app.rb
|
|
273
|
+
- server/binary_data_checker.rb
|
|
274
|
+
- server/extensions/hash.rb
|
|
275
|
+
- server/extensions/object.rb
|
|
276
|
+
- server/helpers.rb
|
|
277
|
+
- server/helpers/http_headers.rb
|
|
278
|
+
- server/helpers/template_requirements.rb
|
|
279
|
+
- server/mock_response.rb
|
|
280
|
+
- server/server.rb
|
|
281
|
+
- spec/client/cli_bridge_spec.rb
|
|
282
|
+
- spec/client/client_spec.rb
|
|
283
|
+
- spec/client/helpers/method_builder_spec.rb
|
|
284
|
+
- spec/client/request_spec.rb
|
|
285
|
+
- spec/client/requests_spec.rb
|
|
286
|
+
- spec/client/runner_spec.rb
|
|
287
|
+
- spec/client/template/configuration_spec.rb
|
|
288
|
+
- spec/client/template/model/common_methods_spec.rb
|
|
289
|
+
- spec/client/template/model/instance_methods_spec.rb
|
|
290
|
+
- spec/client/template/model_spec.rb
|
|
291
|
+
- spec/client/template_spec.rb
|
|
292
|
+
- spec/client/templates_spec.rb
|
|
293
|
+
- spec/resources/binary.file
|
|
294
|
+
- spec/server/binary_data_checker_spec.rb
|
|
295
|
+
- spec/server/helpers/http_headers_spec.rb
|
|
296
|
+
- spec/server/helpers/template_requirements_spec.rb
|
|
297
|
+
- spec/server/mock_response_spec.rb
|
|
298
|
+
- spec/server/server_spec.rb
|
|
299
|
+
- spec/spec_helper.rb
|
|
300
|
+
- tasks/application.rake
|
|
301
|
+
- tasks/packaging.rake
|
|
302
|
+
- tasks/tests.rake
|
|
303
|
+
- views/index.haml
|
|
304
|
+
- views/response.haml
|
|
305
|
+
homepage: https://github.com/lashd/mirage
|
|
306
|
+
licenses:
|
|
307
|
+
- MIT
|
|
308
|
+
metadata: {}
|
|
309
|
+
post_install_message: |2
|
|
310
|
+
|
|
311
|
+
===============================================================================
|
|
312
|
+
Mirage v3:
|
|
313
|
+
|
|
314
|
+
Mirage has just gone up a major version from 2 to 3. If your project uses
|
|
315
|
+
a previous version take a look at https://github.com/lashd/mirage to see
|
|
316
|
+
what's changed
|
|
317
|
+
===============================================================================
|
|
318
|
+
rdoc_options: []
|
|
319
|
+
require_paths:
|
|
320
|
+
- lib
|
|
321
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
322
|
+
requirements:
|
|
323
|
+
- - '>='
|
|
324
|
+
- !ruby/object:Gem::Version
|
|
325
|
+
version: '0'
|
|
326
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
|
+
requirements:
|
|
328
|
+
- - '>='
|
|
329
|
+
- !ruby/object:Gem::Version
|
|
330
|
+
version: '0'
|
|
331
|
+
requirements: []
|
|
332
|
+
rubyforge_project:
|
|
333
|
+
rubygems_version: 2.0.14
|
|
334
|
+
signing_key:
|
|
335
|
+
specification_version: 4
|
|
336
|
+
summary: Mirage is a easy mock server for testing your applications
|
|
337
|
+
test_files: []
|