mirage 3.0.13 → 3.0.14
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 +8 -8
- metadata +1 -75
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.simplecov +0 -6
- data/.travis.yml +0 -4
- data/Gemfile +0 -27
- data/Gemfile.lock +0 -142
- data/HISTORY +0 -24
- data/Rakefile +0 -10
- data/VERSION +0 -1
- data/features/.nav +0 -29
- data/features/client/clear.feature +0 -78
- data/features/client/configure.feature +0 -72
- data/features/client/model.feature +0 -95
- data/features/client/preview_responses.feature +0 -33
- data/features/client/prime.feature +0 -32
- data/features/client/put.feature +0 -111
- data/features/client/readme.md +0 -3
- data/features/client/requests.feature +0 -20
- data/features/client/running.feature +0 -51
- data/features/client/save_and_revert.feature +0 -39
- data/features/client/start.feature +0 -46
- data/features/client/stop.feature +0 -53
- data/features/commandline_interface/help.feature +0 -17
- data/features/commandline_interface/readme.md +0 -1
- data/features/commandline_interface/start.feature +0 -18
- data/features/commandline_interface/stop.feature +0 -42
- data/features/logging.feature +0 -6
- data/features/prime.feature +0 -35
- data/features/readme.md +0 -7
- data/features/requests/delete.feature +0 -48
- data/features/requests/get.feature +0 -36
- data/features/save_and_revert.feature +0 -35
- data/features/step_definitions/my_steps.rb +0 -97
- data/features/step_definitions/observation_steps.rb +0 -102
- data/features/support/command_line.rb +0 -37
- data/features/support/env.rb +0 -22
- data/features/support/hooks.rb +0 -26
- data/features/support/mirage.rb +0 -12
- data/features/support/web.rb +0 -19
- data/features/templates/delete.feature +0 -45
- data/features/templates/get.feature +0 -54
- data/features/templates/path_wildcards.feature +0 -10
- data/features/templates/preview.feature +0 -18
- data/features/templates/put.feature +0 -77
- data/features/templates/put_with_substitutions.feature +0 -22
- data/features/templates/readme.md +0 -4
- data/features/templates/required_content.feature +0 -113
- data/features/web_user_interface.feature +0 -44
- data/full_build.sh +0 -100
- data/mirage.gemspec +0 -174
- data/spec/mirage/client/cli_bridge_spec.rb +0 -63
- data/spec/mirage/client/client_spec.rb +0 -179
- data/spec/mirage/client/helpers/method_builder_spec.rb +0 -48
- data/spec/mirage/client/request_spec.rb +0 -44
- data/spec/mirage/client/requests_spec.rb +0 -9
- data/spec/mirage/client/runner_spec.rb +0 -138
- data/spec/mirage/client/template/configuration_spec.rb +0 -32
- data/spec/mirage/client/template/model/common_methods_spec.rb +0 -25
- data/spec/mirage/client/template/model/instance_methods_spec.rb +0 -169
- data/spec/mirage/client/template/model_spec.rb +0 -119
- data/spec/mirage/client/template_spec.rb +0 -146
- data/spec/mirage/client/templates_spec.rb +0 -197
- data/spec/mirage/wait_methods_spec.rb +0 -42
- data/spec/resources/binary.file +0 -0
- data/spec/server/binary_data_checker_spec.rb +0 -21
- data/spec/server/helpers/http_headers_spec.rb +0 -20
- data/spec/server/helpers/template_requirements_spec.rb +0 -34
- data/spec/server/mock_response_set_spec.rb +0 -57
- data/spec/server/mock_response_spec.rb +0 -577
- data/spec/server/server_spec.rb +0 -156
- data/spec/spec_helper.rb +0 -85
- data/tasks/application.rake +0 -7
- data/tasks/packaging.rake +0 -28
- data/tasks/tests.rake +0 -25
data/spec/server/server_spec.rb
DELETED
@@ -1,156 +0,0 @@
|
|
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
DELETED
@@ -1,85 +0,0 @@
|
|
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
|
-
|
data/tasks/application.rake
DELETED
data/tasks/packaging.rake
DELETED
@@ -1,28 +0,0 @@
|
|
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"
|
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
DELETED
@@ -1,25 +0,0 @@
|
|
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
|