Add various deleted flags to entities | Add active to subscriptions | Add DeleteUser && DeleteChannel endpoints [skip-tests]
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
tt "blackforestbytes.com/simplecloudnotifier/test/util"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||||
"math/rand/v2"
|
||||
"net/url"
|
||||
"strings"
|
||||
@@ -1807,3 +1808,176 @@ func TestSendWithPermissionSendKey(t *testing.T) {
|
||||
func TestSendDeliveryRetry(t *testing.T) {
|
||||
t.SkipNow() //TODO
|
||||
}
|
||||
|
||||
func TestDeactivatedSubscriptionReceiveMessage(t *testing.T) {
|
||||
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
||||
defer stop()
|
||||
data := tt.InitDefaultData(t, ws)
|
||||
|
||||
type subobj struct {
|
||||
ChannelId string `json:"channel_id"`
|
||||
ChannelInternalName string `json:"channel_internal_name"`
|
||||
ChannelOwnerUserId string `json:"channel_owner_user_id"`
|
||||
Confirmed bool `json:"confirmed"`
|
||||
Active bool `json:"active"`
|
||||
SubscriberUserId string `json:"subscriber_user_id"`
|
||||
SubscriptionId string `json:"subscription_id"`
|
||||
TimestampCreated string `json:"timestamp_created"`
|
||||
}
|
||||
|
||||
pusher := ws.Pusher.(*push.TestSink)
|
||||
pusher.Clear()
|
||||
|
||||
user14 := data.User[14] // Subscriber
|
||||
user15 := data.User[15] // Owner
|
||||
chanName := "chan_other_accepted"
|
||||
|
||||
subscriptionID, _ := tt.FindSubscriptionByChanName(t, baseUrl, user14, user15.UID, chanName)
|
||||
|
||||
gsub0 := tt.RequestAuthGet[subobj](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID))
|
||||
tt.AssertTrue(t, "gsub0.active", gsub0.Active)
|
||||
tt.AssertTrue(t, "gsub0.confirmed", gsub0.Confirmed)
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{"active": false})
|
||||
|
||||
gsub1 := tt.RequestAuthGet[subobj](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID))
|
||||
tt.AssertFalse(t, "gsub1.active", gsub1.Active)
|
||||
tt.AssertTrue(t, "gsub1.confirmed", gsub1.Confirmed)
|
||||
|
||||
// sub is active=false && confirmed=true
|
||||
{
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
pushObj := langext.ArrFirstOrNil(pusher.Data, func(d push.SinkData) bool { return d.Client.UserID.String() == user14.UID })
|
||||
|
||||
tt.AssertNil(t, "pushObj", pushObj)
|
||||
|
||||
pusher.Clear()
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{"active": true})
|
||||
|
||||
gsub2 := tt.RequestAuthGet[subobj](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID))
|
||||
tt.AssertTrue(t, "gsub1.active", gsub2.Active)
|
||||
tt.AssertTrue(t, "gsub1.confirmed", gsub2.Confirmed)
|
||||
|
||||
// sub is active=true && confirmed=true
|
||||
{
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
msg1 := tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
pushObj := langext.ArrFirstOrNil(pusher.Data, func(d push.SinkData) bool { return d.Client.UserID.String() == user14.UID })
|
||||
|
||||
tt.AssertNotNil(t, "pushObj", pushObj)
|
||||
tt.AssertStrRepEqual(t, "msg.title", newMessageTitle, pushObj.Message.Title)
|
||||
tt.AssertStrRepEqual(t, "msg.content", nil, pushObj.Message.Content)
|
||||
tt.AssertStrRepEqual(t, "msg.scn_msg_id", msg1["scn_msg_id"], pushObj.Message.MessageID)
|
||||
tt.AssertStrRepEqual(t, "msg.scn_msg_id", user14.UID, pushObj.Client.UserID)
|
||||
|
||||
pusher.Clear()
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID), gin.H{"confirmed": false})
|
||||
|
||||
gsub3 := tt.RequestAuthGet[subobj](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID))
|
||||
tt.AssertTrue(t, "gsub1.active", gsub3.Active)
|
||||
tt.AssertFalse(t, "gsub1.confirmed", gsub3.Confirmed)
|
||||
|
||||
// sub is active=true && confirmed=false
|
||||
{
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
pushObj := langext.ArrFirstOrNil(pusher.Data, func(d push.SinkData) bool { return d.Client.UserID.String() == user14.UID })
|
||||
|
||||
tt.AssertNil(t, "pushObj", pushObj)
|
||||
|
||||
pusher.Clear()
|
||||
}
|
||||
|
||||
tt.RequestAuthDelete[gin.H](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID), gin.H{})
|
||||
|
||||
tt.RequestAuthGetShouldFail(t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), 404, apierr.SUBSCRIPTION_NOT_FOUND)
|
||||
tt.RequestAuthGetShouldFail(t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID), 404, apierr.SUBSCRIPTION_NOT_FOUND)
|
||||
|
||||
// sub is deleted
|
||||
{
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
pushObj := langext.ArrFirstOrNil(pusher.Data, func(d push.SinkData) bool { return d.Client.UserID.String() == user14.UID })
|
||||
|
||||
tt.AssertNil(t, "pushObj", pushObj)
|
||||
|
||||
pusher.Clear()
|
||||
}
|
||||
}
|
||||
|
||||
func TestActiveSubscriptionReceiveMessage(t *testing.T) {
|
||||
ws, baseUrl, stop := tt.StartSimpleWebserver(t)
|
||||
defer stop()
|
||||
data := tt.InitDefaultData(t, ws)
|
||||
|
||||
type subobj struct {
|
||||
ChannelId string `json:"channel_id"`
|
||||
ChannelInternalName string `json:"channel_internal_name"`
|
||||
ChannelOwnerUserId string `json:"channel_owner_user_id"`
|
||||
Confirmed bool `json:"confirmed"`
|
||||
Active bool `json:"active"`
|
||||
SubscriberUserId string `json:"subscriber_user_id"`
|
||||
SubscriptionId string `json:"subscription_id"`
|
||||
TimestampCreated string `json:"timestamp_created"`
|
||||
}
|
||||
|
||||
pusher := ws.Pusher.(*push.TestSink)
|
||||
pusher.Clear()
|
||||
|
||||
user14 := data.User[14] // Subscriber
|
||||
user15 := data.User[15] // Owner
|
||||
chanName := "chan_other_accepted"
|
||||
|
||||
subscriptionID, _ := tt.FindSubscriptionByChanName(t, baseUrl, user14, user15.UID, chanName)
|
||||
|
||||
gsub1 := tt.RequestAuthGet[subobj](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID))
|
||||
tt.AssertTrue(t, "gsub1.active", gsub1.Active)
|
||||
tt.AssertTrue(t, "gsub1.confirmed", gsub1.Confirmed)
|
||||
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
msg1 := tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
pushObj := langext.ArrFirstOrNil(pusher.Data, func(d push.SinkData) bool { return d.Client.UserID.String() == user14.UID })
|
||||
|
||||
tt.AssertNotNil(t, "pushObj", pushObj)
|
||||
tt.AssertStrRepEqual(t, "msg.title", newMessageTitle, pushObj.Message.Title)
|
||||
tt.AssertStrRepEqual(t, "msg.content", nil, pushObj.Message.Content)
|
||||
tt.AssertStrRepEqual(t, "msg.scn_msg_id", msg1["scn_msg_id"], pushObj.Message.MessageID)
|
||||
tt.AssertStrRepEqual(t, "msg.scn_msg_id", user14.UID, pushObj.Client.UserID)
|
||||
|
||||
pusher.Clear()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user