yafs 0.0.3 → 0.0.4
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 +4 -4
- data/lib/fake/request_handler.rb +2 -1
- data/lib/fake/response.rb +24 -0
- data/lib/fake_service.rb +3 -12
- data/spec/fake/request_handler_spec.rb +1 -1
- data/spec/fake/response_spec.rb +31 -0
- data/spec/features/fake_service_spec.rb +34 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 727f42ad904ad4b964734e7b781fadc39d49d6c4
|
4
|
+
data.tar.gz: 408a260d5fa3faac8a5300d0c5b47d4a71124dc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6701a72834539e7f381a5d81fe9ff1ff4c18b3b78a74b55a220a5b73c443f51b7e4e00ff1f628587995029be83b1101a35a49feabd73c32e54ff136a27534313
|
7
|
+
data.tar.gz: e84cf041c37ea207fe505e0f62c098d82e9dd949c5d94acacf19f6b726f2fc1574cca0ddc638ebed788fe7423d7348a84b1ef4464550792809bcfcbc447d5559
|
data/lib/fake/request_handler.rb
CHANGED
@@ -16,7 +16,8 @@ module Fake
|
|
16
16
|
if request.path.eql?(@path) && request.request_method.eql?(@method.to_s.upcase)
|
17
17
|
current_response = @responses.next
|
18
18
|
raise "FAKE service: No response set for request #{presentation}" if current_response.nil?
|
19
|
-
|
19
|
+
current_response.evaluate()
|
20
|
+
Rack::Response.new([current_response.body], status=current_response.status, header=current_response.headers)
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
module Fake
|
3
|
+
class Response
|
4
|
+
attr_reader :body
|
5
|
+
attr_accessor :status
|
6
|
+
attr_accessor :headers
|
7
|
+
|
8
|
+
def initialize(body, status, headers, &block)
|
9
|
+
raise "Response created with body and block. Only other can be given" if body && block
|
10
|
+
@body = body
|
11
|
+
@status = status
|
12
|
+
@block = block
|
13
|
+
@headers = headers
|
14
|
+
end
|
15
|
+
|
16
|
+
def evaluate
|
17
|
+
if !@body && @block
|
18
|
+
@body = @block.call(self)
|
19
|
+
end
|
20
|
+
@body
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/lib/fake_service.rb
CHANGED
@@ -6,20 +6,11 @@ require_relative './fake/request_handler.rb'
|
|
6
6
|
require_relative './fake/requests.rb'
|
7
7
|
require_relative './fake/request.rb'
|
8
8
|
require_relative './fake/fake.rb'
|
9
|
+
require_relative './fake/response.rb'
|
9
10
|
|
10
11
|
Thread.abort_on_exception = true
|
11
12
|
|
12
13
|
module Fake
|
13
|
-
class Response
|
14
|
-
attr_reader :body, :status
|
15
|
-
|
16
|
-
def initialize(body, status)
|
17
|
-
@body = body
|
18
|
-
@status = status
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
14
|
#
|
24
15
|
# Queue which returns last value forever
|
25
16
|
#
|
@@ -48,8 +39,8 @@ module Fake
|
|
48
39
|
#
|
49
40
|
# DSL
|
50
41
|
#
|
51
|
-
def respond(body:nil, status:200)
|
52
|
-
@request_handler.responses << Response.new(body, status)
|
42
|
+
def respond(body:nil, status:200, headers:{}, &block)
|
43
|
+
@request_handler.responses << Response.new(body, status, headers, &block)
|
53
44
|
self
|
54
45
|
end
|
55
46
|
end
|
@@ -6,7 +6,7 @@ describe Fake::RequestHandler do
|
|
6
6
|
context "when operation matches request operation" do
|
7
7
|
it "returns response" do
|
8
8
|
rh = Fake::RequestHandler.new(:get, '/home')
|
9
|
-
rh.responses << Fake::Response.new("", "200 OK")
|
9
|
+
rh.responses << Fake::Response.new("", "200 OK", {})
|
10
10
|
expect(rh.call(get_request('http://localhost/home'))).not_to eq nil
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe Fake::Response do
|
5
|
+
|
6
|
+
it "raises exception if body and block are given" do
|
7
|
+
expect { Fake::Response.new("ok", 200, {}) {} }.to raise_error
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#evaluate" do
|
11
|
+
it "makes the body for the response from the block" do
|
12
|
+
r = Fake::Response.new(nil, 200, {}) { "response" }
|
13
|
+
r.evaluate()
|
14
|
+
expect(r.body).to eq "response"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "makes the body from the body param" do
|
18
|
+
r = Fake::Response.new("response", 200, {})
|
19
|
+
r.evaluate()
|
20
|
+
expect(r.body).to eq "response"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "makes the response object available for the block" do
|
24
|
+
r = Fake::Response.new(nil, 200, {}) {|r| r.status = 201 }
|
25
|
+
r.evaluate()
|
26
|
+
expect(r.status).to eq 201
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'httparty'
|
3
|
+
require 'pry'
|
3
4
|
|
4
5
|
describe 'Fake Service' do
|
5
6
|
let(:fs) { Fake::Service.new(port:4567) }
|
@@ -46,6 +47,16 @@ describe 'Fake Service' do
|
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
50
|
+
describe "Headers" do
|
51
|
+
it "sets headers to response" do
|
52
|
+
fs.get('/').respond(headers: {"x-header" => "someurl"})
|
53
|
+
fs.start
|
54
|
+
response = HTTParty.get('http://localhost:4567')
|
55
|
+
expect(response.headers).to include("x-header")
|
56
|
+
expect(response.headers['x-header']).to eq "someurl"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
49
60
|
describe "Paths" do
|
50
61
|
describe "static paths" do
|
51
62
|
it "routes requests to correct handler" do
|
@@ -75,7 +86,7 @@ describe 'Fake Service' do
|
|
75
86
|
|
76
87
|
describe "Checking request parameters" do
|
77
88
|
it "can verify single parameter" do
|
78
|
-
fs.get('/cart')
|
89
|
+
fs.get('/cart').respond(body:'')
|
79
90
|
fs.start
|
80
91
|
HTTParty.get('http://localhost:4567/cart?id=5&status=pending')
|
81
92
|
params = Fake::Requests.request(:get, '/cart').params
|
@@ -83,6 +94,7 @@ describe 'Fake Service' do
|
|
83
94
|
expect(params.has_key? 'status')
|
84
95
|
expect(params["id"]).to eq "5"
|
85
96
|
expect(params["status"]).to eq "pending"
|
97
|
+
|
86
98
|
end
|
87
99
|
|
88
100
|
xit "can name a request to ease matching of request" do
|
@@ -150,4 +162,25 @@ describe 'Fake Service' do
|
|
150
162
|
end
|
151
163
|
end
|
152
164
|
|
165
|
+
describe "using block" do
|
166
|
+
it "uses block return value as response" do
|
167
|
+
fs.get('/').respond do
|
168
|
+
"my response"
|
169
|
+
end
|
170
|
+
fs.start
|
171
|
+
expect(HTTParty.get('http://localhost:4567').response.body).to eq "my response"
|
172
|
+
end
|
173
|
+
|
174
|
+
it "can access response object" do
|
175
|
+
fs.get('/').respond do |r|
|
176
|
+
r.status = 201
|
177
|
+
"response"
|
178
|
+
end
|
179
|
+
fs.start
|
180
|
+
expect(HTTParty.get('http://localhost:4567').response.code).to eq "201"
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
end
|
185
|
+
|
153
186
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yafs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mika Lackman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -35,9 +35,11 @@ files:
|
|
35
35
|
- lib/fake/request.rb
|
36
36
|
- lib/fake/request_handler.rb
|
37
37
|
- lib/fake/requests.rb
|
38
|
+
- lib/fake/response.rb
|
38
39
|
- lib/fake/service.rb
|
39
40
|
- lib/fake_service.rb
|
40
41
|
- spec/fake/request_handler_spec.rb
|
42
|
+
- spec/fake/response_spec.rb
|
41
43
|
- spec/features/fake_service_spec.rb
|
42
44
|
- spec/helpers.rb
|
43
45
|
- spec/spec_helper.rb
|
@@ -67,6 +69,7 @@ specification_version: 4
|
|
67
69
|
summary: Yet another fake http service for e2e tests
|
68
70
|
test_files:
|
69
71
|
- spec/fake/request_handler_spec.rb
|
72
|
+
- spec/fake/response_spec.rb
|
70
73
|
- spec/features/fake_service_spec.rb
|
71
74
|
- spec/helpers.rb
|
72
75
|
- spec/spec_helper.rb
|