package api_test import ( "net/http" "testing" "atlas9.dev/c/core" "atlas9.dev/c/core/assert" "atlas9.dev/c/demo/api" "atlas9.dev/c/demo/bots" ) func TestBotsApi_Save(t *testing.T) { s := startServer(t) var res api.Bots_SaveRes httpRes := s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ Tenant: defaultTenant, Name: "Test Bot", }, }, &res) assert.Eq(t, httpRes.StatusCode, http.StatusOK) assert.Eq(t, res.Bot.Name, "Test Bot") assert.Eq(t, res.Bot.ID.IsEmpty(), false) } func TestBotsApi_Get(t *testing.T) { s := startServer(t) var saveRes api.Bots_SaveRes s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ Tenant: defaultTenant, Name: "Get Test Bot", }, }, &saveRes) var res api.Bots_GetRes httpRes := s.call(t, "/Bots_Get", api.Bots_GetReq{ ID: saveRes.Bot.ID, Tenant: defaultTenant, }, &res) assert.Eq(t, httpRes.StatusCode, http.StatusOK) assert.Eq(t, res.Bot.Name, "Get Test Bot") } func TestBotsApi_List(t *testing.T) { s := startServer(t) var saveRes1 api.Bots_SaveRes s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ Tenant: defaultTenant, Name: "Bot 1", }, }, &saveRes1) var saveRes2 api.Bots_SaveRes s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ Tenant: defaultTenant, Name: "Bot 2", }, }, &saveRes2) var res api.Bots_ListRes httpRes := s.call(t, "/Bots_List", api.Bots_ListReq{ Tenant: defaultTenant, Page: core.PageReq{}, }, &res) assert.Eq(t, httpRes.StatusCode, http.StatusOK) assert.Eq(t, len(res.Page.Items), 2) } func TestBotsApi_Delete(t *testing.T) { s := startServer(t) var saveRes api.Bots_SaveRes s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ Tenant: defaultTenant, Name: "Delete Test Bot", }, }, &saveRes) httpRes := s.call(t, "/Bots_Delete", api.Bots_DeleteReq{ ID: saveRes.Bot.ID, Tenant: defaultTenant, }, nil) assert.Eq(t, httpRes.StatusCode, http.StatusOK) var getRes api.Bots_GetRes getResRes := s.call(t, "/Bots_Get", api.Bots_GetReq{ ID: saveRes.Bot.ID, Tenant: defaultTenant, }, &getRes) assert.Eq(t, getResRes.StatusCode, http.StatusNotFound) } func TestBotsApi_Unauthorized(t *testing.T) { s := startServer(t) s.logout(t) var res api.Bots_SaveRes httpRes := s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ ID: core.NewID("bot1"), Tenant: defaultTenant, Name: "Unauthorized Bot", }, }, &res) assert.Eq(t, httpRes.StatusCode, http.StatusForbidden) } func TestBotsApi_SaveWithExpiration(t *testing.T) { s := startServer(t) var res api.Bots_SaveRes httpRes := s.call(t, "/Bots_Save", api.Bots_SaveReq{ Bot: bots.Bot{ ID: core.NewID("bot1"), Tenant: defaultTenant, Name: "Bot With Expiration", }, }, &res) assert.Eq(t, httpRes.StatusCode, http.StatusOK) assert.Eq(t, res.Bot.Name, "Bot With Expiration") }