vite_rails 1.0.6 → 1.0.11
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/CONTRIBUTING.md +0 -1
- data/README.md +43 -70
- data/lib/install/config/vite.config.ts +1 -1
- data/lib/install/javascript/entrypoints/application.js +8 -4
- data/lib/install/template.rb +3 -3
- data/lib/tasks/vite/build.rake +12 -6
- data/lib/tasks/vite/clean.rake +1 -3
- data/lib/tasks/vite/install_dependencies.rake +3 -9
- data/lib/tasks/vite/verify_install.rake +3 -3
- data/lib/vite_rails.rb +23 -34
- data/lib/vite_rails/builder.rb +11 -13
- data/lib/vite_rails/commands.rb +51 -10
- data/lib/vite_rails/config.rb +65 -35
- data/lib/vite_rails/dev_server_proxy.rb +26 -18
- data/lib/vite_rails/helper.rb +17 -8
- data/lib/vite_rails/manifest.rb +14 -12
- data/lib/vite_rails/runner.rb +3 -6
- data/lib/vite_rails/version.rb +1 -1
- data/package.json +9 -2
- data/package/default.vite.json +2 -1
- data/test/builder_test.rb +27 -22
- data/test/commands_test.rb +67 -0
- data/test/config_test.rb +133 -0
- data/test/dev_server_proxy_test.rb +102 -0
- data/test/dev_server_test.rb +0 -30
- data/test/engine_rake_tasks_test.rb +56 -17
- data/test/helper_test.rb +37 -105
- data/test/manifest_test.rb +33 -29
- data/test/mode_test.rb +6 -11
- data/test/mounted_app/test/dummy/config/vite.json +5 -11
- data/test/mounted_app/test/dummy/package.json +5 -4
- data/test/mounted_app/test/dummy/yarn.lock +208 -0
- data/test/rake_tasks_test.rb +7 -21
- data/test/runner_test.rb +31 -0
- data/test/test_app/app/frontend/entrypoints/application.js +2 -0
- data/test/test_app/config/vite.json +0 -2
- data/test/test_app/config/vite_additional_paths.json +5 -0
- data/test/test_app/config/vite_public_dir.json +5 -0
- data/test/test_app/public/vite-production/manifest.json +22 -0
- data/test/test_helper.rb +48 -14
- metadata +23 -25
- data/test/command_test.rb +0 -35
- data/test/configuration_test.rb +0 -80
- data/test/dev_server_runner_test.rb +0 -83
- data/test/test_app/app/javascript/entrypoints/application.js +0 -10
- data/test/test_app/app/javascript/entrypoints/multi_entry.css +0 -4
- data/test/test_app/app/javascript/entrypoints/multi_entry.js +0 -4
- data/test/test_app/config/vite_public_root.yml +0 -20
- data/test/test_app/public/vite/manifest.json +0 -36
- data/test/vite_runner_test.rb +0 -59
- data/test/webpacker_test.rb +0 -15
data/lib/vite_rails/runner.rb
CHANGED
@@ -31,10 +31,9 @@ private
|
|
31
31
|
cmd = vite_executable
|
32
32
|
cmd.prepend('node', '--inspect-brk') if args.include?('--debug')
|
33
33
|
cmd.prepend('node', '--trace-deprecation') if args.delete('--trace-deprecation')
|
34
|
-
args.append('--mode',
|
34
|
+
args.append('--mode', ViteRails.mode) unless args.include?('--mode') || args.include?('-m')
|
35
35
|
cmd += args
|
36
|
-
|
37
|
-
Dir.chdir(File.expand_path('.', Dir.pwd)) { Kernel.exec(ViteRails.env, *cmd) }
|
36
|
+
Dir.chdir(File.expand_path('.', Dir.pwd)) { Kernel.exec(ViteRails.config.to_env, *cmd) }
|
38
37
|
end
|
39
38
|
|
40
39
|
# Internal: Resolves to an executable for Vite.
|
@@ -49,8 +48,6 @@ private
|
|
49
48
|
|
50
49
|
# Internal: Returns a path where a Vite executable should be found.
|
51
50
|
def vite_bin_path
|
52
|
-
ENV["#{ ViteRails::ENV_PREFIX }_VITE_BIN_PATH"] || `yarn bin vite`.chomp
|
53
|
-
rescue StandardError
|
54
|
-
"#{ `npm bin`.chomp }/vite"
|
51
|
+
ENV["#{ ViteRails::ENV_PREFIX }_VITE_BIN_PATH"] || `yarn bin vite`.chomp.presence || "#{ `npm bin`.chomp }/vite"
|
55
52
|
end
|
56
53
|
end
|
data/lib/vite_rails/version.rb
CHANGED
data/package.json
CHANGED
@@ -1,12 +1,19 @@
|
|
1
1
|
{
|
2
2
|
"name": "only-for-workflows",
|
3
3
|
"version": "unknown",
|
4
|
+
"license": "MIT",
|
4
5
|
"scripts": {
|
6
|
+
"docs": "npm -C docs run docs",
|
7
|
+
"docs:build": "npm -C docs run docs:build",
|
8
|
+
"docs:search": "npm -C docs run docs:search",
|
9
|
+
"docs:lint": "npm -C docs run lint",
|
10
|
+
"build": "rm -rf package/dist && npm -C package run prerelease",
|
11
|
+
"release": "rm -rf package/dist && npm -C package run release",
|
5
12
|
"lint": "npm -C package run lint",
|
6
13
|
"test": "npm -C package run test"
|
7
14
|
},
|
8
15
|
"dependencies": {
|
9
|
-
"vite": "^2.0.0-beta.
|
10
|
-
"vite-plugin-ruby": "^1.0.
|
16
|
+
"vite": "^2.0.0-beta.46",
|
17
|
+
"vite-plugin-ruby": "^1.0.5"
|
11
18
|
}
|
12
19
|
}
|
data/package/default.vite.json
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
{
|
2
|
+
"assetHost": null,
|
2
3
|
"assetsDir": "assets",
|
3
4
|
"autoBuild": false,
|
4
5
|
"buildCacheDir": "tmp/cache/vite",
|
@@ -6,7 +7,7 @@
|
|
6
7
|
"configPath": "config/vite.json",
|
7
8
|
"publicDir": "public",
|
8
9
|
"entrypointsDir": "entrypoints",
|
9
|
-
"sourceCodeDir": "app/
|
10
|
+
"sourceCodeDir": "app/frontend",
|
10
11
|
"host": "localhost",
|
11
12
|
"https": null,
|
12
13
|
"port": 3036,
|
data/test/builder_test.rb
CHANGED
@@ -2,27 +2,26 @@
|
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
class BuilderTest <
|
6
|
-
def
|
5
|
+
class BuilderTest < ViteRails::Test
|
6
|
+
def setup
|
7
|
+
refresh_config
|
7
8
|
ViteRails.builder.send(:files_digest_path).tap do |path|
|
8
9
|
path.delete if path.exist?
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
12
|
-
def
|
13
|
-
|
13
|
+
def teardown
|
14
|
+
setup
|
14
15
|
end
|
15
16
|
|
16
|
-
def
|
17
|
-
|
17
|
+
def vite_env
|
18
|
+
ViteRails.config.to_env
|
18
19
|
end
|
19
20
|
|
20
21
|
def test_custom_environment_variables
|
21
|
-
assert_nil
|
22
|
+
assert_nil vite_env['FOO']
|
22
23
|
ViteRails.env['FOO'] = 'BAR'
|
23
|
-
assert
|
24
|
-
ensure
|
25
|
-
ViteRails.env = {}
|
24
|
+
assert vite_env['FOO'] == 'BAR'
|
26
25
|
end
|
27
26
|
|
28
27
|
def test_freshness
|
@@ -35,21 +34,19 @@ class BuilderTest < Minitest::Test
|
|
35
34
|
end
|
36
35
|
|
37
36
|
def test_freshness_on_build_success
|
38
|
-
status = OpenStruct.new(success?: true)
|
39
|
-
|
40
37
|
assert ViteRails.builder.stale?
|
38
|
+
status = OpenStruct.new(success?: true)
|
41
39
|
Open3.stub :capture3, [:sterr, :stdout, status] do
|
42
|
-
ViteRails.builder.build
|
40
|
+
assert ViteRails.builder.build
|
43
41
|
assert ViteRails.builder.fresh?
|
44
42
|
end
|
45
43
|
end
|
46
44
|
|
47
45
|
def test_freshness_on_build_fail
|
48
|
-
status = OpenStruct.new(success?: false)
|
49
|
-
|
50
46
|
assert ViteRails.builder.stale?
|
47
|
+
status = OpenStruct.new(success?: false)
|
51
48
|
Open3.stub :capture3, [:sterr, :stdout, status] do
|
52
|
-
ViteRails.builder.build
|
49
|
+
assert !ViteRails.builder.build
|
53
50
|
assert ViteRails.builder.fresh?
|
54
51
|
end
|
55
52
|
end
|
@@ -58,15 +55,23 @@ class BuilderTest < Minitest::Test
|
|
58
55
|
assert_equal ViteRails.builder.send(:files_digest_path).basename.to_s, "last-compilation-digest-#{ ViteRails.config.mode }"
|
59
56
|
end
|
60
57
|
|
58
|
+
def test_watched_files_digest
|
59
|
+
previous_digest = ViteRails.builder.send(:watched_files_digest)
|
60
|
+
refresh_config
|
61
|
+
assert_equal previous_digest, ViteRails.builder.send(:watched_files_digest)
|
62
|
+
end
|
63
|
+
|
61
64
|
def test_external_env_variables
|
62
|
-
|
63
|
-
assert_equal
|
64
|
-
assert_equal ViteRails.builder.send(:vite_env)['VITE_RUBY_ROOT'], Rails.root.to_s
|
65
|
+
assert_equal 'production', vite_env['VITE_RUBY_MODE']
|
66
|
+
assert_equal Rails.root.to_s, vite_env['VITE_RUBY_ROOT']
|
65
67
|
|
66
68
|
ENV['VITE_RUBY_MODE'] = 'foo.bar'
|
67
69
|
ENV['VITE_RUBY_ROOT'] = '/baz'
|
68
|
-
|
69
|
-
assert_equal
|
70
|
-
assert_equal
|
70
|
+
refresh_config
|
71
|
+
assert_equal 'foo.bar', vite_env['VITE_RUBY_MODE']
|
72
|
+
assert_equal '/baz', vite_env['VITE_RUBY_ROOT']
|
73
|
+
ensure
|
74
|
+
ENV.delete('VITE_RUBY_MODE')
|
75
|
+
ENV.delete('VITE_RUBY_ROOT')
|
71
76
|
end
|
72
77
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class CommandsTest < ViteRails::Test
|
6
|
+
def stub_builder(stale:, build_with_vite:)
|
7
|
+
ViteRails.builder.stub :stale?, stale do
|
8
|
+
ViteRails.builder.stub :build_with_vite, build_with_vite do
|
9
|
+
yield
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_bootstrap
|
15
|
+
assert ViteRails.bootstrap
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_build_returns_success_status_when_stale
|
19
|
+
stub_builder(stale: true, build_with_vite: true) {
|
20
|
+
assert_equal true, ViteRails.build
|
21
|
+
assert_equal true, ViteRails.build_from_rake
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_build_returns_success_status_when_fresh
|
26
|
+
stub_builder(stale: false, build_with_vite: true) {
|
27
|
+
assert_equal true, ViteRails.build
|
28
|
+
assert_equal true, ViteRails.build_from_rake
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_build_returns_failure_status_when_stale
|
33
|
+
stub_builder(stale: true, build_with_vite: false) {
|
34
|
+
assert_equal false, ViteRails.build
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_clean
|
39
|
+
with_rails_env('test') { |config|
|
40
|
+
manifest = config.build_output_dir.join('manifest.json')
|
41
|
+
|
42
|
+
# Should not clean, the manifest does not exist.
|
43
|
+
config.build_output_dir.mkdir unless config.build_output_dir.exist?
|
44
|
+
refute ViteRails.clean
|
45
|
+
|
46
|
+
# Should not clean, the file is recent.
|
47
|
+
manifest.write('{}')
|
48
|
+
assert ViteRails.clean_from_rake(OpenStruct.new)
|
49
|
+
assert manifest.exist?
|
50
|
+
|
51
|
+
# Should clean if we remove age restrictions.
|
52
|
+
assert ViteRails.clean(keep_up_to: 0, age_in_seconds: 0)
|
53
|
+
assert config.build_output_dir.exist?
|
54
|
+
refute manifest.exist?
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_clobber
|
59
|
+
with_rails_env('test') { |config|
|
60
|
+
config.build_output_dir.mkdir unless config.build_output_dir.exist?
|
61
|
+
config.build_output_dir.join('manifest.json').write('{}')
|
62
|
+
assert config.build_output_dir.exist?
|
63
|
+
ViteRails.clobber
|
64
|
+
refute config.build_output_dir.exist?
|
65
|
+
}
|
66
|
+
end
|
67
|
+
end
|
data/test/config_test.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class ConfigTest < ViteRails::Test
|
6
|
+
def expand_path(path)
|
7
|
+
File.expand_path(Pathname.new(__dir__).join(path).to_s)
|
8
|
+
end
|
9
|
+
|
10
|
+
def assert_path(expected, actual)
|
11
|
+
assert_equal expand_path(expected), actual.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def assert_pathname(expected, actual)
|
15
|
+
assert_equal Pathname.new(expand_path("test_app/#{ expected }")), actual
|
16
|
+
end
|
17
|
+
|
18
|
+
def resolve_config(mode: 'production', root: test_app_path, **attrs)
|
19
|
+
ViteRails::Config.resolve_config(mode: mode, root: root, **attrs)
|
20
|
+
end
|
21
|
+
|
22
|
+
def setup
|
23
|
+
@config = resolve_config
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_source_code_dir
|
27
|
+
assert_equal 'app/frontend', @config.source_code_dir
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_entrypoints_dir
|
31
|
+
assert_path 'test_app/app/frontend/entrypoints', @config.resolved_entrypoints_dir
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_public_dir
|
35
|
+
assert_equal 'public', @config.public_dir
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_build_output_dir
|
39
|
+
assert_path 'test_app/public/vite-production', @config.build_output_dir
|
40
|
+
|
41
|
+
@config = resolve_config(config_path: 'config/vite_public_dir.json')
|
42
|
+
assert_path 'public/vite', @config.build_output_dir
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_manifest_path
|
46
|
+
assert_path 'test_app/public/vite-production/manifest.json', @config.manifest_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_build_cache_dir
|
50
|
+
assert_path 'test_app/tmp/cache/vite', @config.build_cache_dir
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_watch_additional_paths
|
54
|
+
assert_equal [], @config.watch_additional_paths
|
55
|
+
@config = resolve_config(config_path: 'config/vite_additional_paths.json')
|
56
|
+
assert_equal ['config/*'], @config.watch_additional_paths
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_auto_build
|
60
|
+
refute @config.auto_build
|
61
|
+
|
62
|
+
with_rails_env('development') do |config|
|
63
|
+
assert config.auto_build
|
64
|
+
end
|
65
|
+
|
66
|
+
with_rails_env('test') do |config|
|
67
|
+
assert config.auto_build
|
68
|
+
end
|
69
|
+
|
70
|
+
with_rails_env('staging') do |config|
|
71
|
+
refute config.auto_build
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_protocol
|
76
|
+
assert_equal 'http', @config.protocol
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_host_with_port
|
80
|
+
assert_equal 3036, @config.port
|
81
|
+
|
82
|
+
with_rails_env('development') do |config|
|
83
|
+
assert_equal 3535, config.port
|
84
|
+
assert_equal 'localhost:3535', config.host_with_port
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_to_env
|
89
|
+
env = @config.to_env
|
90
|
+
assert_nil env['VITE_RUBY_ASSET_HOST']
|
91
|
+
|
92
|
+
Rails.application.config.action_controller.asset_host = 'assets-cdn.com'
|
93
|
+
env = refresh_config.to_env
|
94
|
+
assert_equal env['VITE_RUBY_ASSET_HOST'], 'assets-cdn.com'
|
95
|
+
ensure
|
96
|
+
Rails.application.config.action_controller.asset_host = nil
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_environment_vars
|
100
|
+
ViteRails.env = {
|
101
|
+
'VITE_RUBY_AUTO_BUILD' => 'true',
|
102
|
+
'VITE_RUBY_HOST' => 'example.com',
|
103
|
+
'VITE_RUBY_PORT' => '1920',
|
104
|
+
'VITE_RUBY_HTTPS' => 'true',
|
105
|
+
'VITE_RUBY_CONFIG_PATH' => 'config/vite_additional_paths.json',
|
106
|
+
'VITE_RUBY_BUILD_CACHE_DIR' => 'tmp/vitebuild',
|
107
|
+
'VITE_RUBY_PUBLIC_DIR' => 'pb',
|
108
|
+
'VITE_RUBY_PUBLIC_OUTPUT_DIR' => 'ft',
|
109
|
+
'VITE_RUBY_ASSETS_DIR' => 'as',
|
110
|
+
'VITE_RUBY_SOURCE_CODE_DIR' => 'app',
|
111
|
+
'VITE_RUBY_ENTRYPOINTS_DIR' => 'frontend/entrypoints',
|
112
|
+
'VITE_RUBY_HIDE_BUILD_CONSOLE_OUTPUT' => 'true',
|
113
|
+
}
|
114
|
+
@config = resolve_config
|
115
|
+
assert_equal true, @config.auto_build
|
116
|
+
assert_equal 'example.com', @config.host
|
117
|
+
assert_equal 1920, @config.port
|
118
|
+
assert_equal true, @config.https
|
119
|
+
assert_equal 'https', @config.protocol
|
120
|
+
assert_equal 'config/vite_additional_paths.json', @config.config_path
|
121
|
+
assert_pathname 'tmp/vitebuild', @config.build_cache_dir
|
122
|
+
assert_equal 'pb', @config.public_dir
|
123
|
+
assert_equal 'ft', @config.public_output_dir
|
124
|
+
assert_pathname 'pb/ft', @config.build_output_dir
|
125
|
+
assert_equal 'as', @config.assets_dir
|
126
|
+
assert_equal 'app', @config.source_code_dir
|
127
|
+
assert_equal 'frontend/entrypoints', @config.entrypoints_dir
|
128
|
+
assert_pathname 'app/frontend/entrypoints', @config.resolved_entrypoints_dir
|
129
|
+
assert_equal true, @config.hide_build_console_output
|
130
|
+
ensure
|
131
|
+
ViteRails.env = {}
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class DevServerProxyTest < ViteRails::Test
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
def app
|
9
|
+
# Capture all changes to the env made by the proxy.
|
10
|
+
capture_app = Rack::Builder.new.run(->(env) {
|
11
|
+
[200, { 'Content-Type' => 'application/json' }, env.to_json]
|
12
|
+
})
|
13
|
+
# Avoid actually using the proxy.
|
14
|
+
Rack::Proxy.remove_method(:perform_request)
|
15
|
+
Rack::Proxy.define_method(:perform_request) { |env| capture_app.call(env) }
|
16
|
+
|
17
|
+
ViteRails::DevServerProxy.new(capture_app)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_non_asset
|
21
|
+
get_with_dev_server_running '/'
|
22
|
+
assert_not_forwarded
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_non_vite_asset
|
26
|
+
get_with_dev_server_running '/example_import.js'
|
27
|
+
assert_not_forwarded
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_vite_asset
|
31
|
+
get_with_dev_server_running '/vite-production/application.js'
|
32
|
+
assert_forwarded to: '/application.js'
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_vite_client
|
36
|
+
get_with_dev_server_running '/@vite/client'
|
37
|
+
assert_forwarded to: '/@vite/client'
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_vite_import
|
41
|
+
get_with_dev_server_running '/@fs//package/example/app/frontend/App.vue?import&t=1611322300214&vue&type=style&index=0&lang.css'
|
42
|
+
assert_forwarded to: '/@fs//package/example/app/frontend/App.vue?import&t=1611322300214&vue&type=style&index=0&lang.css'
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_hmr_for_stylesheet
|
46
|
+
get_with_dev_server_running '/colored.css?t=1611322562923'
|
47
|
+
assert_forwarded to: '/colored.css?t=1611322562923'
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_hmr_for_imported_entrypoint
|
51
|
+
get_with_dev_server_running '/colored.css?import&t=1611322562923'
|
52
|
+
assert_forwarded to: '/colored.css?import&t=1611322562923'
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_entrypoint_imported_from_entrypoint
|
56
|
+
header 'Referer', 'http://localhost:3000/vite-production/application.js'
|
57
|
+
get_with_dev_server_running '/example_import.js'
|
58
|
+
assert_forwarded to: '/example_import.js'
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_without_dev_server_running
|
62
|
+
get '/vite-production/application.js'
|
63
|
+
assert_not_forwarded
|
64
|
+
|
65
|
+
get '/colored.css?import&t=1611322562923'
|
66
|
+
assert_not_forwarded
|
67
|
+
|
68
|
+
header 'Referer', 'http://localhost:3000/vite-production/application.js'
|
69
|
+
get '/example_import.js'
|
70
|
+
assert_not_forwarded
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def get_with_dev_server_running(*args)
|
76
|
+
with_dev_server_running {
|
77
|
+
get(*args)
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
def assert_not_forwarded
|
82
|
+
assert last_response.ok?
|
83
|
+
env = JSON.parse(last_response.body)
|
84
|
+
assert_nil env['HTTP_X_FORWARDED_HOST']
|
85
|
+
assert_nil env['HTTP_X_FORWARDED_PORT']
|
86
|
+
end
|
87
|
+
|
88
|
+
def assert_forwarded(to: nil)
|
89
|
+
assert last_response.ok?
|
90
|
+
env = JSON.parse(last_response.body)
|
91
|
+
|
92
|
+
assert_equal ViteRails.config.host, env['HTTP_X_FORWARDED_HOST']
|
93
|
+
assert_equal ViteRails.config.port, Integer(env['HTTP_X_FORWARDED_PORT'])
|
94
|
+
|
95
|
+
return unless to
|
96
|
+
|
97
|
+
path, query = to.split('?')
|
98
|
+
assert_equal path, env['PATH_INFO']
|
99
|
+
assert_equal query, env['QUERY_STRING']
|
100
|
+
assert_equal to, env['REQUEST_URI']
|
101
|
+
end
|
102
|
+
end
|