Skip to content

Commit 55b5135

Browse files
committed
test: add tests for one-way encrypted secrets
1 parent 3664ac6 commit 55b5135

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

test/fixtures/one-way/secrets.nix

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
let
2+
system1 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPJDyIr/FSz1cJdcoW69R+NrWzwGK/+3gJpqD1t8L2zE";
3+
in {
4+
"one-way.age".publicKeys = [system1];
5+
}

test/install_ssh_host_keys.nix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@
2424
cp -r "${../example}" /tmp/secrets
2525
chmod -R u+rw /tmp/secrets
2626
chown -R $USER1_UID:$USERS_GID /tmp/secrets
27+
28+
cp -r "${./fixtures/one-way}" /tmp/secrets-one-way
29+
chmod -R u+rw /tmp/secrets-one-way
30+
chown -R $USER1_UID:$USERS_GID /tmp/secrets-one-way
2731
'';
2832
}

test/integration.nix

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ pkgs.nixosTest {
6666
system1.wait_for_file("/tmp/1")
6767
assert "${user}" in system1.succeed("cat /tmp/1")
6868
69-
userDo = lambda input : f"sudo -u user1 -- bash -c 'set -eou pipefail; cd /tmp/secrets; {input}'"
69+
userDir = "/tmp/secrets"
70+
userDo = lambda input : f"sudo -u user1 -- bash -c 'set -eou pipefail; cd {userDir}; {input}'"
7071
7172
before_hash = system1.succeed(userDo('sha256sum passwordfile-user1.age')).split()
7273
print(system1.succeed(userDo('agenix -r -i /home/user1/.ssh/id_ed25519')))
@@ -89,7 +90,15 @@ pkgs.nixosTest {
8990
system1.succeed(userDo("rm ~/.ssh/id_rsa"))
9091
9192
# user1 can edit a secret by piping in contents
92-
system1.succeed(userDo("echo 'secret1234' | agenix -e passwordfile-user1.age"))
93+
system1.succeed(userDo("echo secret1234 | agenix -e passwordfile-user1.age"))
9394
assert "secret1234" in system1.succeed(userDo("EDITOR=cat agenix -e passwordfile-user1.age"))
95+
96+
# user1 can make a one-way secret, but cannot see the contents, and host can decrypt
97+
userDir = "/tmp/secrets-one-way"
98+
system1.succeed(userDo("echo eye1234 | agenix -e one-way.age"))
99+
system1.fail(userDo("EDITOR=cat agenix -e one-way.age"))
100+
assert "eye1234" in system1.succeed(f"cd {userDir};EDITOR=cat agenix -e one-way.age -i /etc/ssh/ssh_host_ed25519_key")
101+
system1.succeed(userDo("echo nose1234 | agenix -e one-way.age"))
102+
assert "nose1234" in system1.succeed(f"cd {userDir};EDITOR=cat agenix -e one-way.age -i /etc/ssh/ssh_host_ed25519_key")
94103
'';
95104
}

0 commit comments

Comments
 (0)