rest_shifter 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6f15a8fc602a8726f2137096908e68e0fb4e0b6
4
- data.tar.gz: 6873533a73cfa67d631d91ef35f23acceeeb687b
3
+ metadata.gz: b5c41753cf4e00ae06f8b076c44991a74cb548a6
4
+ data.tar.gz: 6482d5ab7a1389cef63e47854538f88290f8307a
5
5
  SHA512:
6
- metadata.gz: d0c46c048dac34dd6d3a39f2bbd8718d42933bb2ed28b835fea857211b3df1904da2c45c1bbb9fa282e2d07160ada92c333379af1efb11e4ee2c7192bd6febd3
7
- data.tar.gz: 60487cbb1b9ec627a7a56ef666b09a66e0909dba8f8809ab10493b1a4c74d32bab9412b066a9b87dde2e6d772b6441b20cf7ecd638f90f4f24335bf989ed6016
6
+ metadata.gz: be7c8c594ab04221c0f8e47131f0655960967d1dc4b4c264b34e03d1901e40f9d9368814725b00cf2e56815f33578b5204d92a08d488b33220ad39f81c18f232
7
+ data.tar.gz: e226bc6576fbd2a44cc3396e0f859a34e6d8b6c64f05deffe2b159b3ca848cc72b3602722e309404a39dc7c8517383307ae5a5a23c0d29ec6cc67ea329dd3abb
data/.gitignore CHANGED
@@ -19,6 +19,7 @@ build/
19
19
  /_yardoc/
20
20
  /doc/
21
21
  /rdoc/
22
+ *.swp
22
23
 
23
24
  ## Environment normalisation:
24
25
  /.bundle/
data/.travis.yml CHANGED
@@ -1,7 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
3
  - 2.1.0
6
4
  env:
7
5
  - RACK_ENV=test
data/CHANGES CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ ** 0.0.10
3
+ - Feature
4
+ -- Now it is possible to define route using accept header
5
+
2
6
  ** 0.0.9
3
7
  - Bugfix
4
8
  -- Fixing command -c create to include response sleep
@@ -9,6 +9,8 @@ class RestShifter::Commands::Create
9
9
  File.open(dirname + "/" + name, 'w') {|f| f.write(
10
10
  'method_used = "get"
11
11
  path = "/hello_world"
12
+ request_accept = ""
13
+ request_content_type = ""
12
14
  response_sleep = 0
13
15
  response_status = "200"
14
16
  response_body = "{ \"hello_world\" : \"Your service is working fine. :D\" }"
@@ -1,5 +1,4 @@
1
1
  require 'sinatra/base'
2
- require 'sinatra'
3
2
  require 'icecream'
4
3
 
5
4
  module RestShifter; end
@@ -23,21 +22,40 @@ class Shifter < Sinatra::Base
23
22
  posts_paths = gets.map { |service| service.path }.uniq
24
23
 
25
24
  gets.each do |service|
26
- get service.path do
27
- sleep service.response_sleep
28
- status service.response_status
29
- content_type service.response_content_type
30
- service.response_body
25
+ if service.request_accept.to_s == ''
26
+ get service.path do
27
+ sleep service.response_sleep
28
+ status service.response_status
29
+ content_type service.response_content_type
30
+ service.response_body
31
+ end
32
+ else
33
+ get service.path, :provides => service.request_accept.to_s == '' ? "" : service.request_accept do
34
+ sleep service.response_sleep
35
+ status service.response_status
36
+ content_type service.response_content_type
37
+ service.response_body
38
+ end
31
39
  end
32
40
  end
33
41
 
34
42
  posts.each do |service|
35
- post service.path do
36
- sleep service.response_sleep
37
- status service.response_status
38
- content_type service.response_content_type
39
- service.response_body
43
+ if service.request_accept.to_s == ''
44
+ post service.path do
45
+ sleep service.response_sleep
46
+ status service.response_status
47
+ content_type service.response_content_type
48
+ service.response_body
49
+ end
50
+ else
51
+ post service.path, :provides => service.request_accept.to_s == '' ? "" : service.request_accept do
52
+ sleep service.response_sleep
53
+ status service.response_status
54
+ content_type service.response_content_type
55
+ service.response_body
56
+ end
40
57
  end
41
58
  end
42
59
 
60
+
43
61
  end
@@ -1,3 +1,3 @@
1
1
  module RestShifter
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -1,8 +1,8 @@
1
1
  method_used = "get"
2
2
  path = "/notfound"
3
- request_accept = nil
4
- request_content_type = nil
3
+ request_accept = "text/plain"
4
+ request_content_type = ""
5
5
  response_sleep = 0
6
- response_status = "404"
7
- response_body = "Not Found"
8
- response_content_type = "application/foo.company.product.type-version+json"
6
+ response_status = "201"
7
+ response_body = "This is just a text"
8
+ response_content_type = "text/plain"
@@ -0,0 +1,8 @@
1
+ method_used = "get"
2
+ path = "/notfound"
3
+ request_accept = "application/json"
4
+ request_content_type = ""
5
+ response_sleep = 0
6
+ response_status = "200"
7
+ response_body = "Found"
8
+ response_content_type = "application/json"
@@ -1,7 +1,7 @@
1
1
  method_used = "post"
2
2
  path = "/notfound"
3
- request_accept = nil
4
- request_content_type = nil
3
+ request_accept = ""
4
+ request_content_type = ""
5
5
  response_sleep = 0
6
6
  response_status = "404"
7
7
  response_body = "Not Found"
@@ -1,7 +1,7 @@
1
1
  method_used = "get"
2
2
  path = "/sleep"
3
- request_accept = nil
4
- request_content_type = nil
3
+ request_accept = ""
4
+ request_content_type = ""
5
5
  response_sleep = 1
6
6
  response_status = "200"
7
7
  response_body = "This should sleep for one second"
@@ -1,7 +1,7 @@
1
1
  method_used = "get"
2
2
  path = "/ok"
3
- request_accept = nil
4
- request_content_type = nil
3
+ request_accept = ""
4
+ request_content_type = ""
5
5
  request_body = nil
6
6
  request_scheme = nil
7
7
  request_port = nil
@@ -1,7 +1,7 @@
1
1
  method_used = "post"
2
2
  path = "/ok"
3
- request_accept = nil
4
- request_content_type = nil
3
+ request_accept = ""
4
+ request_content_type = ""
5
5
  response_sleep = 0
6
6
  response_status = "200"
7
7
  response_body = "success"
data/spec/service_spec.rb CHANGED
@@ -9,30 +9,47 @@ describe RestShifter do
9
9
 
10
10
  describe Shifter do
11
11
  describe "Get Operations" do
12
- it "Service should return 200 for get" do
12
+ it "Endpoint for get" do
13
13
  get '/ok'
14
14
  expect(last_response.status).to eq(200)
15
15
  expect(last_response.body).to eq("success")
16
16
  expect(last_response.headers['Content-Type']).to eq("application/json")
17
17
  end
18
18
 
19
- it "Service should return 404 without accept defining routing for get" do
19
+ it "Known bug: Return 400 when has no endpoint with specified accept" do
20
+ header 'Accept', 'application/xml'
20
21
  get '/notfound'
21
22
  expect(last_response.status).to eq(404)
22
- expect(last_response.body).to eq("Not Found")
23
- expect(last_response.headers['Content-Type']).to eq("application/foo.company.product.type-version+json")
23
+ expect(last_response.body).to eq("<h1>Not Found</h1>")
24
+ expect(last_response.headers['Content-Type']).to eq("text/html;charset=utf-8")
25
+ end
26
+
27
+ it "Should choose right endpoint based on accept header - text" do
28
+ header 'Accept', 'text/plain'
29
+ get '/notfound'
30
+ expect(last_response.status).to eq(201)
31
+ expect(last_response.body).to eq("This is just a text")
32
+ expect(last_response.headers['Content-Type']).to eq("text/plain;charset=utf-8")
33
+ end
34
+
35
+ it "Should choose right endpoint based on accept header - json" do
36
+ header 'Accept', 'application/json'
37
+ get '/notfound'
38
+ expect(last_response.status).to eq(200)
39
+ expect(last_response.body).to eq("Found")
40
+ expect(last_response.headers['Content-Type']).to eq("application/json")
24
41
  end
25
42
 
26
43
  end
27
44
  describe "Post operations" do
28
- it "Service should return 200 for post" do
45
+ it "Endpoint for post" do
29
46
  post '/ok'
30
47
  expect(last_response.status).to eq(200)
31
48
  expect(last_response.body).to eq("success")
32
49
  expect(last_response.headers['Content-Type']).to eq("application/json")
33
50
  end
34
51
 
35
- it "Service should return 404 without accept defining routing for post" do
52
+ it "Common endpoint with get should behave like post when using post" do
36
53
  post '/notfound'
37
54
  expect(last_response.status).to eq(404)
38
55
  expect(last_response.body).to eq("Not Found")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_shifter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Ribeiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-17 00:00:00.000000000 Z
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
@@ -193,6 +193,7 @@ files:
193
193
  - lib/rest_shifter/version.rb
194
194
  - rest_shifter.gemspec
195
195
  - spec/flavors/notfound_get.flavor
196
+ - spec/flavors/notfound_get_accept.flavor
196
197
  - spec/flavors/notfound_post.flavor
197
198
  - spec/flavors/sleep_get.flavor
198
199
  - spec/flavors/success_get.flavor
@@ -225,6 +226,7 @@ specification_version: 4
225
226
  summary: Simple Rest Mock service
226
227
  test_files:
227
228
  - spec/flavors/notfound_get.flavor
229
+ - spec/flavors/notfound_get_accept.flavor
228
230
  - spec/flavors/notfound_post.flavor
229
231
  - spec/flavors/sleep_get.flavor
230
232
  - spec/flavors/success_get.flavor