Add secret tests
This commit is contained in:
62
test/secrets/one_password_adapter_test.rb
Normal file
62
test/secrets/one_password_adapter_test.rb
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class SecretsOnePasswordAdapterTest < ActiveSupport::TestCase
|
||||||
|
test "login" do
|
||||||
|
`true` # Ensure $? is 0
|
||||||
|
Object.any_instance.stubs(:`).with("op signin --account \"myaccount\" --force --raw").returns("Logged in")
|
||||||
|
|
||||||
|
assert_equal "Logged in", run_command("login")
|
||||||
|
end
|
||||||
|
|
||||||
|
test "fetch" do
|
||||||
|
`true` # Ensure $? is 0
|
||||||
|
Object.any_instance.stubs(:`).with("op read op://vault/item/section/foo --account \"myaccount\"").returns("bar")
|
||||||
|
|
||||||
|
assert_equal "bar", run_command("fetch", "op://vault/item/section/foo")
|
||||||
|
end
|
||||||
|
|
||||||
|
test "fetch_all" do
|
||||||
|
`true` # Ensure $? is 0
|
||||||
|
Object.any_instance.stubs(:`)
|
||||||
|
.with("op item get item --vault \"vault\" --fields \"label=section.SECRET1,label=section.SECRET2\" --format \"json\" --account \"myaccount\"")
|
||||||
|
.returns(<<~JSON)
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||||
|
"section": {
|
||||||
|
"id": "cccccccccccccccccccccccccc",
|
||||||
|
"label": "section"
|
||||||
|
},
|
||||||
|
"type": "CONCEALED",
|
||||||
|
"label": "SECRET1",
|
||||||
|
"value": "VALUE1",
|
||||||
|
"reference": "op://vault/item/section/SECRET1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||||
|
"section": {
|
||||||
|
"id": "dddddddddddddddddddddddddd",
|
||||||
|
"label": "section"
|
||||||
|
},
|
||||||
|
"type": "CONCEALED",
|
||||||
|
"label": "SECRET2",
|
||||||
|
"value": "VALUE2",
|
||||||
|
"reference": "op://vault/item/section/SECRET2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
JSON
|
||||||
|
|
||||||
|
assert_equal "bar", run_command("fetch_all", "op://vault/item/section/SECRET1", "op://vault/item/section/SECRET2")
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def run_command(*command)
|
||||||
|
stdouted do
|
||||||
|
Kamal::Cli::Secrets.start \
|
||||||
|
[ *command,
|
||||||
|
"-c", "test/fixtures/deploy_with_accessories.yml",
|
||||||
|
"--adapter", "1password",
|
||||||
|
"--adapter-options", "account:myaccount" ]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
30
test/secrets_test.rb
Normal file
30
test/secrets_test.rb
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class SecretsTest < ActiveSupport::TestCase
|
||||||
|
test "fetch" do
|
||||||
|
with_test_secrets("secrets" => "SECRET=ABC") do
|
||||||
|
assert_equal "ABC", Kamal::Secrets.new["SECRET"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "command interpolation" do
|
||||||
|
with_test_secrets("secrets" => "SECRET=$(echo ABC)") do
|
||||||
|
assert_equal "ABC", Kamal::Secrets.new["SECRET"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "variable references" do
|
||||||
|
with_test_secrets("secrets" => "SECRET1=ABC\nSECRET2=${SECRET1}DEF") do
|
||||||
|
assert_equal "ABC", Kamal::Secrets.new["SECRET1"]
|
||||||
|
assert_equal "ABCDEF", Kamal::Secrets.new["SECRET2"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "destinations" do
|
||||||
|
with_test_secrets("secrets.dest" => "SECRET=DEF", "secrets" => "SECRET=ABC") do
|
||||||
|
assert_equal "ABC", Kamal::Secrets.new["SECRET"]
|
||||||
|
assert_equal "DEF", Kamal::Secrets.new(destination: "dest")["SECRET"]
|
||||||
|
assert_equal "ABC", Kamal::Secrets.new(destination: "nodest")["SECRET"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user