Skip to content

Commit ae5cfb0

Browse files
committed
wip
1 parent 741a875 commit ae5cfb0

File tree

4 files changed

+47
-9
lines changed

4 files changed

+47
-9
lines changed

lib/rails/app_env/credentials.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
require_relative "error"
2+
13
module Rails
24
module AppEnv
35
module Credentials
6+
class AlreadyInitializedError < Rails::AppEnv::Error; end
7+
48
class << self
59
attr_reader :original
610

711
def initialize!
8-
raise "Rails::AppEnv::Credentials has been already initialized." if @initialized
12+
raise AlreadyInitializedError.new "Rails::AppEnv::Credentials has been already initialized." if @initialized
913
@initialized = true
1014

1115
@original = Rails.application.config.credentials

lib/rails/app_env/error.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module Rails
2+
module AppEnv
3+
class Error < StandardError; end
4+
end
5+
end

lib/rails/rails_ext/credentials_command.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Rails
22
module Command
33
class CredentialsCommand
44
def config
5-
Rails.application.config.app_env.original_credentials
5+
Rails::AppEnv::Credentials.original
66
end
77
end
88
end

test/units/app_env/credentials_test.rb

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,45 @@
22
require_relative "../../test_helper"
33

44
class Rails::AppEnv::CredentialsTest < ActiveSupport::TestCase
5+
test "#initialize! can only be invoked once" do
6+
reset_credentials
7+
8+
Rails::AppEnv::Credentials.initialize!
9+
10+
assert_raises Rails::AppEnv::Credentials::AlreadyInitializedError do
11+
Rails::AppEnv::Credentials.initialize!
12+
end
13+
end
14+
15+
test "#initialize! backup original Rails.application.config.credentials" do
16+
reset_credentials
17+
18+
expected = Object.new
19+
20+
Rails.application.config.stub :credentials, expected do
21+
Rails::AppEnv::Credentials.initialize!
22+
end
23+
24+
assert_same expected, Rails::AppEnv::Credentials.original
25+
end
26+
527
test "#configuration is a kind of ActiveSupport::Credentials" do
628
assert_kind_of ActiveSupport::InheritableOptions, Rails::AppEnv::Credentials.configuration
729
end
830

931
test "#configuration.content_path is config/credentials/{Rails.app_env}.yml.enc" do
1032
Dir.mktmpdir do |tmp_dir|
11-
Rails.stub :root, Pathname(tmp_dir) do
12-
Rails.stub :app_env, Rails::AppEnv::EnvironmentInquirer.new("foo") do
13-
path = Rails.root.join("config/credentials/foo.yml.enc")
33+
Rails.stub :root, Pathname(tmp_dir) do
34+
Rails.stub :app_env, Rails::AppEnv::EnvironmentInquirer.new("foo") do
35+
path = Rails.root.join("config/credentials/foo.yml.enc")
1436

15-
FileUtils.mkdir_p File.dirname(path)
16-
FileUtils.touch path
37+
FileUtils.mkdir_p File.dirname(path)
38+
FileUtils.touch path
1739

18-
assert_equal path, Rails::AppEnv::Credentials.configuration.content_path
19-
end
40+
assert_equal path, Rails::AppEnv::Credentials.configuration.content_path
2041
end
2142
end
43+
end
2244
end
2345

2446
test "#configuration.content_path falls back to config/credentials.yml.enc when config/credentials/{Rails.app_env}.yml.enc not exist" do
@@ -59,4 +81,11 @@ class Rails::AppEnv::CredentialsTest < ActiveSupport::TestCase
5981
end
6082
end
6183
end
84+
85+
private
86+
87+
def reset_credentials
88+
Rails::AppEnv::Credentials.instance_variable_set :@initialized, nil
89+
Rails::AppEnv::Credentials.instance_variable_set :@original, nil
90+
end
6291
end

0 commit comments

Comments
 (0)