提交 b362ce6d 编写于 作者: K Kasper Timm Hansen 提交者: GitHub

Merge pull request #29721 from y-yagi/fix_29696

Treat secrets as binary
......@@ -101,11 +101,11 @@ def preprocess(path)
def writing(contents)
tmp_path = File.join(Dir.tmpdir, File.basename(path))
File.write(tmp_path, contents)
IO.binwrite(tmp_path, contents)
yield tmp_path
updated_contents = File.read(tmp_path)
updated_contents = IO.binread(tmp_path)
write(updated_contents) if updated_contents != contents
ensure
......
......@@ -129,6 +129,40 @@ def teardown
end
end
test "can read secrets written in binary" do
run_secrets_generator do
secrets = <<-end_of_secrets
production:
api_key: 00112233445566778899aabbccddeeff…
end_of_secrets
Rails::Secrets.write(secrets.force_encoding(Encoding::ASCII_8BIT))
Rails::Secrets.read_for_editing do |tmp_path|
assert_match(/production:\n\s*api_key: 00112233445566778899aabbccddeeff…\n/, File.read(tmp_path))
end
assert_equal "00112233445566778899aabbccddeeff…\n", `bin/rails runner -e production "puts Rails.application.secrets.api_key"`
end
end
test "can read secrets written in non-binary" do
run_secrets_generator do
secrets = <<-end_of_secrets
production:
api_key: 00112233445566778899aabbccddeeff…
end_of_secrets
Rails::Secrets.write(secrets)
Rails::Secrets.read_for_editing do |tmp_path|
assert_equal(secrets.force_encoding(Encoding::ASCII_8BIT), IO.binread(tmp_path))
end
assert_equal "00112233445566778899aabbccddeeff…\n", `bin/rails runner -e production "puts Rails.application.secrets.api_key"`
end
end
private
def run_secrets_generator
Dir.chdir(app_path) do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册