at master 2.1 kB view raw
1{ pkgs, ... }: 2{ 3 name = "rmfakecloud"; 4 meta = with pkgs.lib.maintainers; { 5 maintainers = [ martinetd ]; 6 }; 7 8 nodes.machine = { 9 services.rmfakecloud = { 10 enable = true; 11 storageUrl = "https://local.appspot.com"; 12 }; 13 }; 14 15 testScript = '' 16 machine.wait_for_unit("rmfakecloud.service") 17 machine.wait_for_open_port(3000) 18 19 # first login creates user 20 login_token = machine.succeed(""" 21 curl -sSf -b cookie -c cookie -H "Content-Type: application/json" \ 22 -d'{"email":"test","password":"test"}' -X POST \ 23 http://localhost:3000/ui/api/login 24 """) 25 26 # subsequent different pass or mail should fail, but same login works 27 machine.fail(""" 28 curl -sSf -H "Content-Type: application/json" \ 29 -d'{"email":"test","password":"test2"}' -X POST \ 30 http://localhost:3000/ui/api/login 31 """) 32 machine.fail(""" 33 curl -sSf -H "Content-Type: application/json" \ 34 -d'{"email":"test2","password":"test"}' -X POST 35 http://localhost:3000/ui/api/login 36 """) 37 machine.succeed(""" 38 curl -sSf -H "Content-Type: application/json" \ 39 -d'{"email":"test","password":"test"}' -X POST \ 40 http://localhost:3000/ui/api/login 41 """) 42 43 # can get code from cookie or bearer 44 machine.succeed(""" 45 curl -sSf -b cookie -c cookie http://localhost:3000/ui/api/newcode 46 """) 47 newcode = machine.succeed(f""" 48 curl -sSf -H "Authorization: Bearer {login_token}" \ 49 http://localhost:3000/ui/api/newcode 50 """).strip('"') 51 52 # ... but not junk 53 machine.fail(f""" 54 curl -sSf -H "Authorization: Bearer abc{login_token}" \ 55 http://localhost:3000/ui/api/newcode 56 """) 57 58 # can connect "device" with said code 59 machine.succeed(f""" 60 curl -sSf -d '{{"code":"{newcode}", "deviceDesc": "desc", "deviceID":"rm100-123"}}' \ 61 http://localhost:3000/token/json/2/device/new 62 """) 63 64 # for future improvements 65 machine.log(machine.execute("systemd-analyze security rmfakecloud.service")[1]) 66 ''; 67}