implement check_dependencies!

This commit is contained in:
Justin Dell
2024-11-04 09:18:56 -06:00
parent c9fff3cb40
commit e266945413
2 changed files with 20 additions and 0 deletions

View File

@@ -22,4 +22,13 @@ class Kamal::Secrets::Adapters::AwsSecretsManager < Kamal::Secrets::Adapters::Ba
raise RuntimeError, "Could not read #{secret} from AWS Secrets Manager" unless $?.success? raise RuntimeError, "Could not read #{secret} from AWS Secrets Manager" unless $?.success?
end end
end end
def check_dependencies!
raise RuntimeError, "AWS CLI is not installed" unless cli_installed?
end
def cli_installed?
`aws --version 2> /dev/null`
$?.success?
end
end end

View File

@@ -2,6 +2,7 @@ require "test_helper"
class AwsSecretsManagerAdapterTest < SecretAdapterTestCase class AwsSecretsManagerAdapterTest < SecretAdapterTestCase
test "fetch" do test "fetch" do
stub_ticks.with("aws --version 2> /dev/null")
stub_ticks stub_ticks
.with("aws secretsmanager batch-get-secret-value --secret-id-list secret/KEY1 secret/KEY2 secret2/KEY3 --profile default") .with("aws secretsmanager batch-get-secret-value --secret-id-list secret/KEY1 secret/KEY2 secret2/KEY3 --profile default")
.returns(<<~JSON) .returns(<<~JSON)
@@ -44,6 +45,7 @@ class AwsSecretsManagerAdapterTest < SecretAdapterTestCase
end end
test "fetch with secret names" do test "fetch with secret names" do
stub_ticks.with("aws --version 2> /dev/null")
stub_ticks stub_ticks
.with("aws secretsmanager batch-get-secret-value --secret-id-list secret/KEY1 secret/KEY2 --profile default") .with("aws secretsmanager batch-get-secret-value --secret-id-list secret/KEY1 secret/KEY2 --profile default")
.returns(<<~JSON) .returns(<<~JSON)
@@ -74,6 +76,15 @@ class AwsSecretsManagerAdapterTest < SecretAdapterTestCase
assert_equal expected_json, json assert_equal expected_json, json
end end
test "fetch without CLI installed" do
stub_ticks_with("aws --version 2> /dev/null", succeed: false)
error = assert_raises RuntimeError do
JSON.parse(shellunescape(run_command("fetch", "SECRET1")))
end
assert_equal "AWS CLI is not installed", error.message
end
private private
def run_command(*command) def run_command(*command)
stdouted do stdouted do