at master 1.9 kB view raw
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 }; 31 }; 32 33 testScript = 34 { nodes, ... }: 35 '' 36 PORT = ${builtins.toString nodes.simple.services.silverbullet.listenPort} 37 ADDRESS = "${nodes.simple.services.silverbullet.listenAddress}" 38 SPACEDIR = "${nodes.simple.services.silverbullet.spaceDir}" 39 simple.wait_for_unit("silverbullet.service") 40 simple.wait_for_open_port(PORT) 41 simple.succeed(f"curl --max-time 5 -s -v -o /dev/null --fail http://{ADDRESS}:{PORT}/") 42 simple.succeed(f"test -d '{SPACEDIR}'") 43 44 PORT = ${builtins.toString nodes.configured.services.silverbullet.listenPort} 45 ADDRESS = "${nodes.configured.services.silverbullet.listenAddress}" 46 SPACEDIR = "${nodes.configured.services.silverbullet.spaceDir}" 47 configured.wait_for_unit("silverbullet.service") 48 configured.wait_for_open_port(PORT) 49 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 50 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 51 configured.succeed(f"test -d '{SPACEDIR}'") 52 ''; 53}