nixos/tests/pixelfed: init test

Changed files
+50
nixos
tests
pkgs
servers
web-apps
pixelfed
+1
nixos/tests/all-tests.nix
···
man = handleTest ./man.nix {};
mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; });
+
pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; });
mate = handleTest ./mate.nix {};
matomo = handleTest ./matomo.nix {};
matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {};
+8
nixos/tests/web-apps/pixelfed/default.nix
···
+
{ system ? builtins.currentSystem, handleTestOn }:
+
let
+
supportedSystems = [ "x86_64-linux" "i686-linux" ];
+
+
in
+
{
+
standard = handleTestOn supportedSystems ./standard.nix { inherit system; };
+
}
+38
nixos/tests/web-apps/pixelfed/standard.nix
···
+
import ../../make-test-python.nix ({pkgs, ...}:
+
{
+
name = "pixelfed-standard";
+
meta.maintainers = with pkgs.lib.maintainers; [ raitobezarius ];
+
+
nodes = {
+
server = { pkgs, ... }: {
+
services.pixelfed = {
+
enable = true;
+
domain = "pixelfed.local";
+
# Configure NGINX.
+
nginx = {};
+
secretFile = (pkgs.writeText "secrets.env" ''
+
# Snakeoil secret, can be any random 32-chars secret via CSPRNG.
+
APP_KEY=adKK9EcY8Hcj3PLU7rzG9rJ6KKTOtYfA
+
'');
+
settings."FORCE_HTTPS_URLS" = false;
+
};
+
};
+
};
+
+
testScript = ''
+
# Wait for Pixelfed PHP pool
+
server.wait_for_unit("phpfpm-pixelfed.service")
+
# Wait for NGINX
+
server.wait_for_unit("nginx.service")
+
# Wait for HTTP port
+
server.wait_for_open_port(80)
+
# Access the homepage.
+
server.succeed("curl -H 'Host: pixelfed.local' http://localhost")
+
# Create an account
+
server.succeed("pixelfed-manage user:create --name=test --username=test --email=test@test.com --password=test")
+
# Create a OAuth token.
+
# TODO: figure out how to use it to send a image/toot
+
# server.succeed("pixelfed-manage passport:client --personal")
+
# server.succeed("curl -H 'Host: pixefed.local' -H 'Accept: application/json' -H 'Authorization: Bearer secret' -F'status'='test' http://localhost/api/v1/statuses")
+
'';
+
})
+3
pkgs/servers/web-apps/pixelfed/default.nix
···
, fetchFromGitHub
, php
, pkgs
+
, nixosTests
, dataDir ? "/var/lib/pixelfed"
, runtimeDir ? "/run/pixelfed"
}:
···
rev = "v${version}";
hash = "sha256-ZrvYKMSx5WymWR46/UKr5jCsclXXzBeY21ju22zeqN0=";
};
+
+
passthru.tests = { inherit (nixosTests) pixelfed; };
meta = with lib; {
description = "A federated image sharing platform";