python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / tests / powerdns-admin.nix
blob4d763c9c6f6e83fd057149a352d0873b861c359f
1 # Test powerdns-admin
2 { system ? builtins.currentSystem
3 , config ? { }
4 , pkgs ? import ../.. { inherit system config; }
5 }:
7 with import ../lib/testing-python.nix { inherit system pkgs; };
8 with pkgs.lib;
9 let
10   defaultConfig = ''
11     BIND_ADDRESS = '127.0.0.1'
12     PORT = 8000
13   '';
15   makeAppTest = name: configs: makeTest {
16     name = "powerdns-admin-${name}";
17     meta = with pkgs.lib.maintainers; {
18       maintainers = [ Flakebi zhaofengli ];
19     };
21     nodes.server = { pkgs, config, ... }: mkMerge ([
22       {
23         services.powerdns-admin = {
24           enable = true;
25           secretKeyFile = "/etc/powerdns-admin/secret";
26           saltFile = "/etc/powerdns-admin/salt";
27         };
28         # It's insecure to have secrets in the world-readable nix store, but this is just a test
29         environment.etc."powerdns-admin/secret".text = "secret key";
30         environment.etc."powerdns-admin/salt".text = "salt";
31         environment.systemPackages = [
32           (pkgs.writeShellScriptBin "run-test" config.system.build.testScript)
33         ];
34       }
35     ] ++ configs);
37     testScript = ''
38       server.wait_for_unit("powerdns-admin.service")
39       server.wait_until_succeeds("run-test", timeout=10)
40     '';
41   };
43   matrix = {
44     backend = {
45       mysql = {
46         services.powerdns-admin = {
47           config = ''
48             ${defaultConfig}
49             SQLALCHEMY_DATABASE_URI = 'mysql://powerdnsadmin@/powerdnsadmin?unix_socket=/run/mysqld/mysqld.sock'
50           '';
51         };
52         systemd.services.powerdns-admin = {
53           after = [ "mysql.service" ];
54           serviceConfig.BindPaths = "/run/mysqld";
55         };
57         services.mysql = {
58           enable = true;
59           package = pkgs.mariadb;
60           ensureDatabases = [ "powerdnsadmin" ];
61           ensureUsers = [
62             {
63               name = "powerdnsadmin";
64               ensurePermissions = {
65                 "powerdnsadmin.*" = "ALL PRIVILEGES";
66               };
67             }
68           ];
69         };
70       };
71       postgresql = {
72         services.powerdns-admin = {
73           config = ''
74             ${defaultConfig}
75             SQLALCHEMY_DATABASE_URI = 'postgresql://powerdnsadmin@/powerdnsadmin?host=/run/postgresql'
76           '';
77         };
78         systemd.services.powerdns-admin = {
79           after = [ "postgresql.service" ];
80           serviceConfig.BindPaths = "/run/postgresql";
81         };
83         services.postgresql = {
84           enable = true;
85           ensureDatabases = [ "powerdnsadmin" ];
86           ensureUsers = [
87             {
88               name = "powerdnsadmin";
89               ensurePermissions = {
90                 "DATABASE powerdnsadmin" = "ALL PRIVILEGES";
91               };
92             }
93           ];
94         };
95       };
96     };
97     listen = {
98       tcp = {
99         services.powerdns-admin.extraArgs = [ "-b" "127.0.0.1:8000" ];
100         system.build.testScript = ''
101           curl -sSf http://127.0.0.1:8000/
102         '';
103       };
104       unix = {
105         services.powerdns-admin.extraArgs = [ "-b" "unix:/run/powerdns-admin/http.sock" ];
106         system.build.testScript = ''
107           curl -sSf --unix-socket /run/powerdns-admin/http.sock http://somehost/
108         '';
109       };
110     };
111   };
113 with matrix; {
114   postgresql = makeAppTest "postgresql" [ backend.postgresql listen.tcp ];
115   mysql = makeAppTest "mysql" [ backend.mysql listen.tcp ];
116   unix-listener = makeAppTest "unix-listener" [ backend.postgresql listen.unix ];