require "json" module Guff::API::TestAPI private def do_test_version( context : HTTP::Server::Context, args : Hash(String, String) ) {version: Guff::VERSION}.to_json end private def do_test_get_posts( context : HTTP::Server::Context, args : Hash(String, String) ) [{foo: "bar"}, {foo: "asdf"}].to_json end MOCK_USERS = [{ "id": "0", "name": "Guest", "active": true, }, { "id": "1", "name": "Admin", "active": false, }, { "id": "2", "name": "Test User 1", "active": false, }, { "id": "3", "name": "Test User 2", "active": false, }, { "id": "4", "name": "Test User<<<<>>>>>&&&&&&2", "active": false, }] private def do_test_get_users( context : HTTP::Server::Context, args : Hash(String, String) ) user_id = "0" with_session(context) do |session| user_id = session["user_id"]? || "0" false end # build result users = MOCK_USERS.map { |row| row.merge({ "active": (row["id"] == user_id) }) } # return result { "users": users } end private def do_test_set_user( context : HTTP::Server::Context, args : Hash(String, String) ) with_session(context) do |session| session["user_id"] = args["user_id"] true end { ok: true } end private def do_test_error( context : HTTP::Server::Context, args : Hash(String, String) ) raise "some random error" end private def do_test_add_user( context : HTTP::Server::Context, args : Hash(String, String) ) user_id = @models.user.add_user(args["name"].not_nil!, active: args["active"]? ? args["active"] == "t" : nil, role: args["role"]?, email: args["email"]?, password: args["password"]?, ) { "ok": true, "user_id": user_id } end private def do_test_update_user( context : HTTP::Server::Context, args : Hash(String, String) ) @models.user.update_user(args["user_id"].to_i64, name: args["name"]? ? args["name"] : nil, active: args["active"]? ? args["active"] == "t" : nil, role: args["role"]? ? args["role"] : nil ) { "ok": true } end private def do_test_add_login( context : HTTP::Server::Context, args : Hash(String, String) ) @models.user.add_login(args["user_id"].to_i, email: args["name"], password: args["password"], ) { "ok": true } end private def do_test_remove_login( context : HTTP::Server::Context, args : Hash(String, String) ) @models.user.remove_login(args["user_id"].to_i) { "ok": true } end private def do_test_login( context : HTTP::Server::Context, args : Hash(String, String) ) user_id = @models.user.login(args["email"], args["password"]).to_i { "ok": true, "user_id": user_id } end end