nixos/tests: Init hockeypuck tests

This commit is contained in:
Elis Hirwing 2021-07-18 09:51:49 +02:00
parent 09a49354b6
commit f8b6ba005e
No known key found for this signature in database
GPG key ID: D57EFA625C9A925F
4 changed files with 70 additions and 2 deletions

View file

@ -174,6 +174,7 @@ in
hitch = handleTest ./hitch {};
hledger-web = handleTest ./hledger-web.nix {};
hocker-fetchdocker = handleTest ./hocker-fetchdocker {};
hockeypuck = handleTest ./hockeypuck.nix { };
home-assistant = handleTest ./home-assistant.nix {};
hostname = handleTest ./hostname.nix {};
hound = handleTest ./hound.nix {};

View file

@ -0,0 +1,63 @@
import ./make-test-python.nix ({ lib, pkgs, ... }:
let
gpgKeyring = (pkgs.runCommandNoCC "gpg-keyring" { buildInputs = [ pkgs.gnupg ]; } ''
mkdir -p $out
export GNUPGHOME=$out
cat > foo <<EOF
%echo Generating a basic OpenPGP key
%no-protection
Key-Type: DSA
Key-Length: 1024
Subkey-Type: ELG-E
Subkey-Length: 1024
Name-Real: Foo Example
Name-Email: foo@example.org
Expire-Date: 0
# Do a commit here, so that we can later print "done"
%commit
%echo done
EOF
gpg --batch --generate-key foo
rm $out/S.gpg-agent $out/S.gpg-agent.*
'');
in {
name = "hockeypuck";
meta.maintainers = with lib.maintainers; [ etu ];
machine = { ... }: {
# Used for test
environment.systemPackages = [ pkgs.gnupg ];
services.hockeypuck.enable = true;
services.postgresql = {
enable = true;
ensureDatabases = [ "hockeypuck" ];
ensureUsers = [{
name = "hockeypuck";
ensurePermissions."DATABASE hockeypuck" = "ALL PRIVILEGES";
}];
};
};
testScript = ''
machine.wait_for_unit("hockeypuck.service")
machine.wait_for_open_port(11371)
response = machine.succeed("curl -vvv -s http://127.0.0.1:11371/")
assert "<title>OpenPGP Keyserver</title>" in response, "HTML title not found"
# Copy the keyring
machine.succeed("cp -R ${gpgKeyring} /tmp/GNUPGHOME")
# Extract our GPG key id
keyId = machine.succeed("GNUPGHOME=/tmp/GNUPGHOME gpg --list-keys | grep dsa1024 --after-context=1 | grep -v dsa1024").strip()
# Send the key to our local keyserver
machine.succeed("GNUPGHOME=/tmp/GNUPGHOME gpg --keyserver hkp://127.0.0.1:11371 --send-keys " + keyId)
# Recieve the key from our local keyserver to a separate directory
machine.succeed("GNUPGHOME=$(mktemp -d) gpg --keyserver hkp://127.0.0.1:11371 --recv-keys " + keyId)
'';
})

View file

@ -1,4 +1,4 @@
{ lib, buildGoModule, fetchFromGitHub }:
{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
let
sources = (import ./sources.nix) { inherit fetchFromGitHub; };
@ -10,6 +10,8 @@ buildGoModule {
vendorSha256 = null;
doCheck = false; # Uses networking for tests
passthru.tests = nixosTests.hockeypuck;
meta = with lib; {
description = "OpenPGP Key Server";
homepage = "https://github.com/hockeypuck/hockeypuck";

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub }:
{ stdenv, lib, fetchFromGitHub, nixosTests }:
let
sources = (import ./sources.nix) { inherit fetchFromGitHub; };
@ -17,6 +17,8 @@ stdenv.mkDerivation {
cp -vr contrib/templates $out/share/
'';
passthru.tests = nixosTests.hockeypuck;
meta = with lib; {
description = "OpenPGP Key Server web resources";
homepage = "https://github.com/hockeypuck/hockeypuck";