From 8dd9c9197acde02ee76ebd0b426e8d1ecaf5127e Mon Sep 17 00:00:00 2001 From: NullCube Date: Thu, 24 Apr 2025 18:12:03 -0700 Subject: [PATCH] nixos/tests/anubis: add testing for anubis botPolicy option --- nixos/tests/anubis.nix | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/nixos/tests/anubis.nix b/nixos/tests/anubis.nix index 973c1b3f369f..761c31d6b8c6 100644 --- a/nixos/tests/anubis.nix +++ b/nixos/tests/anubis.nix @@ -11,9 +11,13 @@ { config, pkgs, ... }: { services.anubis = { - defaultOptions.settings = { - DIFFICULTY = 3; - USER_DEFINED_DEFAULT = true; + defaultOptions = { + # Get default botPolicy + botPolicy = lib.importJSON "${config.services.anubis.package.src}/data/botPolicies.json"; + settings = { + DIFFICULTY = 3; + USER_DEFINED_DEFAULT = true; + }; }; instances = { "".settings = { @@ -38,11 +42,34 @@ group = "nginx"; settings.TARGET = "unix:///run/nginx/nginx.sock"; }; + + "botPolicy-default" = { + botPolicy = null; + settings.TARGET = "http://localhost:8080"; + }; + + "botPolicy-file" = { + settings = { + TARGET = "http://localhost:8080"; + POLICY_FNAME = "/etc/anubis-botPolicy.json"; + }; + }; }; }; + # Empty json for testing + environment.etc."anubis-botPolicy.json".text = lib.generators.toJSON { } { + bots = [ + { + name = "allow-all"; + user_agent_regex = ".*"; + action = "ALLOW"; + } + ]; + }; + # support - users.users.nginx.extraGroups = [ config.users.groups.anubis.name ]; + users.users.nginx.extraGroups = [ config.services.anubis.defaultOptions.group ]; services.nginx = { enable = true; recommendedProxySettings = true; @@ -115,5 +142,10 @@ # Make sure defaults don't overwrite themselves machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "DIFFICULTY=5"') machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "DIFFICULTY=3"') + + # Check correct BotPolicy settings are applied + machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "POLICY_FNAME=/nix/store"') + machine.fail('cat /run/current-system/etc/systemd/system/anubis-botPolicy-default.service | grep "POLICY_FNAME="') + machine.succeed('cat /run/current-system/etc/systemd/system/anubis-botPolicy-file.service | grep "POLICY_FNAME=/etc/anubis-botPolicy.json"') ''; }