aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/tests/cfssl.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/tests/cfssl.nix')
-rw-r--r--nixpkgs/nixos/tests/cfssl.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/nixpkgs/nixos/tests/cfssl.nix b/nixpkgs/nixos/tests/cfssl.nix
new file mode 100644
index 00000000000..513ed8c4574
--- /dev/null
+++ b/nixpkgs/nixos/tests/cfssl.nix
@@ -0,0 +1,67 @@
+import ./make-test.nix ({ pkgs, ...} : {
+ name = "cfssl";
+
+ machine = { config, lib, pkgs, ... }:
+ {
+ networking.firewall.allowedTCPPorts = [ config.services.cfssl.port ];
+
+ services.cfssl.enable = true;
+ systemd.services.cfssl.after = [ "cfssl-init.service" ];
+
+ systemd.services.cfssl-init = {
+ description = "Initialize the cfssl CA";
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ User = "cfssl";
+ Type = "oneshot";
+ 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
+ '';
+ };
+ };
+
+ testScript =
+ let
+ cfsslrequest = with pkgs; writeScript "cfsslrequest" ''
+ curl -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->waitForUnit('cfssl.service');
+ $machine->waitUntilSucceeds('${cfsslrequest}');
+ $machine->succeed('ls /tmp/certificate-key.pem');
+ '';
+})