nixos/tests/rmfakecloud: new test

This commit is contained in:
Dominique Martinet 2024-11-18 22:56:12 +09:00
parent 64a13b7609
commit f27f1e0931
3 changed files with 71 additions and 0 deletions

View File

@ -879,6 +879,7 @@ in {
retroarch = handleTest ./retroarch.nix {};
rke2 = handleTestOn ["aarch64-linux" "x86_64-linux"] ./rke2 {};
rkvm = handleTest ./rkvm {};
rmfakecloud = runTest ./rmfakecloud.nix;
robustirc-bridge = handleTest ./robustirc-bridge.nix {};
roundcube = handleTest ./roundcube.nix {};
rosenpass = handleTest ./rosenpass.nix {};

View File

@ -0,0 +1,67 @@
{ pkgs, ... }:
{
name = "rmfakecloud";
meta = with pkgs.lib.maintainers; {
maintainers = [ martinetd ];
};
nodes.machine = {
services.rmfakecloud = {
enable = true;
storageUrl = "https://local.appspot.com";
};
};
testScript = ''
machine.wait_for_unit("rmfakecloud.service")
machine.wait_for_open_port(3000)
# first login creates user
login_token = machine.succeed("""
curl -sSf -b cookie -c cookie -H "Content-Type: application/json" \
-d'{"email":"test","password":"test"}' -X POST \
http://localhost:3000/ui/api/login
""")
# subsequent different pass or mail should fail, but same login works
machine.fail("""
curl -sSf -H "Content-Type: application/json" \
-d'{"email":"test","password":"test2"}' -X POST \
http://localhost:3000/ui/api/login
""")
machine.fail("""
curl -sSf -H "Content-Type: application/json" \
-d'{"email":"test2","password":"test"}' -X POST
http://localhost:3000/ui/api/login
""")
machine.succeed("""
curl -sSf -H "Content-Type: application/json" \
-d'{"email":"test","password":"test"}' -X POST \
http://localhost:3000/ui/api/login
""")
# can get code from cookie or bearer
machine.succeed("""
curl -sSf -b cookie -c cookie http://localhost:3000/ui/api/newcode
""")
newcode = machine.succeed(f"""
curl -sSf -H "Authorization: Bearer {login_token}" \
http://localhost:3000/ui/api/newcode
""").strip('"')
# ... but not junk
machine.fail(f"""
curl -sSf -H "Authorization: Bearer abc{login_token}" \
http://localhost:3000/ui/api/newcode
""")
# can connect "device" with said code
machine.succeed(f"""
curl -sSf -d '{{"code":"{newcode}", "deviceDesc": "desc", "deviceID":"rm100-123"}}' \
http://localhost:3000/token/json/2/device/new
""")
# for future improvements
machine.log(machine.execute("systemd-analyze security rmfakecloud.service")[1])
'';
}

View File

@ -4,6 +4,7 @@
buildGoModule,
callPackage,
enableWebui ? true,
nixosTests,
}:
buildGoModule rec {
@ -38,6 +39,8 @@ buildGoModule rec {
"-X main.version=v${version}"
];
passthru.tests.rmfakecloud = nixosTests.rmfakecloud;
meta = with lib; {
description = "Host your own cloud for the Remarkable";
homepage = "https://ddvk.github.io/rmfakecloud/";