vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / hockeypuck.nix
blob675d6b226ad2038123ee3a360099c7ff00deebc7
1 import ./make-test-python.nix ({ lib, pkgs, ... }:
2 let
3   gpgKeyring = (pkgs.runCommand "gpg-keyring" { buildInputs = [ pkgs.gnupg ]; } ''
4     mkdir -p $out
5     export GNUPGHOME=$out
6     cat > foo <<EOF
7       %echo Generating a basic OpenPGP key
8       %no-protection
9       Key-Type: DSA
10       Key-Length: 1024
11       Subkey-Type: ELG-E
12       Subkey-Length: 1024
13       Name-Real: Foo Example
14       Name-Email: foo@example.org
15       Expire-Date: 0
16       # Do a commit here, so that we can later print "done"
17       %commit
18       %echo done
19     EOF
20     gpg --batch --generate-key foo
21     rm $out/S.gpg-agent $out/S.gpg-agent.*
22   '');
23 in {
24   name = "hockeypuck";
25   meta.maintainers = with lib.maintainers; [ etu ];
27   nodes.machine = { ... }: {
28     # Used for test
29     environment.systemPackages = [ pkgs.gnupg ];
31     services.hockeypuck.enable = true;
33     services.postgresql = {
34       enable = true;
35       ensureDatabases = [ "hockeypuck" ];
36       ensureUsers = [{
37         name = "hockeypuck";
38         ensureDBOwnership = true;
39       }];
40     };
41   };
43   testScript = ''
44     machine.wait_for_unit("hockeypuck.service")
45     machine.wait_for_open_port(11371)
47     response = machine.succeed("curl -vvv -s http://127.0.0.1:11371/")
49     assert "<title>OpenPGP Keyserver</title>" in response, "HTML title not found"
51     # Copy the keyring
52     machine.succeed("cp -R ${gpgKeyring} /tmp/GNUPGHOME")
54     # Extract our GPG key id
55     keyId = machine.succeed("GNUPGHOME=/tmp/GNUPGHOME gpg --list-keys | grep dsa1024 --after-context=1 | grep -v dsa1024").strip()
57     # Send the key to our local keyserver
58     machine.succeed("GNUPGHOME=/tmp/GNUPGHOME gpg --keyserver hkp://127.0.0.1:11371 --send-keys " + keyId)
60     # Receive the key from our local keyserver to a separate directory
61     machine.succeed("GNUPGHOME=$(mktemp -d) gpg --keyserver hkp://127.0.0.1:11371 --recv-keys " + keyId)
62   '';