optimus_prime 3.2.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/optimus_prime/server.rb +47 -42
- data/lib/optimus_prime/version.rb +1 -1
- data/spec/lib/optimus_prime_spec.rb +14 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b21594444427e0d8f033659808f7694b71d51f08
|
4
|
+
data.tar.gz: 79b3ada0c5c81ecac3c502a3e5c5763f035009b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca99401cb0c9100ed66e20997871600d97b52258cbf3f53ef3ce0500863864e74da3cb7492011a624c90e6b48a42c6788bc4a52bf504e575100ed97c616ee145
|
7
|
+
data.tar.gz: 6609b0f517db910e86d21674de883fe94183050bcc9f9f09925dbd8ebb584edf6bc08a097b0f2bd198ebb3503a9b814f4533526c569e71f8909456f6d4b7ce8b
|
data/lib/optimus_prime/server.rb
CHANGED
@@ -28,19 +28,19 @@ module OptimusPrime
|
|
28
28
|
return 404
|
29
29
|
end
|
30
30
|
|
31
|
+
body = parse_request(response[:content_type])
|
32
|
+
|
31
33
|
if response[:requested_with]
|
32
|
-
|
33
|
-
return 404 unless eval("request.body.read.include?('#{response[:requested_with]}')")
|
34
|
+
return 404 unless body.include?(response[:requested_with])
|
34
35
|
end
|
35
36
|
|
36
37
|
sleep(response[:sleep].to_i) if response[:sleep]
|
37
38
|
|
38
39
|
if response[:persisted]
|
39
|
-
|
40
|
-
@@responses[path][:body] = JSON.parse(response[:body]).merge!(JSON.parse(new_body)).to_json
|
40
|
+
@@responses[path][:body] = JSON.parse(response[:body]).merge!(body)
|
41
41
|
end
|
42
42
|
|
43
|
-
record_request(path)
|
43
|
+
record_request(path, body)
|
44
44
|
content_type(response[:content_type])
|
45
45
|
status(response[:status_code] || 201)
|
46
46
|
return "" if response[:status_code] =~ /500|404/
|
@@ -55,19 +55,19 @@ module OptimusPrime
|
|
55
55
|
return 404
|
56
56
|
end
|
57
57
|
|
58
|
+
body = parse_request(response[:content_type])
|
59
|
+
|
58
60
|
if response[:requested_with]
|
59
|
-
|
60
|
-
return 404 unless eval("request.body.read.include?('#{response[:requested_with]}')")
|
61
|
+
return 404 unless body.include?(response[:requested_with])
|
61
62
|
end
|
62
63
|
|
63
64
|
sleep(response[:sleep].to_i) if response[:sleep]
|
64
65
|
|
65
66
|
if response[:persisted]
|
66
|
-
|
67
|
-
@@responses[path][:body] = JSON.parse(response[:body]).merge!(JSON.parse(new_body)).to_json
|
67
|
+
@@responses[path][:body] = JSON.parse(response[:body]).merge!(body).to_json
|
68
68
|
end
|
69
69
|
|
70
|
-
record_request(path)
|
70
|
+
record_request(path, body)
|
71
71
|
content_type(response[:content_type])
|
72
72
|
status(response[:status_code] || 201)
|
73
73
|
return "" if response[:status_code] =~ /500|404/
|
@@ -82,41 +82,24 @@ module OptimusPrime
|
|
82
82
|
return 404
|
83
83
|
end
|
84
84
|
|
85
|
+
body = parse_request(response[:content_type])
|
86
|
+
|
85
87
|
if response[:requested_with]
|
86
|
-
|
87
|
-
return 404 unless eval("request.body.read.include?('#{response[:requested_with]}')")
|
88
|
+
return 404 unless body.include?(response[:requested_with])
|
88
89
|
end
|
89
90
|
|
90
|
-
|
91
91
|
if response[:persisted]
|
92
|
-
|
93
|
-
@@responses[path][:body] = new_body.to_json
|
92
|
+
@@responses[path][:body] = body
|
94
93
|
end
|
95
94
|
|
96
|
-
record_request(path)
|
97
|
-
|
95
|
+
record_request(path, body)
|
98
96
|
content_type(response[:content_type])
|
99
97
|
status(response[:status_code])
|
100
|
-
|
101
98
|
sleep(response[:sleep].to_i) if response[:sleep]
|
102
|
-
|
103
99
|
return "" if response[:status_code] =~ /500|404/
|
104
100
|
response[:body]
|
105
101
|
end
|
106
102
|
|
107
|
-
def record_request(path)
|
108
|
-
requests[path][:count] += 1
|
109
|
-
params.delete("splat")
|
110
|
-
params.delete("captures")
|
111
|
-
request_made = { method: self.env["REQUEST_METHOD"], body: params, headers: { content_type: request.content_type, accept: request.accept } }
|
112
|
-
requests[path][:last_request] = request_made
|
113
|
-
end
|
114
|
-
|
115
|
-
def get_path
|
116
|
-
# self.env["REQUEST_URI"].scan(/^\/get\/([\/\w+]+)(\/|\?|$)/).flatten[0]
|
117
|
-
self.env["REQUEST_URI"].sub(/\/get\/|\/requests\//, "")
|
118
|
-
end
|
119
|
-
|
120
103
|
get "/get/*" do
|
121
104
|
path = get_path
|
122
105
|
response = responses[path]
|
@@ -126,7 +109,7 @@ module OptimusPrime
|
|
126
109
|
return 404
|
127
110
|
end
|
128
111
|
|
129
|
-
record_request(path)
|
112
|
+
record_request(path, {})
|
130
113
|
|
131
114
|
sleep(response[:sleep].to_f) if response[:sleep]
|
132
115
|
|
@@ -166,20 +149,42 @@ module OptimusPrime
|
|
166
149
|
@@not_primed.to_json
|
167
150
|
end
|
168
151
|
|
152
|
+
def record_request(path, body)
|
153
|
+
requests[path][:count] += 1
|
154
|
+
request_made = { method: self.env["REQUEST_METHOD"], body: body, headers: { content_type: request.content_type, accept: request.accept } }
|
155
|
+
@@requests[path][:last_request] = request_made
|
156
|
+
end
|
157
|
+
|
158
|
+
def get_path
|
159
|
+
# self.env["REQUEST_URI"].scan(/^\/get\/([\/\w+]+)(\/|\?|$)/).flatten[0]
|
160
|
+
self.env["REQUEST_URI"].sub(/\/get\/|\/requests\//, "")
|
161
|
+
end
|
162
|
+
|
163
|
+
|
169
164
|
private
|
170
165
|
|
171
|
-
|
172
|
-
|
166
|
+
def parse_request(content_type)
|
167
|
+
if content_type.match(/json/)
|
168
|
+
request_body = request.body.read
|
169
|
+
request_body = request_body.empty? ? "{}" : request_body
|
170
|
+
request_body = JSON.parse(request_body)
|
171
|
+
else
|
172
|
+
request_body = request.body.read
|
173
173
|
end
|
174
|
+
request.body.rewind
|
175
|
+
request_body
|
176
|
+
end
|
174
177
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
+
def responses
|
179
|
+
@@responses
|
180
|
+
end
|
178
181
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
+
def requests
|
183
|
+
@@requests
|
184
|
+
end
|
182
185
|
|
186
|
+
def get_boolean(boolean)
|
187
|
+
boolean == "true"
|
188
|
+
end
|
183
189
|
end
|
184
|
-
|
185
190
|
end
|
@@ -2,6 +2,12 @@ OptimusPrime::Cannon.fire!(7003)
|
|
2
2
|
|
3
3
|
describe OptimusPrime do
|
4
4
|
|
5
|
+
after(:all) do
|
6
|
+
if File.exists?(File.expand_path("../../tmp/pids/optimus_prime.pid", __dir__))
|
7
|
+
system("thin stop -P #{File.expand_path("../../tmp/pids/optimus_prime.pid", __dir__)}")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
let(:op) { OptimusPrime::Base.new }
|
6
12
|
|
7
13
|
it "primes an endpoint" do
|
@@ -9,7 +15,7 @@ describe OptimusPrime do
|
|
9
15
|
end
|
10
16
|
|
11
17
|
it "primes an endpoint with attributes" do
|
12
|
-
op.prime("test", "I am a response")
|
18
|
+
op.prime("test", "I am a response", content_type: "text/html")
|
13
19
|
|
14
20
|
response = ::Faraday.get("http://localhost:7003/get/test")
|
15
21
|
expect( response.body ).to eq "I am a response"
|
@@ -68,7 +74,7 @@ describe OptimusPrime do
|
|
68
74
|
context "Asserting on request content" do
|
69
75
|
|
70
76
|
it "returns a 404 if the request body does not match the assertion" do
|
71
|
-
op.prime("user", { username: "Test" }.to_json, content_type:
|
77
|
+
op.prime("user", { username: "Test" }.to_json, content_type: "text/html", requested_with: "haha")
|
72
78
|
|
73
79
|
response = ::Faraday.post('http://localhost:7003/get/user', "I am a body")
|
74
80
|
|
@@ -76,7 +82,7 @@ describe OptimusPrime do
|
|
76
82
|
end
|
77
83
|
|
78
84
|
it "returns a 200 if the request body does match the assertion" do
|
79
|
-
op.prime("user", { username: "Test" }.to_json, content_type: :
|
85
|
+
op.prime("user", { username: "Test" }.to_json, content_type: :html, requested_with: "I am a body")
|
80
86
|
|
81
87
|
response = ::Faraday.post('http://localhost:7003/get/user', "I am a body")
|
82
88
|
|
@@ -199,19 +205,19 @@ describe OptimusPrime do
|
|
199
205
|
|
200
206
|
it "POST" do
|
201
207
|
op.prime("kermit", { username: "Test" }.to_json, content_type: :json)
|
202
|
-
::Faraday.post("http://localhost:7003/get/kermit", { username: "Test" })
|
208
|
+
::Faraday.post("http://localhost:7003/get/kermit", { username: "Test" }.to_json)
|
203
209
|
expect( op.last_request_for("kermit") ).to eq({ "method" => "POST", "body" => { "username" => "Test" }, "headers"=>{ "content_type"=>"application/x-www-form-urlencoded", "accept"=>["*/*"]} })
|
204
210
|
end
|
205
211
|
|
206
212
|
it "PUT" do
|
207
213
|
op.prime("put/kermit", { username: "Test" }.to_json, content_type: :json)
|
208
|
-
::Faraday.put("http://localhost:7003/get/put/kermit", { username: "Test" })
|
214
|
+
::Faraday.put("http://localhost:7003/get/put/kermit", { username: "Test" }.to_json)
|
209
215
|
expect( op.last_request_for("put/kermit") ).to eq({"method"=>"PUT", "body"=>{"username"=>"Test"}, "headers"=>{"content_type"=>"application/x-www-form-urlencoded", "accept"=>["*/*"]}})
|
210
216
|
end
|
211
217
|
|
212
218
|
it "returns a decoded body" do
|
213
219
|
op.prime("kermit", { username: "Test" }.to_json, content_type: :json)
|
214
|
-
::Faraday.post("http://localhost:7003/get/kermit", { word: "with spaces and other shit" })
|
220
|
+
::Faraday.post("http://localhost:7003/get/kermit", { word: "with spaces and other shit" }.to_json)
|
215
221
|
expect( op.last_request_for("kermit") ).to eq({"method"=>"POST", "body"=>{"word"=>"with spaces and other shit"}, "headers"=>{"content_type"=>"application/x-www-form-urlencoded", "accept"=>["*/*"]}})
|
216
222
|
end
|
217
223
|
|
@@ -242,8 +248,8 @@ describe OptimusPrime do
|
|
242
248
|
op = OptimusPrime::Base.new(wait_for: 1)
|
243
249
|
op.prime("expectation", { status: "UNKOWN" }, content_type: :json)
|
244
250
|
|
245
|
-
::Faraday.post("http://localhost:7003/get/expectation", { status: "IN_PROGRESS" } )
|
246
|
-
Thread.new { sleep(0.5); ::Faraday.post("http://localhost:7003/get/expectation", { status: "COMPLETED" } )}
|
251
|
+
::Faraday.post("http://localhost:7003/get/expectation", { status: "IN_PROGRESS" }.to_json )
|
252
|
+
Thread.new { sleep(0.5); ::Faraday.post("http://localhost:7003/get/expectation", { status: "COMPLETED" }.to_json )}
|
247
253
|
|
248
254
|
op.wait_until_request("expectation") do |request|
|
249
255
|
expect(request["body"]["status"]).to eq("COMPLETED")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optimus_prime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antonio Nalesso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|