nixosTests.cfssl: handleTest -> runTest

This commit is contained in:
Sizhe Zhao 2025-06-07 19:40:09 +08:00
parent 4633acf70e
commit 1fe7725039
No known key found for this signature in database
GPG Key ID: ED1807251A7DA08F
2 changed files with 83 additions and 85 deletions

View File

@ -306,7 +306,7 @@ in
"x86_64-linux" "x86_64-linux"
] ./ceph-single-node-bluestore-dmcrypt.nix; ] ./ceph-single-node-bluestore-dmcrypt.nix;
certmgr = import ./certmgr.nix { inherit pkgs runTest; }; certmgr = import ./certmgr.nix { inherit pkgs runTest; };
cfssl = handleTestOn [ "aarch64-linux" "x86_64-linux" ] ./cfssl.nix { }; cfssl = runTestOn [ "aarch64-linux" "x86_64-linux" ] ./cfssl.nix;
cgit = runTest ./cgit.nix; cgit = runTest ./cgit.nix;
charliecloud = runTest ./charliecloud.nix; charliecloud = runTest ./charliecloud.nix;
chromadb = runTest ./chromadb.nix; chromadb = runTest ./chromadb.nix;

View File

@ -1,89 +1,87 @@
import ./make-test-python.nix ( { pkgs, ... }:
{ pkgs, ... }: {
{ name = "cfssl";
name = "cfssl";
nodes.machine = nodes.machine =
{ {
config, config,
lib, lib,
pkgs, pkgs,
... ...
}: }:
{ {
networking.firewall.allowedTCPPorts = [ config.services.cfssl.port ]; networking.firewall.allowedTCPPorts = [ config.services.cfssl.port ];
services.cfssl.enable = true; services.cfssl.enable = true;
systemd.services.cfssl.after = [ "cfssl-init.service" ]; systemd.services.cfssl.after = [ "cfssl-init.service" ];
systemd.services.cfssl-init = { systemd.services.cfssl-init = {
description = "Initialize the cfssl CA"; description = "Initialize the cfssl CA";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
User = "cfssl"; User = "cfssl";
Type = "oneshot"; Type = "oneshot";
WorkingDirectory = config.services.cfssl.dataDir; WorkingDirectory = config.services.cfssl.dataDir;
};
script = with pkgs; ''
${cfssl}/bin/cfssl genkey -initca ${
pkgs.writeText "ca.json" (
builtins.toJSON {
hosts = [ "ca.example.com" ];
key = {
algo = "rsa";
size = 4096;
};
names = [
{
C = "US";
L = "San Francisco";
O = "Internet Widgets, LLC";
OU = "Certificate Authority";
ST = "California";
}
];
}
)
} | ${cfssl}/bin/cfssljson -bare ca
'';
}; };
}; script = with pkgs; ''
${cfssl}/bin/cfssl genkey -initca ${
testScript = pkgs.writeText "ca.json" (
let builtins.toJSON {
cfsslrequest = hosts = [ "ca.example.com" ];
with pkgs; key = {
writeScript "cfsslrequest" '' algo = "rsa";
curl -f -X POST -H "Content-Type: application/json" -d @${csr} \ size = 4096;
http://localhost:8888/api/v1/cfssl/newkey | ${cfssl}/bin/cfssljson /tmp/certificate };
''; names = [
csr = pkgs.writeText "csr.json" ( {
builtins.toJSON { C = "US";
CN = "www.example.com"; L = "San Francisco";
hosts = [ O = "Internet Widgets, LLC";
"example.com" OU = "Certificate Authority";
"www.example.com" ST = "California";
]; }
key = { ];
algo = "rsa";
size = 2048;
};
names = [
{
C = "US";
L = "San Francisco";
O = "Example Company, LLC";
OU = "Operations";
ST = "California";
} }
]; )
} } | ${cfssl}/bin/cfssljson -bare ca
); '';
in };
'' };
machine.wait_for_unit("cfssl.service")
machine.wait_until_succeeds("${cfsslrequest}") testScript =
machine.succeed("ls /tmp/certificate-key.pem") let
''; cfsslrequest =
} with pkgs;
) writeScript "cfsslrequest" ''
curl -f -X POST -H "Content-Type: application/json" -d @${csr} \
http://localhost:8888/api/v1/cfssl/newkey | ${cfssl}/bin/cfssljson /tmp/certificate
'';
csr = pkgs.writeText "csr.json" (
builtins.toJSON {
CN = "www.example.com";
hosts = [
"example.com"
"www.example.com"
];
key = {
algo = "rsa";
size = 2048;
};
names = [
{
C = "US";
L = "San Francisco";
O = "Example Company, LLC";
OU = "Operations";
ST = "California";
}
];
}
);
in
''
machine.wait_for_unit("cfssl.service")
machine.wait_until_succeeds("${cfsslrequest}")
machine.succeed("ls /tmp/certificate-key.pem")
'';
}