(lambda() `((project . "wikimusic-api") (branch-name . "trunk") (task . "stack-test") (clone-url . "https://codeberg.org/jjba23/wikimusic-api")))
starting new job... - running command: cd /var/log/byggsteg/job-clone/wikimusic-api/trunk && git pull Already up to date. - running command: cd /var/log/byggsteg/job-clone/wikimusic-api/trunk && stack --nix test starts WikiMusic application properly Starting REST API ..."About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] starts and shuts down the application properly [✔] Starting REST API ..."About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /system-information HTTP/1.1" 200 - "" "" Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:17 GMT"),("Server","Warp/3.3.31"),("Content-Type","application/json;charset=utf-8")], responseBody = "{\"processStartedAt\":\"2025-01-06T18:26:17.617527135Z\",\"reportedVersion\":\"\"}", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 45825 secure = False requestHeaders = [] path = "/system-information" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} checks that the system information route is reachable [✔] Starting REST API ..."About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /songs/identifier/abc HTTP/1.1" 400 - "" "" Response {responseStatus = Status {statusCode = 400, statusMessage = "Bad Request"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "invalid UUID", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 45008 secure = False requestHeaders = [] path = "/songs/identifier/abc" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /artists/identifier/abc HTTP/1.1" 400 - "" "" Response {responseStatus = Status {statusCode = 400, statusMessage = "Bad Request"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "invalid UUID", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 45008 secure = False requestHeaders = [] path = "/artists/identifier/abc" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /genres/identifier/abc HTTP/1.1" 400 - "" "" Response {responseStatus = Status {statusCode = 400, statusMessage = "Bad Request"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "invalid UUID", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 45008 secure = False requestHeaders = [] path = "/genres/identifier/abc" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} checks that invalid UUIDs always return a 400 [✔] Starting REST API ..."About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /songs HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/songs" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /songs/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/songs/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /artists HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/artists" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /artists/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/artists/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /genres HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/genres" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} 127.0.0.1 - - [06/Jan/2025:19:26:17 +0100] "GET /genres/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a HTTP/1.1" 401 - "" "" Response {responseStatus = Status {statusCode = 401, statusMessage = "Unauthorized"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:18 GMT"),("Server","Warp/3.3.31")], responseBody = "", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 57359 secure = False requestHeaders = [] path = "/genres/identifier/c19e4f56-7c06-437d-b8f7-59d13dd53c9a" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} checks that protected routes are returning 401 when not logged in [✔] Starting REST API ..."About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] INSERT INTO "users"("identifier", "display_name", "email_address", "password_hash", "password_reset_token", "auth_token", "latest_login_at", "latest_login_device", "avatar_url", "created_at", "last_edited_at", "description") VALUES (?, ?, ?, ?, NULL, ?, NULL, NULL, NULL, ?, NULL, ?); -- With values: [SQLText "6d5f7167-d247-439e-b6ab-46fbe40538ed",SQLText "edhbufpxoqbjkxtg",SQLText "edhbufpxoqbjkxtg@gmail.com",SQLText "$2b$10$P6KwZUM5mEYhZPuGFLvJCehcOGGArwbkKhRGfxeTnr.ssUNjSXbn6",SQLText "gtxkjbqoxpfubhde-gtxkjbqoxpfubhde",SQLText "2025-01-06 18:26:18.762280606",SQLText "iozuxpawxwtvfecp"] INSERT INTO "user_roles"("identifier", "user_identifier", "role_id", "created_at") VALUES (?, ?, ?, ?); -- With values: [SQLText "0f64eb64-94a2-42eb-9913-655b5324205d",SQLText "6d5f7167-d247-439e-b6ab-46fbe40538ed",SQLText "wm::demo",SQLText "2025-01-06 18:26:18.762280606"] SELECT "t0"."identifier" AS "res0", "t0"."display_name" AS "res1", "t0"."email_address" AS "res2", "t0"."password_hash" AS "res3", "t0"."password_reset_token" AS "res4", "t0"."auth_token" AS "res5", "t0"."latest_login_at" AS "res6", "t0"."latest_login_device" AS "res7", "t0"."avatar_url" AS "res8", "t0"."created_at" AS "res9", "t0"."last_edited_at" AS "res10", "t0"."description" AS "res11" FROM "users" AS "t0" WHERE CASE WHEN (("t0"."auth_token") IS NULL) AND ((?) IS NULL) THEN ? WHEN (("t0"."auth_token") IS NULL) OR ((?) IS NULL) THEN ? ELSE ("t0"."auth_token")=(?) END; -- With values: [SQLText "gtxkjbqoxpfubhde-gtxkjbqoxpfubhde",SQLInteger 1,SQLText "gtxkjbqoxpfubhde-gtxkjbqoxpfubhde",SQLInteger 0,SQLText "gtxkjbqoxpfubhde-gtxkjbqoxpfubhde"] SELECT "t0"."identifier" AS "res0", "t0"."user_identifier" AS "res1", "t0"."role_id" AS "res2", "t0"."created_at" AS "res3" FROM "user_roles" AS "t0" WHERE ("t0"."user_identifier")=(?); -- With values: [SQLText "6d5f7167-d247-439e-b6ab-46fbe40538ed"] SELECT "t0"."identifier" AS "res0", "t0"."display_name" AS "res1", "t0"."music_key" AS "res2", "t0"."music_tuning" AS "res3", "t0"."music_creation_date" AS "res4", "t0"."album_name" AS "res5", "t0"."album_info_link" AS "res6", "t0"."created_by" AS "res7", "t0"."visibility_status" AS "res8", "t0"."approved_by" AS "res9", "t0"."created_at" AS "res10", "t0"."last_edited_at" AS "res11", "t0"."views" AS "res12", "t0"."description" AS "res13" FROM "songs" AS "t0" ORDER BY "t0"."created_at" DESC LIMIT 25 OFFSET 0; -- With values: [] SELECT "t0"."identifier" AS "res0", "t0"."song_identifier" AS "res1", "t0"."created_by" AS "res2", "t0"."spotify_url" AS "res3", "t0"."youtube_url" AS "res4", "t0"."soundcloud_url" AS "res5", "t0"."wikipedia_url" AS "res6", "t0"."created_at" AS "res7", "t0"."last_edited_at" AS "res8" FROM "song_external_sources" AS "t0" WHERE ?; -- With values: [SQLInteger 0] 127.0.0.1 - - [06/Jan/2025:19:26:19 +0100] "GET /songs HTTP/1.1" 200 - "" "" Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:19 GMT"),("Server","Warp/3.3.31"),("Content-Type","application/json;charset=utf-8")], responseBody = "{\"songs\":{},\"sortOrder\":[]}", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 64042 secure = False requestHeaders = [("x-wikimusic-auth","gtxkjbqoxpfubhde-gtxkjbqoxpfubhde")] path = "/songs" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} receives empty songs list when a user (demo) exists but no data exists in DB [✔] "About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] Starting REST API ...INSERT INTO "users"("identifier", "display_name", "email_address", "password_hash", "password_reset_token", "auth_token", "latest_login_at", "latest_login_device", "avatar_url", "created_at", "last_edited_at", "description") VALUES (?, ?, ?, ?, NULL, ?, NULL, NULL, NULL, ?, NULL, ?); -- With values: [SQLText "04ef6544-8e31-4771-bb0e-604bf8eb9c87",SQLText "vlhvlopvmbavvbtx",SQLText "vlhvlopvmbavvbtx@gmail.com",SQLText "$2b$10$FUu4hZ65yTyM5Y/PaiDTvuawBUoN0q2eXBtCRuJNBZgtPPfljnJOa",SQLText "xtbvvabmvpolvhlv-xtbvvabmvpolvhlv",SQLText "2025-01-06 18:26:19.316183642",SQLText "kpevlxagyeixrfjl"] INSERT INTO "user_roles"("identifier", "user_identifier", "role_id", "created_at") VALUES (?, ?, ?, ?); -- With values: [SQLText "9a7cd274-1812-411b-b649-d2803dc766b2",SQLText "04ef6544-8e31-4771-bb0e-604bf8eb9c87",SQLText "wm::demo",SQLText "2025-01-06 18:26:19.316183642"] SELECT "t0"."identifier" AS "res0", "t0"."display_name" AS "res1", "t0"."email_address" AS "res2", "t0"."password_hash" AS "res3", "t0"."password_reset_token" AS "res4", "t0"."auth_token" AS "res5", "t0"."latest_login_at" AS "res6", "t0"."latest_login_device" AS "res7", "t0"."avatar_url" AS "res8", "t0"."created_at" AS "res9", "t0"."last_edited_at" AS "res10", "t0"."description" AS "res11" FROM "users" AS "t0" WHERE CASE WHEN (("t0"."auth_token") IS NULL) AND ((?) IS NULL) THEN ? WHEN (("t0"."auth_token") IS NULL) OR ((?) IS NULL) THEN ? ELSE ("t0"."auth_token")=(?) END; -- With values: [SQLText "xtbvvabmvpolvhlv-xtbvvabmvpolvhlv",SQLInteger 1,SQLText "xtbvvabmvpolvhlv-xtbvvabmvpolvhlv",SQLInteger 0,SQLText "xtbvvabmvpolvhlv-xtbvvabmvpolvhlv"] SELECT "t0"."identifier" AS "res0", "t0"."user_identifier" AS "res1", "t0"."role_id" AS "res2", "t0"."created_at" AS "res3" FROM "user_roles" AS "t0" WHERE ("t0"."user_identifier")=(?); -- With values: [SQLText "04ef6544-8e31-4771-bb0e-604bf8eb9c87"] SELECT "t0"."identifier" AS "res0", "t0"."parent_identifier" AS "res1", "t0"."display_name" AS "res2", "t0"."created_by" AS "res3", "t0"."visibility_status" AS "res4", "t0"."approved_by" AS "res5", "t0"."created_at" AS "res6", "t0"."last_edited_at" AS "res7", "t0"."views" AS "res8", "t0"."description" AS "res9" FROM "genres" AS "t0" ORDER BY "t0"."created_at" DESC LIMIT 25 OFFSET 0; -- With values: [] SELECT "t0"."identifier" AS "res0", "t0"."genre_identifier" AS "res1", "t0"."created_by" AS "res2", "t0"."spotify_url" AS "res3", "t0"."youtube_url" AS "res4", "t0"."soundcloud_url" AS "res5", "t0"."wikipedia_url" AS "res6", "t0"."created_at" AS "res7", "t0"."last_edited_at" AS "res8" FROM "genre_external_sources" AS "t0" WHERE ?; -- With values: [SQLInteger 0] 127.0.0.1 - - [06/Jan/2025:19:26:19 +0100] "GET /genres HTTP/1.1" 200 - "" "" Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:19 GMT"),("Server","Warp/3.3.31"),("Content-Type","application/json;charset=utf-8")], responseBody = "{\"genres\":{},\"sortOrder\":[]}", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 19031 secure = False requestHeaders = [("x-wikimusic-auth","xtbvvabmvpolvhlv-xtbvvabmvpolvhlv")] path = "/genres" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} receives empty genres list when a user (demo) exists but no data exists in DB [✔] "About to run migrations!" (0,"0-yggdrasil.sql") :| [(1,"1-initial-schema-definition.sql")] Starting REST API ...INSERT INTO "users"("identifier", "display_name", "email_address", "password_hash", "password_reset_token", "auth_token", "latest_login_at", "latest_login_device", "avatar_url", "created_at", "last_edited_at", "description") VALUES (?, ?, ?, ?, NULL, ?, NULL, NULL, NULL, ?, NULL, ?); -- With values: [SQLText "4c784efe-be44-494c-9f60-dd291a94b348",SQLText "hirhxzlckgezhjcv",SQLText "hirhxzlckgezhjcv@gmail.com",SQLText "$2b$10$MsdX/kIzPSuUYbx49Fz9c./X6o2m4K1XTsByAG5p7zjV5oyGtdZOi",SQLText "vcjhzegkclzxhrih-vcjhzegkclzxhrih",SQLText "2025-01-06 18:26:19.754809742",SQLText "ugivztapmeywhtgb"] INSERT INTO "user_roles"("identifier", "user_identifier", "role_id", "created_at") VALUES (?, ?, ?, ?); -- With values: [SQLText "153d20f1-283d-41dd-86b1-28aae3a95190",SQLText "4c784efe-be44-494c-9f60-dd291a94b348",SQLText "wm::demo",SQLText "2025-01-06 18:26:19.754809742"] SELECT "t0"."identifier" AS "res0", "t0"."display_name" AS "res1", "t0"."email_address" AS "res2", "t0"."password_hash" AS "res3", "t0"."password_reset_token" AS "res4", "t0"."auth_token" AS "res5", "t0"."latest_login_at" AS "res6", "t0"."latest_login_device" AS "res7", "t0"."avatar_url" AS "res8", "t0"."created_at" AS "res9", "t0"."last_edited_at" AS "res10", "t0"."description" AS "res11" FROM "users" AS "t0" WHERE CASE WHEN (("t0"."auth_token") IS NULL) AND ((?) IS NULL) THEN ? WHEN (("t0"."auth_token") IS NULL) OR ((?) IS NULL) THEN ? ELSE ("t0"."auth_token")=(?) END; -- With values: [SQLText "vcjhzegkclzxhrih-vcjhzegkclzxhrih",SQLInteger 1,SQLText "vcjhzegkclzxhrih-vcjhzegkclzxhrih",SQLInteger 0,SQLText "vcjhzegkclzxhrih-vcjhzegkclzxhrih"] SELECT "t0"."identifier" AS "res0", "t0"."user_identifier" AS "res1", "t0"."role_id" AS "res2", "t0"."created_at" AS "res3" FROM "user_roles" AS "t0" WHERE ("t0"."user_identifier")=(?); -- With values: [SQLText "4c784efe-be44-494c-9f60-dd291a94b348"] SELECT "t0"."identifier" AS "res0", "t0"."display_name" AS "res1", "t0"."created_by" AS "res2", "t0"."visibility_status" AS "res3", "t0"."approved_by" AS "res4", "t0"."created_at" AS "res5", "t0"."last_edited_at" AS "res6", "t0"."views" AS "res7", "t0"."description" AS "res8" FROM "artists" AS "t0" ORDER BY "t0"."created_at" DESC LIMIT 25 OFFSET 0; -- With values: [] SELECT "t0"."identifier" AS "res0", "t0"."artist_identifier" AS "res1", "t0"."created_by" AS "res2", "t0"."spotify_url" AS "res3", "t0"."youtube_url" AS "res4", "t0"."soundcloud_url" AS "res5", "t0"."wikipedia_url" AS "res6", "t0"."created_at" AS "res7", "t0"."last_edited_at" AS "res8" FROM "artist_external_sources" AS "t0" WHERE ?; -- With values: [SQLInteger 0] 127.0.0.1 - - [06/Jan/2025:19:26:19 +0100] "GET /artists HTTP/1.1" 200 - "" "" Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Transfer-Encoding","chunked"),("Date","Mon, 06 Jan 2025 18:26:20 GMT"),("Server","Warp/3.3.31"),("Content-Type","application/json;charset=utf-8")], responseBody = "{\"artists\":{},\"sortOrder\":[]}", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request { host = "127.0.0.1" port = 7446 secure = False requestHeaders = [("x-wikimusic-auth","vcjhzegkclzxhrih-vcjhzegkclzxhrih")] path = "/artists" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } , responseEarlyHints = []} receives empty artists list when a user (demo) exists but no data exists in DB [✔] Finished in 3.8709 seconds 7 examples, 0 failures - running command: cd /var/log/byggsteg/job-clone/wikimusic-api/trunk && stack --nix sdist --tar-dir .
byggsteg is de hackable Guile CI/CD systeem.
byggsteg is vrije software, beschikbaar onder de GNU GPL v3 of nieuwer.
find the source code here:
https://codeberg.org/jjba23/byggstegpowered by Guile Scheme, GNU Artanis, GNU Guix, TailwindCSS
Copyright © 2025 - Josep Bigorra & Mu Lei
byggsteg betekent “bouwstap” in het Noors.