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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.simplecov +6 -0
  5. data/.travis.yml +3 -0
  6. data/Gemfile +29 -0
  7. data/Gemfile.lock +151 -0
  8. data/HISTORY +22 -0
  9. data/README.md +156 -0
  10. data/Rakefile +10 -0
  11. data/VERSION +1 -0
  12. data/bin/mirage +14 -0
  13. data/features/.nav +29 -0
  14. data/features/client/clear.feature +78 -0
  15. data/features/client/configure.feature +72 -0
  16. data/features/client/model.feature +95 -0
  17. data/features/client/preview_responses.feature +33 -0
  18. data/features/client/prime.feature +32 -0
  19. data/features/client/put.feature +111 -0
  20. data/features/client/readme.md +3 -0
  21. data/features/client/requests.feature +20 -0
  22. data/features/client/running.feature +51 -0
  23. data/features/client/save_and_revert.feature +39 -0
  24. data/features/client/start.feature +46 -0
  25. data/features/client/stop.feature +53 -0
  26. data/features/commandline_interface/help.feature +17 -0
  27. data/features/commandline_interface/readme.md +1 -0
  28. data/features/commandline_interface/start.feature +18 -0
  29. data/features/commandline_interface/stop.feature +42 -0
  30. data/features/logging.feature +6 -0
  31. data/features/prime.feature +35 -0
  32. data/features/readme.md +7 -0
  33. data/features/requests/delete.feature +48 -0
  34. data/features/requests/get.feature +36 -0
  35. data/features/save_and_revert.feature +35 -0
  36. data/features/step_definitions/my_steps.rb +98 -0
  37. data/features/step_definitions/observation_steps.rb +103 -0
  38. data/features/support/command_line.rb +33 -0
  39. data/features/support/env.rb +22 -0
  40. data/features/support/hooks.rb +26 -0
  41. data/features/support/mirage.rb +12 -0
  42. data/features/support/web.rb +20 -0
  43. data/features/templates/delete.feature +45 -0
  44. data/features/templates/get.feature +54 -0
  45. data/features/templates/path_wildcards.feature +10 -0
  46. data/features/templates/preview.feature +18 -0
  47. data/features/templates/put.feature +77 -0
  48. data/features/templates/put_with_substitutions.feature +22 -0
  49. data/features/templates/readme.md +4 -0
  50. data/features/templates/required_content.feature +113 -0
  51. data/features/web_user_interface.feature +44 -0
  52. data/full_build.sh +100 -0
  53. data/lib/mirage/client.rb +10 -0
  54. data/lib/mirage/client/cli_bridge.rb +30 -0
  55. data/lib/mirage/client/client.rb +73 -0
  56. data/lib/mirage/client/error.rb +22 -0
  57. data/lib/mirage/client/helpers/method_builder.rb +19 -0
  58. data/lib/mirage/client/request.rb +26 -0
  59. data/lib/mirage/client/requests.rb +13 -0
  60. data/lib/mirage/client/runner.rb +103 -0
  61. data/lib/mirage/client/template.rb +56 -0
  62. data/lib/mirage/client/template/configuration.rb +44 -0
  63. data/lib/mirage/client/template/model.rb +48 -0
  64. data/lib/mirage/client/template/model/common_methods.rb +24 -0
  65. data/lib/mirage/client/template/model/instance_methods.rb +95 -0
  66. data/lib/mirage/client/templates.rb +50 -0
  67. data/mirage-on-thin.gemspec +175 -0
  68. data/mirage_server.rb +35 -0
  69. data/server/app.rb +4 -0
  70. data/server/binary_data_checker.rb +15 -0
  71. data/server/extensions/hash.rb +10 -0
  72. data/server/extensions/object.rb +5 -0
  73. data/server/helpers.rb +3 -0
  74. data/server/helpers/http_headers.rb +31 -0
  75. data/server/helpers/template_requirements.rb +33 -0
  76. data/server/mock_response.rb +242 -0
  77. data/server/server.rb +184 -0
  78. data/spec/client/cli_bridge_spec.rb +63 -0
  79. data/spec/client/client_spec.rb +179 -0
  80. data/spec/client/helpers/method_builder_spec.rb +40 -0
  81. data/spec/client/request_spec.rb +39 -0
  82. data/spec/client/requests_spec.rb +9 -0
  83. data/spec/client/runner_spec.rb +138 -0
  84. data/spec/client/template/configuration_spec.rb +32 -0
  85. data/spec/client/template/model/common_methods_spec.rb +25 -0
  86. data/spec/client/template/model/instance_methods_spec.rb +169 -0
  87. data/spec/client/template/model_spec.rb +119 -0
  88. data/spec/client/template_spec.rb +146 -0
  89. data/spec/client/templates_spec.rb +197 -0
  90. data/spec/resources/binary.file +0 -0
  91. data/spec/server/binary_data_checker_spec.rb +21 -0
  92. data/spec/server/helpers/http_headers_spec.rb +20 -0
  93. data/spec/server/helpers/template_requirements_spec.rb +34 -0
  94. data/spec/server/mock_response_spec.rb +577 -0
  95. data/spec/server/server_spec.rb +156 -0
  96. data/spec/spec_helper.rb +85 -0
  97. data/tasks/application.rake +7 -0
  98. data/tasks/packaging.rake +28 -0
  99. data/tasks/tests.rake +25 -0
  100. data/views/index.haml +16 -0
  101. data/views/response.haml +46 -0
  102. 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
@@ -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,7 @@
1
+ task :start do
2
+ `RACK_ENV='development' && ruby ./bin/mirage start`
3
+ end
4
+
5
+ task :stop do
6
+ `RACK_ENV='development' && ruby ./bin/mirage stop`
7
+ end
@@ -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}}
@@ -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: []