rack-banken 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rack/banken.rb +4 -2
  3. data/lib/rack/banken/exception_handler.rb +2 -2
  4. data/lib/rack/banken/exceptions/bad_request.rb +14 -0
  5. data/lib/rack/banken/exceptions/conflict.rb +14 -0
  6. data/lib/rack/banken/exceptions/expectation_failed.rb +14 -0
  7. data/lib/rack/banken/exceptions/failed_dependency.rb +14 -0
  8. data/lib/rack/banken/exceptions/forbidden.rb +14 -0
  9. data/lib/rack/banken/exceptions/gone.rb +14 -0
  10. data/lib/rack/banken/exceptions/length_required.rb +14 -0
  11. data/lib/rack/banken/exceptions/locked.rb +14 -0
  12. data/lib/rack/banken/exceptions/method_not_allowed.rb +14 -0
  13. data/lib/rack/banken/exceptions/not_acceptable.rb +14 -0
  14. data/lib/rack/banken/exceptions/not_found.rb +14 -0
  15. data/lib/rack/banken/exceptions/payment_required.rb +14 -0
  16. data/lib/rack/banken/exceptions/precondition_failed.rb +14 -0
  17. data/lib/rack/banken/exceptions/proxy_authentication_required.rb +14 -0
  18. data/lib/rack/banken/exceptions/request_entity_too_large.rb +14 -0
  19. data/lib/rack/banken/exceptions/request_timeout.rb +14 -0
  20. data/lib/rack/banken/exceptions/request_uri_too_long.rb +14 -0
  21. data/lib/rack/banken/exceptions/requested_range_not_satisfiable.rb +14 -0
  22. data/lib/rack/banken/exceptions/unauthorized.rb +14 -0
  23. data/lib/rack/banken/exceptions/unprocessable_entity.rb +14 -0
  24. data/lib/rack/banken/exceptions/unsupported_media_type.rb +14 -0
  25. data/lib/rack/banken/exceptions/upgrade_required.rb +14 -0
  26. data/lib/rack/banken/version.rb +1 -1
  27. data/rack-banken.gemspec +1 -0
  28. data/spec/rack_banken_spec.rb +27 -18
  29. data/spec/spec_helper.rb +23 -6
  30. metadata +37 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbb3070e870bd764c7e6c5193f51de203ab35b1f
4
- data.tar.gz: c0fd7feb798a59e1c357ed72b78404097a79130f
3
+ metadata.gz: 577eb2d3124ead092614bae984ebdb18083b322b
4
+ data.tar.gz: f82d16b93b8bad0678f024e1499cd5020016b17d
5
5
  SHA512:
6
- metadata.gz: bea8002aa7be9574d2be307c590bf768e837e01ff3de1a940d727f2f00b928b9194b496f0a92dea2554761d5afc15eb7c0e69050315ad307bebd672dfe36d36f
7
- data.tar.gz: 6b21681e50ebb643e9b8d5dd0ba183f33c0b2a4a7a02e8a6d9bdcbea0337cbc7c34d4588390afa417a547c823d95f6bbb4d91b041011213e8af18daeace1ccf3
6
+ metadata.gz: 5a6cf433b79c3994884237564588b4d9edeb75f10d8b77e8940e4344931d269636ec4a57c80c4cb16b1a3025dd5f241b9c3ba5de54a00dbe2dc371b704db210d
7
+ data.tar.gz: a38c0a29bb0ce79d1850b71f3758841854322583102096ccb403b955a5732bf2b3020807899f81ac525dae6760ca17ec4df03af9e0f37ecfc071df6262f40429
data/lib/rack/banken.rb CHANGED
@@ -8,7 +8,9 @@ module Rack
8
8
  require "rack/banken/exception_handler"
9
9
 
10
10
  require "rack/banken/exceptions/base"
11
- require "rack/banken/exceptions/internal_server_error"
12
- require "rack/banken/exceptions/validation_failed"
11
+
12
+ Dir[::File.expand_path('../banken/exceptions', __FILE__) << '/*.rb'].each do |file|
13
+ require file
14
+ end
13
15
  end
14
16
  end
@@ -10,8 +10,8 @@ module Rack
10
10
  begin
11
11
  @app.call(env)
12
12
 
13
- rescue Exceptions::ValidationFailed => e
14
- raise Exceptions::ValidationFailed, e.message
13
+ rescue Exceptions::Base => e
14
+ raise e.class, e.message
15
15
 
16
16
  rescue => e
17
17
  raise Exceptions::InternalServerError, e.message
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class BadRequest < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 400
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Conflict < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 409
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class ExpectationFailed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 417
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class FailedDependency < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 424
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Forbidden < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 403
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Gone < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 410
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class LengthRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 411
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Locked < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 423
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class MethodNotAllowed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 405
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class NotAcceptable < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 406
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class NotFound < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 404
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class PaymentRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 401
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class PreconditionFailed < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 412
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class ProxyAuthenticationRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 407
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestEntityTooLarge < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 413
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestTimeout < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 408
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestUriTooLong < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 414
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class RequestedRangeNotSatisfiable < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 416
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class Unauthorized < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 401
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UnprocessableEntity < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 422
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UnsupportedMediaType < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 415
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Rack
2
+ module Banken
3
+ module Exceptions
4
+ class UpgradeRequired < Base
5
+
6
+ private
7
+
8
+ def status_code
9
+ 426
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Banken
3
- VERSION = "0.8.0"
3
+ VERSION = "0.8.1"
4
4
  end
5
5
  end
data/rack-banken.gemspec CHANGED
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rack-test"
26
26
  spec.add_development_dependency "rspec", "~> 3.0.0"
27
+ spec.add_development_dependency "activesupport", "~> 4.2.0"
27
28
  end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'spec_helper'
2
3
  RSpec.describe "Rack::Banken" do
3
4
  include SpecHelper
@@ -13,38 +14,46 @@ RSpec.describe "Rack::Banken" do
13
14
  expect(last_response.body).to eq("test body")
14
15
  end
15
16
 
16
- describe "if Exception occured" do
17
- let(:path){ '/runtime_error' }
18
17
 
19
- it "response staus is 500" do
20
- get path
21
- expect(last_response.status).to eq(500)
22
- end
18
+ ######################################################
19
+ # 例外に合わせたレスポンスが返ってくるかのテストを生成する
20
+ ######################################################
23
21
 
24
- it "response body is formated by Rack::Banken::Exceptions::Base.body" do
25
- get path
26
- json = JSON.parse(last_response.body)
27
-
28
- expect(json['result']).to eq(false)
29
- expect(json['error']).to be_kind_of(String)
30
- end
22
+ exceptions = []
23
+ Dir.glob('lib/rack/banken/exceptions/*.rb').each do |f|
24
+ exceptions << File.basename(f).split('.').first
31
25
  end
32
26
 
33
- describe "if Exception Rack::Banken::Exceptions::ValidationFailed occured" do
34
- let(:path) { '/validation_failed' }
27
+ exceptions.each do |exception|
28
+
29
+ class_s = "Rack::Banken::Exceptions::#{exception.camelize}"
30
+ class_con = class_s.constantize
31
+ status_code = class_con.new.to_rack_response.first
32
+
33
+ eval <<-EOS
34
+
35
+ describe_msg = "if " + class_s + " occured"
36
+ it_msg = "response body is formated by " + class_s
37
+ it_staus_code_msg = "response status is " + status_code.to_s
35
38
 
36
- it "response status is 400" do
39
+ describe describe_msg do
40
+ let(:path) { '/' + exception }
41
+
42
+ it it_staus_code_msg do
37
43
  get path
38
- expect(last_response.status).to eq(400)
44
+ expect(last_response.status).to eq(status_code)
39
45
  end
40
46
 
41
- it "response body is formated by Rack::Banken::Exceptions::ValidationFailed" do
47
+ it it_msg do
42
48
  get path
43
49
  json = JSON.parse(last_response.body)
44
50
 
45
51
  expect(json['result']).to eq(false)
46
52
  expect(json['error']).to be_kind_of(String)
47
53
  end
54
+ end
55
+
56
+ EOS
48
57
 
49
58
  end
50
59
 
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,15 @@
1
+ # -*- coding: utf-8 -*-
1
2
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
3
  $:.unshift(File.dirname(__FILE__))
3
-
4
- %w(rubygems rack rack/test rack/banken rspec).each do |f|
4
+
5
+ %w(rubygems
6
+ rack
7
+ rack/test
8
+ rack/banken
9
+ rspec
10
+ active_support/core_ext/string/inflections
11
+ active_support/inflector).each do |f|
12
+
5
13
  require f
6
14
  end
7
15
 
@@ -12,14 +20,23 @@ module SpecHelper
12
20
  def call(env)
13
21
  request = Rack::Request.new(env)
14
22
 
15
- if request.path_info == '/runtime_error'
16
- raise StandardError, 'runtime error is occured'
23
+ exceptions = []
24
+ Dir.glob('lib/rack/banken/exceptions/*.rb').each do
25
+ |f| exceptions << File.basename(f).split('.').first
17
26
  end
18
27
 
19
- if request.path_info == '/validation_failed'
20
- raise ::Rack::Banken::Exceptions::ValidationFailed, 'params is not valid.'
28
+ #################################################
29
+ # 例外名のパス(例: /bad_request)のリクエストを受けたら
30
+ # その名前の例外を発生されるように定義する。
31
+ #################################################
32
+ exceptions.each do |ex|
33
+ if request.path_info == "/#{ex}"
34
+ klass = "Rack::Banken::Exceptions::#{ex.camelize}"
35
+ raise klass.constantize
36
+ end
21
37
  end
22
38
 
39
+
23
40
  code = 200
24
41
  body = ["test body"]
25
42
  header = {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-banken
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arakaki Yuji
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 3.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 4.2.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 4.2.0
97
111
  description:
98
112
  email:
99
113
  - arakaki@ryukyu-i.co.jp
@@ -108,8 +122,30 @@ files:
108
122
  - Rakefile
109
123
  - lib/rack/banken.rb
110
124
  - lib/rack/banken/exception_handler.rb
125
+ - lib/rack/banken/exceptions/bad_request.rb
111
126
  - lib/rack/banken/exceptions/base.rb
127
+ - lib/rack/banken/exceptions/conflict.rb
128
+ - lib/rack/banken/exceptions/expectation_failed.rb
129
+ - lib/rack/banken/exceptions/failed_dependency.rb
130
+ - lib/rack/banken/exceptions/forbidden.rb
131
+ - lib/rack/banken/exceptions/gone.rb
112
132
  - lib/rack/banken/exceptions/internal_server_error.rb
133
+ - lib/rack/banken/exceptions/length_required.rb
134
+ - lib/rack/banken/exceptions/locked.rb
135
+ - lib/rack/banken/exceptions/method_not_allowed.rb
136
+ - lib/rack/banken/exceptions/not_acceptable.rb
137
+ - lib/rack/banken/exceptions/not_found.rb
138
+ - lib/rack/banken/exceptions/payment_required.rb
139
+ - lib/rack/banken/exceptions/precondition_failed.rb
140
+ - lib/rack/banken/exceptions/proxy_authentication_required.rb
141
+ - lib/rack/banken/exceptions/request_entity_too_large.rb
142
+ - lib/rack/banken/exceptions/request_timeout.rb
143
+ - lib/rack/banken/exceptions/request_uri_too_long.rb
144
+ - lib/rack/banken/exceptions/requested_range_not_satisfiable.rb
145
+ - lib/rack/banken/exceptions/unauthorized.rb
146
+ - lib/rack/banken/exceptions/unprocessable_entity.rb
147
+ - lib/rack/banken/exceptions/unsupported_media_type.rb
148
+ - lib/rack/banken/exceptions/upgrade_required.rb
113
149
  - lib/rack/banken/exceptions/validation_failed.rb
114
150
  - lib/rack/banken/version.rb
115
151
  - rack-banken.gemspec