rails_twirp 0.13.1 → 0.13.2

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.
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