repia 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,97 @@
1
+ require 'test_helper'
2
+
3
+ class TestsController < ApplicationController
4
+ end
5
+
6
+ class TestsControllerTest < ActionController::TestCase
7
+
8
+ setup do
9
+ Rails.application.routes.draw do
10
+ match "tests" => "tests#index", via: [:get]
11
+ match "tests/:id" => "tests#show", via: [:get]
12
+ match "tests(/:id)" => "tests#options", via: [:options]
13
+ end
14
+ @controller = TestsController.new
15
+ end
16
+
17
+ test "Predefined errors should be handled" do
18
+ class ::TestsController
19
+ undef :show if method_defined? :show
20
+ def show
21
+ raise Repia::Errors::STATUS_CODE_TO_ERROR[params[:id].to_i]
22
+ end
23
+ end
24
+ [400, 401, 404, 409, 500].each do |status_code|
25
+ get :show, params: { id: status_code }
26
+ assert_response status_code
27
+ end
28
+ end
29
+
30
+ test "options request is handled" do
31
+ get :options
32
+ assert_response :success
33
+ @request.headers["Access-Control-Request-Headers"] = "POST"
34
+ get :options
35
+ assert_response :success
36
+ assert_equal "POST", @response.headers["Access-Control-Allow-Headers"]
37
+ end
38
+
39
+ test "render multiple errors" do
40
+ class ::TestsController
41
+ undef :index if method_defined? :index
42
+ def index
43
+ self.render_errors(400, ["foo", "bar"])
44
+ end
45
+ end
46
+ get :index
47
+ assert_response 400
48
+ end
49
+
50
+ test "handle standard error" do
51
+ class ::TestsController
52
+ undef :index if method_defined? :index
53
+ def index
54
+ raise StandardError
55
+ end
56
+ end
57
+ get :index
58
+ assert_response 500
59
+ end
60
+
61
+ test "find_object will error if object does not exist" do
62
+ class ::TestsController
63
+ undef :show if method_defined? :show
64
+ def show
65
+ find_object UniqueModel, params[:id]
66
+ end
67
+ end
68
+ get :show, params: { id: "blah" }
69
+ assert_response 404
70
+ end
71
+
72
+ test "find_object will find object if exists" do
73
+ obj = UniqueModel.new()
74
+ obj.save()
75
+ class ::TestsController
76
+ undef :show if method_defined? :show
77
+ def show
78
+ find_object UniqueModel, params[:id]
79
+ render json: {}, status: 200
80
+ end
81
+ end
82
+ get :show, params: { id: obj.uuid }
83
+ assert_response 200
84
+ end
85
+
86
+ test "exceptions_app" do
87
+ class ::TestsController
88
+ undef :show if method_defined? :show
89
+ def show
90
+ @exception = ActionController::RoutingError.new("blah")
91
+ exceptions_app
92
+ end
93
+ end
94
+ get :show, params: { id: "blah" }
95
+ assert_response 404
96
+ end
97
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class RepiaTest < ActiveSupport::TestCase
4
+ test "HttpMethodNotAllowed middleware throws 405 for invalid HTTP method" do
5
+ app = lambda {|env| [200, {}, [""]]}
6
+ stack = Repia::HttpMethodNotAllowed.new(app)
7
+ request = Rack::MockRequest.new(stack)
8
+ response = request.request("DOESNOTEXIST", "/users")
9
+ assert response.headers["Content-Type"].include?("application/json")
10
+ assert_equal 405, response.status.to_i
11
+ end
12
+
13
+ test "HttpMethodNotAllowed middleware does not throw 405 for valid HTTP method" do
14
+ app = lambda {|env| [200, {}, [""]]}
15
+ stack = Repia::HttpMethodNotAllowed.new(app)
16
+ request = Rack::MockRequest.new(stack)
17
+ response = request.request("GET", "/users")
18
+ assert_equal 200, response.status.to_i
19
+ end
20
+ end
data/test/repia_test.rb CHANGED
@@ -1,71 +1,5 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class RepiaTest < ActiveSupport::TestCase
4
- test "UniqueModel gets assigned a UUID at creation" do
5
- obj = UniqueModel.new()
6
- obj.save()
7
- assert_not_nil obj.uuid
8
- end
9
4
 
10
- test "HttpMethodNotAllowed middleware throws 405 for invalid HTTP method" do
11
- app = lambda {|env| [200, {}, [""]]}
12
- stack = Repia::HttpMethodNotAllowed.new(app)
13
- request = Rack::MockRequest.new(stack)
14
- response = request.request("DOESNOTEXIST", "/users")
15
- assert response.headers["Content-Type"].include?("application/json")
16
- assert_equal 405, response.status.to_i
17
- end
18
-
19
- test "HttpMethodNotAllowed middleware does not throw 405 for valid HTTP method" do
20
- app = lambda {|env| [200, {}, [""]]}
21
- stack = Repia::HttpMethodNotAllowed.new(app)
22
- request = Rack::MockRequest.new(stack)
23
- response = request.request("GET", "/users")
24
- assert_equal 200, response.status.to_i
25
- end
26
- end
27
-
28
- class DummiesControllerTest < ActionController::TestCase
29
- test "Predefined errors should be handled" do
30
- [400, 401, 404, 409, 500].each do |status_code|
31
- get :show, id: status_code
32
- assert_response status_code
33
- end
34
- end
35
-
36
- test "options request is handled" do
37
- get :options
38
- assert_response :success
39
- @request.headers["Access-Control-Request-Headers"] = "POST"
40
- get :options
41
- assert_response :success
42
- assert_equal "POST", @response.headers["Access-Control-Allow-Headers"]
43
- end
44
-
45
- test "render multiple errors" do
46
- get :index
47
- assert_response 400
48
- end
49
-
50
- test "handle standard error" do
51
- post :create
52
- assert_response 500
53
- end
54
-
55
- test "find_object will error if object does not exist" do
56
- patch :update, id: "blah"
57
- assert_response 404
58
- end
59
-
60
- test "find_object will find object if exists" do
61
- obj = UniqueModel.new()
62
- obj.save()
63
- patch :update, id: obj.uuid
64
- assert_response 200
65
- end
66
-
67
- test "exceptions_app" do
68
- delete :destroy, id: "blah"
69
- assert_response 404
70
- end
71
5
  end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class RepiaUniqueModelTest < ActiveSupport::TestCase
4
+
5
+ test "UniqueModel gets assigned a UUID at creation" do
6
+ obj = UniqueModel.new()
7
+ obj.save()
8
+ assert_not_nil obj.uuid
9
+ end
10
+
11
+ end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David An
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-03 00:00:00.000000000 Z
11
+ date: 2016-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.6
19
+ version: 5.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.6
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: uuidtools
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.1.5
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.1.5
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: coveralls
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: It is a collection of basic features required to build RESTful API in
@@ -88,19 +88,24 @@ executables: []
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
- - lib/repia/core.rb
91
+ - LICENSE
92
+ - README.md
93
+ - Rakefile
94
+ - lib/repia.rb
95
+ - lib/repia/base_controller.rb
96
+ - lib/repia/base_helper.rb
92
97
  - lib/repia/errors.rb
93
98
  - lib/repia/middlewares.rb
99
+ - lib/repia/uuid_model.rb
94
100
  - lib/repia/version.rb
95
- - lib/repia.rb
96
101
  - lib/tasks/repia_tasks.rake
97
- - Rakefile
102
+ - test/dummy/README.rdoc
103
+ - test/dummy/Rakefile
98
104
  - test/dummy/app/assets/javascripts/application.js
99
105
  - test/dummy/app/assets/javascripts/dummies.js
100
106
  - test/dummy/app/assets/stylesheets/application.css
101
107
  - test/dummy/app/assets/stylesheets/dummies.css
102
108
  - test/dummy/app/controllers/application_controller.rb
103
- - test/dummy/app/controllers/dummies_controller.rb
104
109
  - test/dummy/app/helpers/application_helper.rb
105
110
  - test/dummy/app/helpers/dummies_helper.rb
106
111
  - test/dummy/app/models/unique_model.rb
@@ -109,6 +114,7 @@ files:
109
114
  - test/dummy/bin/rails
110
115
  - test/dummy/bin/rake
111
116
  - test/dummy/bin/setup
117
+ - test/dummy/config.ru
112
118
  - test/dummy/config/application.rb
113
119
  - test/dummy/config/boot.rb
114
120
  - test/dummy/config/database.yml
@@ -127,23 +133,22 @@ files:
127
133
  - test/dummy/config/locales/en.yml
128
134
  - test/dummy/config/routes.rb
129
135
  - test/dummy/config/secrets.yml
130
- - test/dummy/config.ru
131
136
  - test/dummy/db/development.sqlite3
132
137
  - test/dummy/db/migrate/20160423030023_create_unique_models.rb
133
138
  - test/dummy/db/schema.rb
134
139
  - test/dummy/db/test.sqlite3
135
- - test/dummy/log/development.log
136
140
  - test/dummy/log/test.log
137
141
  - test/dummy/public/404.html
138
142
  - test/dummy/public/422.html
139
143
  - test/dummy/public/500.html
140
144
  - test/dummy/public/favicon.ico
141
- - test/dummy/Rakefile
142
- - test/dummy/README.rdoc
143
145
  - test/dummy/test/controllers/dummies_controller_test.rb
144
146
  - test/dummy/test/fixtures/unique_models.yml
145
147
  - test/dummy/test/models/unique_model_test.rb
148
+ - test/repia_base_controller_test.rb
149
+ - test/repia_middlewares_test.rb
146
150
  - test/repia_test.rb
151
+ - test/repia_unique_model_test.rb
147
152
  - test/test_helper.rb
148
153
  homepage: https://github.com/davidan1981/repia
149
154
  licenses:
@@ -155,17 +160,17 @@ require_paths:
155
160
  - lib
156
161
  required_ruby_version: !ruby/object:Gem::Requirement
157
162
  requirements:
158
- - - '>='
163
+ - - ">="
159
164
  - !ruby/object:Gem::Version
160
165
  version: '0'
161
166
  required_rubygems_version: !ruby/object:Gem::Requirement
162
167
  requirements:
163
- - - '>='
168
+ - - ">="
164
169
  - !ruby/object:Gem::Version
165
170
  version: '0'
166
171
  requirements: []
167
172
  rubyforge_project:
168
- rubygems_version: 2.0.14
173
+ rubygems_version: 2.5.1
169
174
  signing_key:
170
175
  specification_version: 4
171
176
  summary: Rails Essential Plug-in for API
@@ -175,7 +180,6 @@ test_files:
175
180
  - test/dummy/app/assets/stylesheets/application.css
176
181
  - test/dummy/app/assets/stylesheets/dummies.css
177
182
  - test/dummy/app/controllers/application_controller.rb
178
- - test/dummy/app/controllers/dummies_controller.rb
179
183
  - test/dummy/app/helpers/application_helper.rb
180
184
  - test/dummy/app/helpers/dummies_helper.rb
181
185
  - test/dummy/app/models/unique_model.rb
@@ -207,7 +211,6 @@ test_files:
207
211
  - test/dummy/db/migrate/20160423030023_create_unique_models.rb
208
212
  - test/dummy/db/schema.rb
209
213
  - test/dummy/db/test.sqlite3
210
- - test/dummy/log/development.log
211
214
  - test/dummy/log/test.log
212
215
  - test/dummy/public/404.html
213
216
  - test/dummy/public/422.html
@@ -218,5 +221,8 @@ test_files:
218
221
  - test/dummy/test/controllers/dummies_controller_test.rb
219
222
  - test/dummy/test/fixtures/unique_models.yml
220
223
  - test/dummy/test/models/unique_model_test.rb
224
+ - test/repia_base_controller_test.rb
225
+ - test/repia_middlewares_test.rb
221
226
  - test/repia_test.rb
227
+ - test/repia_unique_model_test.rb
222
228
  - test/test_helper.rb
@@ -1,36 +0,0 @@
1
- class DummiesController < ApplicationController
2
-
3
- def index
4
- render_errors 400, ["one", "two"]
5
- end
6
-
7
- def create
8
- 1 + "b"
9
- end
10
-
11
- def update
12
- find_object(UniqueModel, params[:id])
13
- render json: "", status: 200
14
- end
15
-
16
- def show
17
- status_code = params[:id].to_i
18
- case status_code
19
- when 400
20
- raise Repia::Errors::BadRequest
21
- when 401
22
- raise Repia::Errors::Unauthorized
23
- when 404
24
- raise Repia::Errors::NotFound
25
- when 409
26
- raise Repia::Errors::Conflict
27
- when 500
28
- raise Repia::Errors::InternalServerError
29
- end
30
- end
31
-
32
- def destroy
33
- @exception = ActionController::RoutingError.new("blah")
34
- exceptions_app
35
- end
36
- end
@@ -1,2 +0,0 @@
1
- ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
2
- ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"