Commit f341151c authored by Raito Bezarius's avatar Raito Bezarius
Browse files

nixos/tests/pixelfed: init test

parent 51c5aae8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -392,6 +392,7 @@ in {
  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 −0
Original line number Diff line number Diff line
{ system ? builtins.currentSystem, handleTestOn }:
let
  supportedSystems = [ "x86_64-linux" "i686-linux" ];

in
{
  standard = handleTestOn supportedSystems ./standard.nix { inherit system; };
}
+38 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
, fetchFromGitHub
, php
, pkgs
, nixosTests
, dataDir ? "/var/lib/pixelfed"
, runtimeDir ? "/run/pixelfed"
}:
@@ -37,6 +38,8 @@ in package.override rec {
    hash = "sha256-ZrvYKMSx5WymWR46/UKr5jCsclXXzBeY21ju22zeqN0=";
  };

  passthru.tests = { inherit (nixosTests) pixelfed; };

  meta = with lib; {
    description = "A federated image sharing platform";
    license = licenses.agpl3Only;