1{ pkgs, ... }:
2
3let
4 dataDir = "/var/lib/foobar";
5
6in
7{
8 name = "etebase-server";
9 meta = with pkgs.lib.maintainers; {
10 maintainers = [ felschr ];
11 };
12
13 nodes.machine =
14 { pkgs, ... }:
15 {
16 services.etebase-server = {
17 inherit dataDir;
18 enable = true;
19 settings.global.secret_file = toString (pkgs.writeText "secret" "123456");
20 };
21 };
22
23 testScript = ''
24 machine.wait_for_unit("etebase-server.service")
25 machine.wait_for_open_port(8001)
26
27 with subtest("Database & src-version were created"):
28 machine.wait_for_file("${dataDir}/src-version")
29 assert (
30 "${pkgs.etebase-server}"
31 in machine.succeed("cat ${dataDir}/src-version")
32 )
33 machine.wait_for_file("${dataDir}/db.sqlite3")
34 machine.wait_for_file("${dataDir}/static")
35
36 with subtest("Only allow access from allowed_hosts"):
37 machine.succeed("curl -sSfL http://0.0.0.0:8001/")
38 machine.fail("curl -sSfL http://127.0.0.1:8001/")
39 machine.fail("curl -sSfL http://localhost:8001/")
40
41 with subtest("Run tests"):
42 machine.succeed("etebase-server check")
43 machine.succeed("etebase-server test")
44
45 with subtest("Create superuser"):
46 machine.succeed(
47 "etebase-server createsuperuser --no-input --username admin --email root@localhost"
48 )
49 '';
50}