mirage 3.0.13 → 3.0.14
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
describe 'CommonMethods' do
|
3
|
-
let!(:model) do
|
4
|
-
Class.new do
|
5
|
-
include Template::Model::CommonMethods
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
let!(:instance) do
|
10
|
-
model.new
|
11
|
-
end
|
12
|
-
it 'should provide methods for customising the model' do
|
13
|
-
instance.methods.should include(:content_type,
|
14
|
-
:http_method,
|
15
|
-
:default,
|
16
|
-
:status,
|
17
|
-
:delay,
|
18
|
-
:required_parameters,
|
19
|
-
:required_body_content,
|
20
|
-
:required_headers,
|
21
|
-
:endpoint,
|
22
|
-
:headers,
|
23
|
-
:body)
|
24
|
-
end
|
25
|
-
end
|
@@ -1,169 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Template::Model::InstanceMethods do
|
4
|
-
|
5
|
-
|
6
|
-
let!(:model) do
|
7
|
-
Class.new do
|
8
|
-
include Template::Model::InstanceMethods
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
let!(:instance) do
|
13
|
-
model.new '', ''
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
context 'initialize' do
|
18
|
-
|
19
|
-
it 'requires an endpoint' do
|
20
|
-
endpoint = 'value'
|
21
|
-
instance = model.new endpoint
|
22
|
-
instance.endpoint.should == endpoint
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'requires an endpoint and value to be provided' do
|
26
|
-
endpoint, value = 'endpoint', 'value'
|
27
|
-
instance = model.new endpoint, value
|
28
|
-
instance.endpoint.should == endpoint
|
29
|
-
instance.body.should == value
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'can use configuration for all http related config' do
|
33
|
-
config = Mirage::Template::Configuration.new
|
34
|
-
config.content_type 'content_type'
|
35
|
-
config.http_method 'method'
|
36
|
-
config.status 'status'
|
37
|
-
config.default true
|
38
|
-
|
39
|
-
instance = model.new 'endpoint', 'value', config
|
40
|
-
instance.content_type.should == config.content_type
|
41
|
-
instance.http_method.should == config.http_method
|
42
|
-
instance.status.should == config.status
|
43
|
-
instance.default.should == config.default
|
44
|
-
|
45
|
-
instance = model.new 'endpoint', config
|
46
|
-
instance.content_type.should == config.content_type
|
47
|
-
instance.http_method.should == config.http_method
|
48
|
-
instance.status.should == config.status
|
49
|
-
instance.default.should == config.default
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'to_json' do
|
54
|
-
describe 'response body' do
|
55
|
-
it 'should base64 encode response values' do
|
56
|
-
value = "value"
|
57
|
-
response = model.new "endpoint", value
|
58
|
-
JSON.parse(response.to_json)["response"]["body"].should == Base64.encode64(value)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe 'required request parameters' do
|
63
|
-
|
64
|
-
it 'should contain expected request parameters' do
|
65
|
-
required_parameters = {:key => "value"}
|
66
|
-
instance.required_parameters required_parameters
|
67
|
-
JSON.parse(instance.to_json)["request"]["parameters"].should == convert_keys_to_strings(required_parameters)
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should encode parameter requirements that are regexs' do
|
71
|
-
instance.required_parameters({:key => /regex/})
|
72
|
-
JSON.parse(instance.to_json)["request"]["parameters"].should == convert_keys_to_strings({:key => "%r{regex}"})
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe 'required body content' do
|
77
|
-
it 'should contain expected body content' do
|
78
|
-
required_body_content = ["body content"]
|
79
|
-
instance.required_body_content required_body_content
|
80
|
-
JSON.parse(instance.to_json)["request"]["body_content"].should == required_body_content
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'should encode body content requirements that are regexs' do
|
84
|
-
instance.required_body_content [/regex/]
|
85
|
-
JSON.parse(instance.to_json)["request"]["body_content"].should == %w(%r{regex})
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe 'required headers' do
|
90
|
-
it 'should contain expected headers' do
|
91
|
-
required_headers = {:header => "value"}
|
92
|
-
instance.required_headers required_headers
|
93
|
-
JSON.parse(instance.to_json)["request"]["headers"].should == convert_keys_to_strings(required_headers)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'should encode header requirements that are regexs' do
|
97
|
-
instance.required_headers({:header => /regex/})
|
98
|
-
JSON.parse(instance.to_json)["request"]["headers"].should == convert_keys_to_strings(:header => "%r{regex}")
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe 'delay' do
|
103
|
-
it 'should default to 0' do
|
104
|
-
JSON.parse(instance.to_json)["response"]["delay"].should == 0
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'should set the delay' do
|
108
|
-
delay = 5
|
109
|
-
instance.delay delay
|
110
|
-
JSON.parse(instance.to_json)["response"]["delay"].should == delay
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe 'status code' do
|
115
|
-
it 'should default to 200' do
|
116
|
-
JSON.parse(instance.to_json)["response"]["status"].should == 200
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'should set the status' do
|
120
|
-
status = 404
|
121
|
-
instance.status status
|
122
|
-
JSON.parse(instance.to_json)["response"]["status"].should == status
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe 'http method' do
|
127
|
-
it 'should default to get' do
|
128
|
-
JSON.parse(instance.to_json)["request"]["http_method"].should == "get"
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'should set the http method' do
|
132
|
-
method = :post
|
133
|
-
instance.http_method(method)
|
134
|
-
JSON.parse(instance.to_json)["request"]["http_method"].should == "post"
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
describe 'response as default' do
|
139
|
-
it 'should be false by default' do
|
140
|
-
JSON.parse(instance.to_json, symbolize_names: true)[:response][:default].should == false
|
141
|
-
end
|
142
|
-
|
143
|
-
it 'should set the default value' do
|
144
|
-
default = true
|
145
|
-
instance.default(default)
|
146
|
-
JSON.parse(instance.to_json)["response"]["default"].should == default
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
describe 'content type' do
|
151
|
-
it 'should be text/plain by default' do
|
152
|
-
JSON.parse(instance.to_json)["response"]["content_type"].should == "text/plain"
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'should set the default value' do
|
156
|
-
content_type = "application/json"
|
157
|
-
instance.content_type content_type
|
158
|
-
JSON.parse(instance.to_json)["response"]["content_type"].should == content_type
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'should set headers' do
|
163
|
-
header, value = 'header', 'value'
|
164
|
-
instance.headers[header] = value
|
165
|
-
JSON.parse(instance.to_json)["response"]["headers"].should == {header => value}
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
end
|
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Template::Model do
|
4
|
-
let(:endpoint) { 'endpoint' }
|
5
|
-
let!(:test_class) do
|
6
|
-
Class.new do
|
7
|
-
extend Template::Model
|
8
|
-
|
9
|
-
endpoint 'endpoint'
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
super
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
context 'class' do
|
17
|
-
it 'should extend MethodBuilder and CommonMethods' do
|
18
|
-
test_class.is_a?(Helpers::MethodBuilder).should == true
|
19
|
-
test_class.is_a?(Template::Model::CommonMethods).should == true
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should include Instance methods' do
|
23
|
-
test_class.is_a?(Template::Model::CommonMethods).should == true
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'inherited constructor' do
|
27
|
-
it 'should set the endpoint of the class' do
|
28
|
-
test_class.new.endpoint.should == 'endpoint'
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'calls to super should not fail if a constructor has been defined that takes args' do
|
32
|
-
test_class.class_eval do
|
33
|
-
def initialize arg
|
34
|
-
super
|
35
|
-
end
|
36
|
-
end
|
37
|
-
test_class.new('arg').endpoint.should == endpoint
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
context 'instances' do
|
45
|
-
it 'should have instance methods included' do
|
46
|
-
test_class.ancestors.should include(Template::Model::InstanceMethods)
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
it 'should include httparty' do
|
51
|
-
test_class.ancestors.should include(HTTParty)
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'defaults' do
|
55
|
-
|
56
|
-
it 'should be default the endpoint' do
|
57
|
-
endpoint = 'endpoint'
|
58
|
-
test_class.endpoint endpoint
|
59
|
-
test_class.new.endpoint.should == endpoint
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'should be default the status' do
|
63
|
-
status = 404
|
64
|
-
test_class.status status
|
65
|
-
test_class.new.status.should == status
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should be default the content-type' do
|
69
|
-
content_type = 'application/json'
|
70
|
-
test_class.content_type content_type
|
71
|
-
test_class.new.content_type.should == content_type
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'should be default the http_method' do
|
75
|
-
method = :post
|
76
|
-
test_class.http_method method
|
77
|
-
test_class.new.http_method.should == method
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'should be default the default status' do
|
81
|
-
default = true
|
82
|
-
test_class.default default
|
83
|
-
test_class.new.default.should == default
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'should be default the required parameters' do
|
87
|
-
required_parameters = {name: 'joe'}
|
88
|
-
test_class.required_parameters required_parameters
|
89
|
-
test_class.new.required_parameters.should == required_parameters
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'should be default the required headers' do
|
93
|
-
headers = {name: 'joe'}
|
94
|
-
test_class.required_headers headers
|
95
|
-
test_class.new.required_headers.should == headers
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'should be default the required body content' do
|
99
|
-
content = ['content']
|
100
|
-
test_class.required_body_content content
|
101
|
-
test_class.new.required_body_content.should == content
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should be default the headers' do
|
105
|
-
headers = {name: 'joe'}
|
106
|
-
test_class.headers headers
|
107
|
-
test_class.new.headers.should == headers
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'should be default the delay' do
|
111
|
-
delay = 4
|
112
|
-
test_class.delay delay
|
113
|
-
test_class.new.delay.should == delay
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'mirage/client'
|
3
|
-
|
4
|
-
|
5
|
-
describe Mirage::Template do
|
6
|
-
|
7
|
-
describe 'get' do
|
8
|
-
it 'should load a template given its id' do
|
9
|
-
endpoint = "endpoint"
|
10
|
-
id = 1
|
11
|
-
requests_url = 'request_url'
|
12
|
-
body = "Hello"
|
13
|
-
default = true
|
14
|
-
delay = 1.2
|
15
|
-
content_type = "application/json"
|
16
|
-
status = 201
|
17
|
-
headers = {'header' => 'value'}
|
18
|
-
|
19
|
-
|
20
|
-
required_parameters = {"name" => 'joe'}
|
21
|
-
required_body_content = %{content}
|
22
|
-
required_headers = {"header" => 'value'}
|
23
|
-
http_method = "get"
|
24
|
-
|
25
|
-
template_json = {
|
26
|
-
endpoint: endpoint,
|
27
|
-
id: id,
|
28
|
-
requests_url: requests_url,
|
29
|
-
response:{
|
30
|
-
default: default,
|
31
|
-
body: Base64.encode64(body),
|
32
|
-
delay: delay,
|
33
|
-
content_type: content_type,
|
34
|
-
status: status,
|
35
|
-
headers: headers
|
36
|
-
},
|
37
|
-
request: {
|
38
|
-
parameters: required_parameters,
|
39
|
-
body_content: required_body_content,
|
40
|
-
headers: required_headers,
|
41
|
-
http_method: http_method
|
42
|
-
}
|
43
|
-
}
|
44
|
-
template_json.should_receive(:code).and_return 200
|
45
|
-
|
46
|
-
template_url = "url"
|
47
|
-
Template.should_receive(:backedup_get).with(template_url, :format => :json).and_return(template_json)
|
48
|
-
|
49
|
-
template = Template.get(template_url)
|
50
|
-
template.body.should == body
|
51
|
-
template.endpoint.should == endpoint
|
52
|
-
template.id.should == id
|
53
|
-
|
54
|
-
template.default.should == default
|
55
|
-
template.delay.should == delay
|
56
|
-
template.content_type.should == content_type
|
57
|
-
template.status.should == status
|
58
|
-
template.headers.should == headers
|
59
|
-
|
60
|
-
template.required_parameters.should == required_parameters
|
61
|
-
template.required_body_content.should == required_body_content
|
62
|
-
template.required_headers.should == required_headers
|
63
|
-
template.http_method.should == http_method
|
64
|
-
template.url.should == template_url
|
65
|
-
template.requests_url.should == requests_url
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should raise an error if the template is not found' do
|
69
|
-
template_url = 'url'
|
70
|
-
response = double(code: 404)
|
71
|
-
Template.should_receive(:backedup_get).with(template_url, :format => :json).and_return response
|
72
|
-
expect{Template.get(template_url)}.to raise_error Mirage::TemplateNotFound
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe 'initialize' do
|
77
|
-
it 'throws and exception if an endpoint is not supplied as the first parameter' do
|
78
|
-
expect{Template.new}.to raise_error(ArgumentError)
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'throws and exception if first argument is not a string' do
|
82
|
-
expect{Template.new(:endpoint)}.to raise_error(ArgumentError)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
describe 'creating' do
|
88
|
-
json = "reponse json"
|
89
|
-
endpoint = "greeting"
|
90
|
-
|
91
|
-
it 'should create a template on mirage' do
|
92
|
-
template = Template.new(endpoint,json)
|
93
|
-
|
94
|
-
template.should_receive(:to_json).and_return(json)
|
95
|
-
Template.should_receive(:put).with(endpoint, :body => json, :headers => {'content-type' => 'application/json'}).and_return(convert_keys_to_strings({:id => 1}))
|
96
|
-
template.create
|
97
|
-
template.id.should == 1
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'should have default values set' do
|
101
|
-
template = Template.new(endpoint,json)
|
102
|
-
template.http_method.should == :get
|
103
|
-
template.status.should == 200
|
104
|
-
template.content_type.should == "text/plain"
|
105
|
-
template.default.should == false
|
106
|
-
template.delay.should == 0
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
|
111
|
-
describe 'deleting' do
|
112
|
-
|
113
|
-
it 'should clear a response' do
|
114
|
-
id = 1
|
115
|
-
template_url = "base_url/templates/#{id}"
|
116
|
-
request_url = "base_url/requests/#{id}"
|
117
|
-
|
118
|
-
template = Template.new("", "")
|
119
|
-
template.url template_url
|
120
|
-
template.requests_url request_url
|
121
|
-
|
122
|
-
|
123
|
-
template.stub(:id).and_return(id)
|
124
|
-
|
125
|
-
Template.should_receive(:delete).with(template_url)
|
126
|
-
|
127
|
-
Mirage::Request.should_receive(:delete).with(request_url)
|
128
|
-
template.delete
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
132
|
-
|
133
|
-
describe 'method missing' do
|
134
|
-
it 'should delagate to the caller if it is set' do
|
135
|
-
caller = Object.new
|
136
|
-
caller.should_receive(:some_method)
|
137
|
-
template = Template.new('endpoint')
|
138
|
-
template.caller_binding = caller
|
139
|
-
template.some_method
|
140
|
-
end
|
141
|
-
|
142
|
-
it 'should throw a standard method missing error if a caller binding is not set' do
|
143
|
-
expect{Template.new('endpoint').some_method}.to raise_error(NameError)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|