Tests[RequestLogSimple]
This commit is contained in:
@@ -1,3 +1,126 @@
|
||||
package test
|
||||
|
||||
//TODO test requestlog
|
||||
import (
|
||||
ct "blackforestbytes.com/simplecloudnotifier/db/cursortoken"
|
||||
"blackforestbytes.com/simplecloudnotifier/models"
|
||||
tt "blackforestbytes.com/simplecloudnotifier/test/util"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/url"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestRequestLogSimple(t *testing.T) {
|
||||
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
||||
defer stop()
|
||||
|
||||
ctx := ws.NewSimpleTransactionContext(5 * time.Second)
|
||||
defer ctx.Cancel()
|
||||
|
||||
// Ping
|
||||
{
|
||||
tt.RequestGet[tt.Void](t, baseUrl, fmt.Sprintf("/api/ping"))
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
rl, _, err := ws.Database.Requests.ListRequestLogs(ctx, models.RequestLogFilter{}, nil, ct.Start())
|
||||
tt.TestFailIfErr(t, err)
|
||||
|
||||
tt.AssertEqual(t, "requestlog.count", 1, len(rl))
|
||||
|
||||
tt.AssertEqual(t, "requestlog[0].Method", "GET", rl[0].Method)
|
||||
tt.AssertEqual(t, "requestlog[0].KeyID", nil, rl[0].KeyID)
|
||||
tt.AssertEqual(t, "requestlog[0].UserID", nil, rl[0].UserID)
|
||||
tt.AssertEqual(t, "requestlog[0].Panicked", false, rl[0].Panicked)
|
||||
tt.AssertEqual(t, "requestlog[0].URI", "/api/ping", rl[0].URI)
|
||||
tt.AssertEqual(t, "requestlog[0].ResponseContentType", "application/json", rl[0].ResponseContentType)
|
||||
}
|
||||
|
||||
// HTMl request
|
||||
{
|
||||
tt.RequestRaw(t, baseUrl, fmt.Sprintf("/"))
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
rl, _, err := ws.Database.Requests.ListRequestLogs(ctx, models.RequestLogFilter{}, nil, ct.Start())
|
||||
tt.TestFailIfErr(t, err)
|
||||
|
||||
tt.AssertEqual(t, "requestlog.count", 2, len(rl))
|
||||
|
||||
tt.AssertEqual(t, "requestlog[0].Method", "GET", rl[0].Method)
|
||||
tt.AssertEqual(t, "requestlog[0].KeyID", nil, rl[0].KeyID)
|
||||
tt.AssertEqual(t, "requestlog[0].UserID", nil, rl[0].UserID)
|
||||
tt.AssertEqual(t, "requestlog[0].Panicked", false, rl[0].Panicked)
|
||||
tt.AssertEqual(t, "requestlog[0].URI", "/", rl[0].URI)
|
||||
tt.AssertEqual(t, "requestlog[0].ResponseContentType", "text/html", rl[0].ResponseContentType)
|
||||
}
|
||||
|
||||
type R struct {
|
||||
Clients []struct {
|
||||
ClientId string `json:"client_id"`
|
||||
UserId string `json:"user_id"`
|
||||
} `json:"clients"`
|
||||
ReadKey string `json:"read_key"`
|
||||
SendKey string `json:"send_key"`
|
||||
AdminKey string `json:"admin_key"`
|
||||
UserId string `json:"user_id"`
|
||||
}
|
||||
usr := tt.RequestPost[R](t, baseUrl, "/api/v2/users", gin.H{
|
||||
"agent_model": "DUMMY_PHONE",
|
||||
"agent_version": "4X",
|
||||
"client_type": "ANDROID",
|
||||
"fcm_token": "DUMMY_FCM",
|
||||
})
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
// API request
|
||||
{
|
||||
|
||||
tt.RequestAuthGet[R](t, usr.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s", usr.UserId))
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
rl, _, err := ws.Database.Requests.ListRequestLogs(ctx, models.RequestLogFilter{}, nil, ct.Start())
|
||||
tt.TestFailIfErr(t, err)
|
||||
|
||||
tt.AssertEqual(t, "requestlog.count", 4, len(rl))
|
||||
|
||||
tt.AssertEqual(t, "requestlog[0].Method", "GET", rl[0].Method)
|
||||
tt.AssertNotEqual(t, "requestlog[0].KeyID", nil, rl[0].KeyID)
|
||||
tt.AssertStrRepEqual(t, "requestlog[0].UserID", usr.UserId, rl[0].UserID)
|
||||
tt.AssertEqual(t, "requestlog[0].Panicked", false, rl[0].Panicked)
|
||||
tt.AssertStrRepEqual(t, "requestlog[0].Permissions", "A", rl[0].Permissions)
|
||||
tt.AssertEqual(t, "requestlog[0].URI", fmt.Sprintf("/api/v2/users/%s", usr.UserId), rl[0].URI)
|
||||
tt.AssertEqual(t, "requestlog[0].ResponseContentType", "application/json", rl[0].ResponseContentType)
|
||||
}
|
||||
|
||||
// Send request
|
||||
{
|
||||
tt.RequestPost[gin.H](t, baseUrl, fmt.Sprintf("/?user_id=%s&key=%s&title=%s", usr.UserId, usr.SendKey, url.QueryEscape("Hello World 2134")), nil)
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
rl, _, err := ws.Database.Requests.ListRequestLogs(ctx, models.RequestLogFilter{}, nil, ct.Start())
|
||||
tt.TestFailIfErr(t, err)
|
||||
|
||||
tt.AssertEqual(t, "requestlog.count", 5, len(rl))
|
||||
|
||||
tt.AssertEqual(t, "requestlog[0].Method", "POST", rl[0].Method)
|
||||
tt.AssertEqual(t, "requestlog[0].UserID", nil, rl[0].UserID)
|
||||
tt.AssertEqual(t, "requestlog[0].ResponseContentType", "application/json", rl[0].ResponseContentType)
|
||||
}
|
||||
|
||||
// Failed request
|
||||
{
|
||||
tt.RequestAuthGetShouldFail(t, usr.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s", models.NewUserID()), 0, 0)
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
rl, _, err := ws.Database.Requests.ListRequestLogs(ctx, models.RequestLogFilter{}, nil, ct.Start())
|
||||
tt.TestFailIfErr(t, err)
|
||||
|
||||
tt.AssertEqual(t, "requestlog.count", 6, len(rl))
|
||||
|
||||
tt.AssertEqual(t, "requestlog[0].Method", "GET", rl[0].Method)
|
||||
tt.AssertStrRepEqual(t, "requestlog[0].UserID", usr.UserId, rl[0].UserID)
|
||||
tt.AssertEqual(t, "requestlog[0].ResponseContentType", "application/json", rl[0].ResponseContentType)
|
||||
tt.AssertStrRepEqual(t, "requestlog[0].ResponseStatuscode", 401, rl[0].ResponseStatuscode)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user