nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ lib, ... }:
2{
3 name = "silverbullet";
4 meta.maintainers = with lib.maintainers; [ aorith ];
5
6 nodes.simple =
7 { ... }:
8 {
9 services.silverbullet.enable = true;
10 };
11
12 nodes.configured =
13 { pkgs, ... }:
14 {
15 users.users.test.isNormalUser = true;
16 users.groups.test = { };
17
18 services.silverbullet = {
19 enable = true;
20 package = pkgs.silverbullet;
21 listenPort = 3001;
22 listenAddress = "localhost";
23 spaceDir = "/home/test/silverbullet";
24 user = "test";
25 group = "test";
26 envFile = pkgs.writeText "silverbullet.env" ''
27 SB_USER=user:password
28 SB_AUTH_TOKEN=test
29 '';
30 extraArgs = [
31 "--reindex"
32 "--db /home/test/silverbullet/custom.db"
33 ];
34 };
35 };
36
37 testScript =
38 { nodes, ... }:
39 ''
40 PORT = ${builtins.toString nodes.simple.services.silverbullet.listenPort}
41 ADDRESS = "${nodes.simple.services.silverbullet.listenAddress}"
42 SPACEDIR = "${nodes.simple.services.silverbullet.spaceDir}"
43 simple.wait_for_unit("silverbullet.service")
44 simple.wait_for_open_port(PORT)
45 simple.succeed(f"curl --max-time 5 -s -v -o /dev/null --fail http://{ADDRESS}:{PORT}/")
46 simple.succeed(f"test -d '{SPACEDIR}'")
47
48 PORT = ${builtins.toString nodes.configured.services.silverbullet.listenPort}
49 ADDRESS = "${nodes.configured.services.silverbullet.listenAddress}"
50 SPACEDIR = "${nodes.configured.services.silverbullet.spaceDir}"
51 configured.wait_for_unit("silverbullet.service")
52 configured.wait_for_open_port(PORT)
53 assert int(configured.succeed(f"curl --max-time 5 -s -o /dev/null -w '%{{http_code}}' -XPUT -d 'test' --fail http://{ADDRESS}:{PORT}/test.md -H'Authorization: Bearer test'")) == 200
54 assert int(configured.fail(f"curl --max-time 5 -s -o /dev/null -w '%{{http_code}}' -XPUT -d 'test' --fail http://{ADDRESS}:{PORT}/test.md -H'Authorization: Bearer wrong'")) == 401
55 configured.succeed(f"test -d '{SPACEDIR}'")
56 '';
57}