2024-07-16 18:06:26 +02:00
|
|
|
package test
|
|
|
|
|
|
|
|
import (
|
|
|
|
tt "blackforestbytes.com/simplecloudnotifier/test/util"
|
|
|
|
"fmt"
|
2024-09-15 17:38:05 +02:00
|
|
|
"github.com/gin-gonic/gin"
|
2024-07-16 18:06:26 +02:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestResponseChannel(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[0].AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s", data.User[0].UID, data.User[0].Channels[0]))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[channel]", response, map[string]any{
|
|
|
|
"channel_id": "id",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"internal_name": "string",
|
|
|
|
"display_name": "string",
|
|
|
|
"description_name": "null",
|
|
|
|
"subscribe_key": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastsent": "rfc3339",
|
|
|
|
"messages_sent": "int",
|
|
|
|
"subscription": map[string]any{
|
|
|
|
"subscription_id": "id",
|
|
|
|
"subscriber_user_id": "id",
|
|
|
|
"channel_owner_user_id": "id",
|
|
|
|
"channel_id": "id",
|
|
|
|
"channel_internal_name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"confirmed": "bool",
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseClient(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[2].AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/clients/%s", data.User[2].UID, data.User[2].Clients[0]))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[client]", response, map[string]any{
|
|
|
|
"client_id": "id",
|
|
|
|
"user_id": "id",
|
|
|
|
"type": "string",
|
|
|
|
"fcm_token": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"agent_model": "string",
|
|
|
|
"agent_version": "string",
|
|
|
|
"name": "string|null",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
func TestResponseKeyToken1(t *testing.T) {
|
2024-07-16 18:06:26 +02:00
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[0].AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/keys/%s", data.User[0].UID, data.User[0].Keys[0]))
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
tt.AssertJsonStructureMatch(t, "json[key]", response, map[string]any{
|
|
|
|
"keytoken_id": "id",
|
|
|
|
"name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastused": "rfc3339|null",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"all_channels": "bool",
|
|
|
|
"channels": []any{"string"},
|
|
|
|
"permissions": "string",
|
|
|
|
"messages_sent": "int",
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseKeyToken2(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitSingleData(t, ws)
|
|
|
|
|
|
|
|
chan1 := tt.RequestAuthPost[gin.H](t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels", data.UID), gin.H{
|
|
|
|
"name": "TestChan1asdf",
|
|
|
|
})
|
|
|
|
|
|
|
|
type keyobj struct {
|
|
|
|
KeytokenId string `json:"keytoken_id"`
|
|
|
|
}
|
|
|
|
k0 := tt.RequestAuthPost[keyobj](t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/keys", data.UID), gin.H{
|
|
|
|
"all_channels": false,
|
|
|
|
"channels": []string{chan1["channel_id"].(string)},
|
|
|
|
"name": "TKey1",
|
|
|
|
"permissions": "CS",
|
|
|
|
})
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/keys/%s", data.UID, k0.KeytokenId))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[key]", response, map[string]any{
|
|
|
|
"keytoken_id": "id",
|
|
|
|
"name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastused": "rfc3339|null",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"all_channels": "bool",
|
|
|
|
"channels": []any{"string"},
|
|
|
|
"permissions": "string",
|
|
|
|
"messages_sent": "int",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
2024-09-15 21:07:46 +02:00
|
|
|
func TestResponseKeyToken3(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitSingleData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/keys/current", data.UID))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[key]", response, map[string]any{
|
|
|
|
"keytoken_id": "id",
|
|
|
|
"name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastused": "rfc3339|null",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"all_channels": "bool",
|
|
|
|
"channels": []any{"string"},
|
|
|
|
"permissions": "string",
|
|
|
|
"messages_sent": "int",
|
|
|
|
"token": "string",
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseKeyToken4(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitSingleData(t, ws)
|
|
|
|
|
|
|
|
chan1 := tt.RequestAuthPost[gin.H](t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels", data.UID), gin.H{
|
|
|
|
"name": "TestChan1asdf",
|
|
|
|
})
|
|
|
|
|
|
|
|
response := tt.RequestAuthPostRaw(t, data.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/keys", data.UID), gin.H{
|
|
|
|
"all_channels": false,
|
|
|
|
"channels": []string{chan1["channel_id"].(string)},
|
|
|
|
"name": "TKey1",
|
|
|
|
"permissions": "CS",
|
|
|
|
})
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[key]", response, map[string]any{
|
|
|
|
"keytoken_id": "id",
|
|
|
|
"name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastused": "rfc3339|null",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"all_channels": "bool",
|
|
|
|
"channels": []any{"string"},
|
|
|
|
"permissions": "string",
|
|
|
|
"messages_sent": "int",
|
|
|
|
"token": "string",
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-07-16 18:06:26 +02:00
|
|
|
func TestResponseMessage(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[0].AdminKey, baseUrl, fmt.Sprintf("/api/v2/messages/%s", data.User[0].Messages[0]))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[message]", response, map[string]any{
|
|
|
|
"message_id": "id",
|
|
|
|
"sender_user_id": "id",
|
|
|
|
"channel_internal_name": "string",
|
|
|
|
"channel_id": "id",
|
|
|
|
"sender_name": "string",
|
|
|
|
"sender_ip": "string",
|
|
|
|
"timestamp": "rfc3339",
|
|
|
|
"title": "string",
|
|
|
|
"content": "null",
|
|
|
|
"priority": "int",
|
|
|
|
"usr_message_id": "null",
|
|
|
|
"used_key_id": "id",
|
|
|
|
"trimmed": "bool",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseSubscription(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[0].AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", data.User[0].UID, data.User[0].Subscriptions[0]))
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
tt.AssertJsonStructureMatch(t, "json[subscription]", response, map[string]any{
|
|
|
|
"subscription_id": "id",
|
|
|
|
"subscriber_user_id": "id",
|
|
|
|
"channel_owner_user_id": "id",
|
|
|
|
"channel_id": "id",
|
|
|
|
"channel_internal_name": "string",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"confirmed": "bool",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseUser(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[0].AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s", data.User[0].UID))
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
tt.AssertJsonStructureMatch(t, "json[user]", response, map[string]any{
|
|
|
|
"user_id": "id",
|
|
|
|
"username": "null",
|
|
|
|
"timestamp_created": "rfc3339",
|
|
|
|
"timestamp_lastread": "null",
|
|
|
|
"timestamp_lastsent": "rfc3339",
|
|
|
|
"messages_sent": "int",
|
|
|
|
"quota_used": "int",
|
|
|
|
"quota_remaining": "int",
|
|
|
|
"quota_max": "int",
|
|
|
|
"is_pro": "bool",
|
|
|
|
"default_channel": "string",
|
|
|
|
"max_body_size": "int",
|
|
|
|
"max_title_length": "int",
|
|
|
|
"default_priority": "int",
|
|
|
|
"max_channel_name_length": "int",
|
|
|
|
"max_channel_description_length": "int",
|
|
|
|
"max_sender_name_length": "int",
|
|
|
|
"max_user_message_id_length": "int",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseChannelPreview(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[1].AdminKey, baseUrl, fmt.Sprintf("/api/v2/preview/channels/%s", data.User[0].Channels[0]))
|
|
|
|
|
|
|
|
tt.AssertJsonStructureMatch(t, "json[channel]", response, map[string]any{
|
2024-09-15 17:38:05 +02:00
|
|
|
"channel_id": "id",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"internal_name": "string",
|
|
|
|
"display_name": "string",
|
|
|
|
"description_name": "string|null",
|
2024-07-16 18:06:26 +02:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseUserPreview(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[1].AdminKey, baseUrl, fmt.Sprintf("/api/v2/preview/users/%s", data.User[0].UID))
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
tt.AssertJsonStructureMatch(t, "json[user]", response, map[string]any{
|
|
|
|
"user_id": "id",
|
|
|
|
"username": "string|null",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponseKeyTokenPreview(t *testing.T) {
|
|
|
|
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
|
|
|
defer stop()
|
|
|
|
|
|
|
|
data := tt.InitDefaultData(t, ws)
|
|
|
|
|
|
|
|
response := tt.RequestAuthGetRaw(t, data.User[1].AdminKey, baseUrl, fmt.Sprintf("/api/v2/preview/keys/%s", data.User[0].Keys[0]))
|
|
|
|
|
2024-09-15 17:38:05 +02:00
|
|
|
tt.AssertJsonStructureMatch(t, "json[key]", response, map[string]any{
|
|
|
|
"keytoken_id": "id",
|
|
|
|
"name": "string",
|
|
|
|
"owner_user_id": "id",
|
|
|
|
"all_channels": "bool",
|
|
|
|
"channels": []any{"id"},
|
|
|
|
"permissions": "string",
|
|
|
|
})
|
2024-07-16 18:06:26 +02:00
|
|
|
}
|