2023-10-26 20:31:20 +00:00
|
|
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
2023-04-30 03:27:25 +00:00
|
|
|
name = "kavita";
|
|
|
|
meta = with pkgs.lib.maintainers; {
|
|
|
|
maintainers = [ misterio77 ];
|
|
|
|
};
|
|
|
|
|
|
|
|
nodes = {
|
|
|
|
kavita = { config, pkgs, ... }: {
|
|
|
|
services.kavita = {
|
|
|
|
enable = true;
|
2023-10-26 20:31:20 +00:00
|
|
|
tokenKeyFile = builtins.toFile "kavita.key" "d26ba694b455271a8872415830fb7b5c58f8da98f9ef7f58b2ca4c34bd406512";
|
2023-04-30 03:27:25 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-10-26 20:31:20 +00:00
|
|
|
testScript =
|
|
|
|
let
|
|
|
|
regUrl = "http://kavita:5000/api/Account/register";
|
|
|
|
loginUrl = "http://kavita:5000/api/Account/login";
|
|
|
|
localeUrl = "http://kavita:5000/api/locale";
|
|
|
|
in
|
|
|
|
''
|
|
|
|
import json
|
2023-04-30 03:27:25 +00:00
|
|
|
|
2023-10-26 20:31:20 +00:00
|
|
|
kavita.start
|
|
|
|
kavita.wait_for_unit("kavita.service")
|
2023-04-30 03:27:25 +00:00
|
|
|
|
2023-10-26 20:31:20 +00:00
|
|
|
# Check that static assets are working
|
|
|
|
kavita.wait_until_succeeds("curl http://kavita:5000/site.webmanifest | grep Kavita")
|
|
|
|
|
|
|
|
# Check that registration is working
|
|
|
|
kavita.succeed("""curl -fX POST ${regUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'""")
|
|
|
|
# But only for the first one
|
|
|
|
kavita.fail("""curl -fX POST ${regUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'""")
|
|
|
|
|
|
|
|
# Log in and retrieve token
|
|
|
|
session = json.loads(kavita.succeed("""curl -fX POST ${loginUrl} --json '{"username": "foo", "password": "correcthorsebatterystaple"}'"""))
|
|
|
|
# Check list of locales
|
|
|
|
locales = json.loads(kavita.succeed(f"curl -fX GET ${localeUrl} -H 'Authorization: Bearer {session['token']}'"))
|
|
|
|
assert len(locales) > 0, "expected a list of locales"
|
|
|
|
'';
|
2023-04-30 03:27:25 +00:00
|
|
|
})
|