at master 1.3 kB view raw
1{ lib, pkgs, ... }: 2{ 3 4 name = "artalk"; 5 6 meta = { 7 maintainers = with lib.maintainers; [ moraxyc ]; 8 }; 9 10 nodes.machine = 11 { pkgs, ... }: 12 { 13 environment.systemPackages = [ 14 pkgs.curl 15 pkgs.artalk 16 pkgs.sudo 17 ]; 18 services.artalk = { 19 enable = true; 20 settings = { 21 cache.enabled = true; 22 admin_users = [ 23 { 24 name = "admin"; 25 email = "admin@example.org"; 26 # md5 for 'password' 27 password = "(md5)5F4DCC3B5AA765D61D8327DEB882CF99"; 28 } 29 ]; 30 }; 31 }; 32 }; 33 34 testScript = '' 35 import json 36 machine.wait_for_unit("artalk.service") 37 38 machine.wait_for_open_port(23366) 39 40 assert '${pkgs.artalk.version}' in machine.succeed("curl --fail --max-time 10 http://127.0.0.1:23366/api/v2/version") 41 42 # Get token 43 result = json.loads(machine.succeed(""" 44 curl --fail -X POST --json '{ 45 "email": "admin@example.org", 46 "password": "password" 47 }' 'http://127.0.0.1:23366/api/v2/auth/email/login' 48 """)) 49 token = result['token'] 50 51 # Test admin 52 machine.succeed(f""" 53 curl --fail -X POST --header 'Authorization: {token}' 'http://127.0.0.1:23366/api/v2/cache/flush' 54 """) 55 ''; 56}