diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 68b920a4dd41..bace4b85e399 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -274,6 +274,7 @@ in
beanstalkd = runTest ./beanstalkd.nix;
bees = runTest ./bees.nix;
benchexec = runTest ./benchexec.nix;
+ bentopdf = handleTest ./bentopdf { };
beszel = runTest ./beszel.nix;
binary-cache = runTest {
imports = [ ./binary-cache.nix ];
diff --git a/nixos/tests/bentopdf/caddy.nix b/nixos/tests/bentopdf/caddy.nix
new file mode 100644
index 000000000000..0f4fc88063db
--- /dev/null
+++ b/nixos/tests/bentopdf/caddy.nix
@@ -0,0 +1,28 @@
+import ../make-test-python.nix (
+ { lib, ... }:
+
+ {
+ name = "bentopdf-caddy";
+ meta.maintainers = with lib.maintainers; [ stunkymonkey ];
+
+ nodes.machine =
+ { pkgs, ... }:
+ {
+ services.bentopdf = {
+ enable = true;
+ domain = "localhost:80";
+ caddy.enable = true;
+ caddy.virtualHost.extraConfig = "tls internal";
+ };
+ # disable letsencrypt cert fetching
+ services.caddy.globalConfig = "auto_https disable_certs";
+ };
+
+ testScript = ''
+ machine.wait_for_unit("caddy.service")
+ machine.wait_for_open_port(80)
+ machine.succeed("curl -vvv --fail --show-error --silent --location --insecure http://localhost/")
+ assert "
BentoPDF - The Privacy First PDF Toolkit" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost/")
+ '';
+ }
+)
diff --git a/nixos/tests/bentopdf/default.nix b/nixos/tests/bentopdf/default.nix
new file mode 100644
index 000000000000..fee30e520c7f
--- /dev/null
+++ b/nixos/tests/bentopdf/default.nix
@@ -0,0 +1,6 @@
+{ system, pkgs, ... }:
+
+{
+ caddy = import ./caddy.nix { inherit system pkgs; };
+ nginx = import ./nginx.nix { inherit system pkgs; };
+}
diff --git a/nixos/tests/bentopdf/nginx.nix b/nixos/tests/bentopdf/nginx.nix
new file mode 100644
index 000000000000..257dc909894e
--- /dev/null
+++ b/nixos/tests/bentopdf/nginx.nix
@@ -0,0 +1,24 @@
+import ../make-test-python.nix (
+ { lib, ... }:
+
+ {
+ name = "bentopdf-nginx";
+ meta.maintainers = with lib.maintainers; [ stunkymonkey ];
+
+ nodes.machine =
+ { pkgs, ... }:
+ {
+ services.bentopdf = {
+ enable = true;
+ domain = "localhost";
+ nginx.enable = true;
+ };
+ };
+
+ testScript = ''
+ machine.wait_for_unit("nginx.service")
+ machine.wait_for_open_port(80)
+ assert "BentoPDF - The Privacy First PDF Toolkit" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost:80/")
+ '';
+ }
+)
diff --git a/pkgs/by-name/be/bentopdf/package.nix b/pkgs/by-name/be/bentopdf/package.nix
index 42c985ccf613..9032644598ab 100644
--- a/pkgs/by-name/be/bentopdf/package.nix
+++ b/pkgs/by-name/be/bentopdf/package.nix
@@ -2,6 +2,7 @@
lib,
buildNpmPackage,
fetchFromGitHub,
+ nixosTests,
simpleMode ? true,
}:
buildNpmPackage (finalAttrs: {
@@ -36,6 +37,10 @@ buildNpmPackage (finalAttrs: {
runHook postInstall
'';
+ passthru.tests = {
+ inherit (nixosTests.bentopdf) caddy nginx;
+ };
+
meta = {
description = "Privacy-first PDF toolkit";
homepage = "https://bentopdf.com";