rails_twirp 0.13.1 → 0.13.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +21 -0
  3. data/CHANGELOG.md +3 -0
  4. data/bin/test +5 -0
  5. data/lib/rails_twirp/testing/integration_test.rb +106 -0
  6. data/lib/rails_twirp/version.rb +1 -1
  7. data/rails_twirp.gemspec +1 -1
  8. data/test/dummy/Rakefile +6 -0
  9. data/test/dummy/app/assets/config/manifest.js +2 -0
  10. data/test/dummy/app/assets/images/.keep +0 -0
  11. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  12. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  13. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  14. data/test/dummy/app/controllers/application_controller.rb +2 -0
  15. data/test/dummy/app/controllers/application_twirp_controller.rb +7 -0
  16. data/test/dummy/app/controllers/concerns/.keep +0 -0
  17. data/test/dummy/app/controllers/dummy_controller.rb +5 -0
  18. data/test/dummy/app/controllers/pings_controller.rb +40 -0
  19. data/test/dummy/app/controllers/testmod/nested/other_controller.rb +10 -0
  20. data/test/dummy/app/helpers/application_helper.rb +2 -0
  21. data/test/dummy/app/helpers/random_helper.rb +5 -0
  22. data/test/dummy/app/javascript/packs/application.js +15 -0
  23. data/test/dummy/app/jobs/application_job.rb +7 -0
  24. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  25. data/test/dummy/app/models/application_record.rb +3 -0
  26. data/test/dummy/app/models/concerns/.keep +0 -0
  27. data/test/dummy/app/views/dummy/rpc_name_check.pb.pbbuilder +3 -0
  28. data/test/dummy/app/views/layouts/application.html.erb +15 -0
  29. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  30. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  31. data/test/dummy/app/views/pings/ping_template.pb.pbbuilder +1 -0
  32. data/test/dummy/bin/generate +3 -0
  33. data/test/dummy/bin/rails +4 -0
  34. data/test/dummy/bin/rake +4 -0
  35. data/test/dummy/bin/setup +33 -0
  36. data/test/dummy/config/application.rb +23 -0
  37. data/test/dummy/config/boot.rb +5 -0
  38. data/test/dummy/config/cable.yml +10 -0
  39. data/test/dummy/config/database.yml +25 -0
  40. data/test/dummy/config/environment.rb +5 -0
  41. data/test/dummy/config/environments/development.rb +76 -0
  42. data/test/dummy/config/environments/production.rb +120 -0
  43. data/test/dummy/config/environments/test.rb +59 -0
  44. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  45. data/test/dummy/config/initializers/backtrace_silencers.rb +8 -0
  46. data/test/dummy/config/initializers/content_security_policy.rb +28 -0
  47. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  48. data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  49. data/test/dummy/config/initializers/inflections.rb +16 -0
  50. data/test/dummy/config/initializers/mime_types.rb +4 -0
  51. data/test/dummy/config/initializers/permissions_policy.rb +11 -0
  52. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  53. data/test/dummy/config/locales/en.yml +33 -0
  54. data/test/dummy/config/puma.rb +43 -0
  55. data/test/dummy/config/routes.rb +3 -0
  56. data/test/dummy/config/storage.yml +34 -0
  57. data/test/dummy/config/twirp/routes.rb +22 -0
  58. data/test/dummy/config.ru +6 -0
  59. data/test/dummy/lib/assets/.keep +0 -0
  60. data/test/dummy/log/.keep +0 -0
  61. data/test/dummy/proto/api.proto +30 -0
  62. data/test/dummy/proto/api_pb.rb +29 -0
  63. data/test/dummy/proto/api_twirp.rb +25 -0
  64. data/test/dummy/public/404.html +67 -0
  65. data/test/dummy/public/422.html +67 -0
  66. data/test/dummy/public/500.html +66 -0
  67. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  68. data/test/dummy/public/apple-touch-icon.png +0 -0
  69. data/test/dummy/public/favicon.ico +0 -0
  70. data/test/dummy_test.rb +10 -0
  71. data/test/other_controller_test.rb +9 -0
  72. data/test/ping_controller_test.rb +114 -0
  73. data/test/rails_twirp_test.rb +7 -0
  74. data/test/test_helper.rb +16 -0
  75. metadata +71 -1
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ require "test_helper"
2
+
3
+ class DummyControllerTest < RailsTwirp::IntegrationTest
4
+ test "controller gets rpc name" do
5
+ req = RPC::DummyAPI::RpcNameCheckRequest.new
6
+ rpc RPC::DummyAPI::DummyService, "RpcNameCheck", req
7
+ assert_instance_of RPC::DummyAPI::RpcNameCheckResponse, response
8
+ assert_equal "RpcNameCheck", response.rpc_name
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ require "test_helper"
2
+
3
+ class OtherControllerTest < RailsTwirp::IntegrationTest
4
+ test "modules work" do
5
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
6
+ rpc RPC::DummyAPI::DummyService, "Nested", req
7
+ assert_equal "BoukeBouke", response.double_name
8
+ end
9
+ end
@@ -0,0 +1,114 @@
1
+ require "test_helper"
2
+
3
+ class PingControllerTest < RailsTwirp::IntegrationTest
4
+ test "you can ping it" do
5
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
6
+ rpc RPC::DummyAPI::DummyService, "Ping", req
7
+ assert_equal "BoukeBouke", response.double_name
8
+ end
9
+
10
+ test "you can ping render" do
11
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
12
+ rpc RPC::DummyAPI::DummyService, "PingRender", req
13
+ refute_instance_of Twirp::Error, response
14
+ assert_equal "http://www.example.com/twirp BoukeBouke", response.double_name
15
+ end
16
+
17
+ test "you can ping render with host and https" do
18
+ host! "localhost"
19
+ https!
20
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
21
+ rpc RPC::DummyAPI::DummyService, "PingRender", req
22
+ refute_instance_of Twirp::Error, response
23
+ assert_equal "https://localhost/twirp BoukeBouke", response.double_name
24
+ end
25
+
26
+ test "you can ping template" do
27
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
28
+ rpc RPC::DummyAPI::DummyService, "PingTemplate", req
29
+ refute_instance_of Twirp::Error, response
30
+ assert_equal "BoukeBouke", response.double_name
31
+ end
32
+
33
+ test "error response" do
34
+ req = RPC::DummyAPI::PingRequest.new
35
+ rpc RPC::DummyAPI::DummyService, "ErrorResponse", req
36
+ assert_instance_of Twirp::Error, response
37
+ assert_equal "You are not authenticated!!", response.msg
38
+ assert_equal :unauthenticated, response.code
39
+ end
40
+
41
+ test "raise error" do
42
+ req = RPC::DummyAPI::PingRequest.new
43
+ rpc RPC::DummyAPI::DummyService, "RaiseError", req
44
+ assert_instance_of Twirp::Error, response
45
+ assert_equal "Not found", response.msg
46
+ assert_equal :not_found, response.code
47
+ end
48
+
49
+ test "uncaught errors should bubble up to the test" do
50
+ req = RPC::DummyAPI::PingRequest.new
51
+ assert_raises StandardError, "Uncaught" do
52
+ rpc RPC::DummyAPI::DummyService, "UncaughtError", req
53
+ end
54
+ end
55
+
56
+ test "uncaught errors should return an internal error with details if show_exceptions is true" do
57
+ Rails.application.env_config["action_dispatch.show_exceptions"] = true
58
+
59
+ req = RPC::DummyAPI::PingRequest.new
60
+ rpc RPC::DummyAPI::DummyService, "UncaughtError", req
61
+ assert_instance_of Twirp::Error, response
62
+ assert_equal :internal, response.code
63
+ assert_equal "Uncaught", response.msg
64
+ assert_equal "StandardError", response.meta["cause"]
65
+ ensure
66
+ Rails.application.env_config["action_dispatch.show_exceptions"] = false
67
+ end
68
+
69
+ test "uncaught errors should be fanned out to the exception handler proc if one is defined" do
70
+ Rails.application.env_config["action_dispatch.show_exceptions"] = true
71
+
72
+ captured_exception = nil
73
+ RailsTwirp.unhandled_exception_handler = ->(e) { captured_exception = e }
74
+
75
+ req = RPC::DummyAPI::PingRequest.new
76
+ rpc RPC::DummyAPI::DummyService, "UncaughtError", req
77
+ assert_instance_of Twirp::Error, response
78
+ assert_equal :internal, response.code
79
+ assert_equal "Uncaught", response.msg
80
+ assert_equal "StandardError", response.meta["cause"]
81
+ assert_kind_of StandardError, captured_exception
82
+ ensure
83
+ RailsTwirp.unhandled_exception_handler = nil
84
+ Rails.application.env_config["action_dispatch.show_exceptions"] = false
85
+ end
86
+
87
+ test "uncaught errors should return an internal error without if show_exceptions is true and show_detailed_exceptions is false" do
88
+ Rails.application.env_config["action_dispatch.show_exceptions"] = true
89
+ Rails.application.env_config["action_dispatch.show_detailed_exceptions"] = false
90
+
91
+ req = RPC::DummyAPI::PingRequest.new
92
+ rpc RPC::DummyAPI::DummyService, "UncaughtError", req
93
+ assert_instance_of Twirp::Error, response
94
+ assert_equal :internal, response.code
95
+ assert_equal "Internal error", response.msg
96
+ ensure
97
+ Rails.application.env_config["action_dispatch.show_detailed_exceptions"] = true
98
+ Rails.application.env_config["action_dispatch.show_exceptions"] = false
99
+ end
100
+
101
+ test "before error" do
102
+ req = RPC::DummyAPI::PingRequest.new
103
+ rpc RPC::DummyAPI::DummyService, "BeforeError", req
104
+ assert_instance_of Twirp::Error, response
105
+ assert_equal "yOuR ReQuEsT Is mAlFoRmEd", response.msg
106
+ assert_equal :malformed, response.code
107
+ end
108
+
109
+ test "controller is set to the controller that handled the request" do
110
+ req = RPC::DummyAPI::PingRequest.new(name: "Bouke")
111
+ rpc RPC::DummyAPI::DummyService, "Ping", req
112
+ assert_instance_of PingsController, controller
113
+ end
114
+ end
@@ -0,0 +1,7 @@
1
+ require "test_helper"
2
+
3
+ class RailsTwirpTest < ActiveSupport::TestCase
4
+ test "it has a version number" do
5
+ assert RailsTwirp::VERSION
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require_relative "../test/dummy/config/environment"
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)]
6
+ require "rails/test_help"
7
+ require "rails/test_unit/reporter"
8
+ Rails::TestUnitReporter.executable = "bin/test"
9
+
10
+ # Load fixtures from the engine
11
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
12
+ ActiveSupport::TestCase.fixture_path = File.expand_path("fixtures", __dir__)
13
+ ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
14
+ ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
15
+ ActiveSupport::TestCase.fixtures :all
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_twirp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bouke van der Bijl
@@ -52,6 +52,7 @@ extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
54
  - ".github/dependabot.yml"
55
+ - ".github/workflows/test.yml"
55
56
  - ".gitignore"
56
57
  - ".ruby-version"
57
58
  - ".standard.yml"
@@ -60,6 +61,7 @@ files:
60
61
  - MIT-LICENSE
61
62
  - README.md
62
63
  - Rakefile
64
+ - bin/test
63
65
  - lib/commands/twirp/routes_command.rb
64
66
  - lib/rails_twirp.rb
65
67
  - lib/rails_twirp/application.rb
@@ -75,9 +77,77 @@ files:
75
77
  - lib/rails_twirp/render_pb.rb
76
78
  - lib/rails_twirp/rescue.rb
77
79
  - lib/rails_twirp/route_set.rb
80
+ - lib/rails_twirp/testing/integration_test.rb
78
81
  - lib/rails_twirp/url_for.rb
79
82
  - lib/rails_twirp/version.rb
80
83
  - rails_twirp.gemspec
84
+ - test/dummy/Rakefile
85
+ - test/dummy/app/assets/config/manifest.js
86
+ - test/dummy/app/assets/images/.keep
87
+ - test/dummy/app/assets/stylesheets/application.css
88
+ - test/dummy/app/channels/application_cable/channel.rb
89
+ - test/dummy/app/channels/application_cable/connection.rb
90
+ - test/dummy/app/controllers/application_controller.rb
91
+ - test/dummy/app/controllers/application_twirp_controller.rb
92
+ - test/dummy/app/controllers/concerns/.keep
93
+ - test/dummy/app/controllers/dummy_controller.rb
94
+ - test/dummy/app/controllers/pings_controller.rb
95
+ - test/dummy/app/controllers/testmod/nested/other_controller.rb
96
+ - test/dummy/app/helpers/application_helper.rb
97
+ - test/dummy/app/helpers/random_helper.rb
98
+ - test/dummy/app/javascript/packs/application.js
99
+ - test/dummy/app/jobs/application_job.rb
100
+ - test/dummy/app/mailers/application_mailer.rb
101
+ - test/dummy/app/models/application_record.rb
102
+ - test/dummy/app/models/concerns/.keep
103
+ - test/dummy/app/views/dummy/rpc_name_check.pb.pbbuilder
104
+ - test/dummy/app/views/layouts/application.html.erb
105
+ - test/dummy/app/views/layouts/mailer.html.erb
106
+ - test/dummy/app/views/layouts/mailer.text.erb
107
+ - test/dummy/app/views/pings/ping_template.pb.pbbuilder
108
+ - test/dummy/bin/generate
109
+ - test/dummy/bin/rails
110
+ - test/dummy/bin/rake
111
+ - test/dummy/bin/setup
112
+ - test/dummy/config.ru
113
+ - test/dummy/config/application.rb
114
+ - test/dummy/config/boot.rb
115
+ - test/dummy/config/cable.yml
116
+ - test/dummy/config/database.yml
117
+ - test/dummy/config/environment.rb
118
+ - test/dummy/config/environments/development.rb
119
+ - test/dummy/config/environments/production.rb
120
+ - test/dummy/config/environments/test.rb
121
+ - test/dummy/config/initializers/application_controller_renderer.rb
122
+ - test/dummy/config/initializers/backtrace_silencers.rb
123
+ - test/dummy/config/initializers/content_security_policy.rb
124
+ - test/dummy/config/initializers/cookies_serializer.rb
125
+ - test/dummy/config/initializers/filter_parameter_logging.rb
126
+ - test/dummy/config/initializers/inflections.rb
127
+ - test/dummy/config/initializers/mime_types.rb
128
+ - test/dummy/config/initializers/permissions_policy.rb
129
+ - test/dummy/config/initializers/wrap_parameters.rb
130
+ - test/dummy/config/locales/en.yml
131
+ - test/dummy/config/puma.rb
132
+ - test/dummy/config/routes.rb
133
+ - test/dummy/config/storage.yml
134
+ - test/dummy/config/twirp/routes.rb
135
+ - test/dummy/lib/assets/.keep
136
+ - test/dummy/log/.keep
137
+ - test/dummy/proto/api.proto
138
+ - test/dummy/proto/api_pb.rb
139
+ - test/dummy/proto/api_twirp.rb
140
+ - test/dummy/public/404.html
141
+ - test/dummy/public/422.html
142
+ - test/dummy/public/500.html
143
+ - test/dummy/public/apple-touch-icon-precomposed.png
144
+ - test/dummy/public/apple-touch-icon.png
145
+ - test/dummy/public/favicon.ico
146
+ - test/dummy_test.rb
147
+ - test/other_controller_test.rb
148
+ - test/ping_controller_test.rb
149
+ - test/rails_twirp_test.rb
150
+ - test/test_helper.rb
81
151
  homepage: https://github.com/cheddar-me/rails-twirp
82
152
  licenses:
83
153
  - MIT