Add various deleted flags to entities | Add active to subscriptions | Add DeleteUser && DeleteChannel endpoints [skip-tests]
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"blackforestbytes.com/simplecloudnotifier/api/apierr"
|
||||
"blackforestbytes.com/simplecloudnotifier/models"
|
||||
tt "blackforestbytes.com/simplecloudnotifier/test/util"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||||
"net/url"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"blackforestbytes.com/simplecloudnotifier/api/apierr"
|
||||
"blackforestbytes.com/simplecloudnotifier/models"
|
||||
tt "blackforestbytes.com/simplecloudnotifier/test/util"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||||
)
|
||||
|
||||
func TestSearchMessageFTSSimple(t *testing.T) {
|
||||
@@ -901,3 +902,293 @@ func TestListMessagesStringSearch(t *testing.T) {
|
||||
tt.AssertEqual(t, "msgList.filter["+testdata.Name+"].len", testdata.Count, msgList.TotalCount)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeactivatedSubscriptionListMessages(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"`
|
||||
}
|
||||
type msg struct {
|
||||
Title string `json:"title"`
|
||||
}
|
||||
type mglist struct {
|
||||
Messages []msg `json:"messages"`
|
||||
}
|
||||
|
||||
user14 := data.User[14] // Subscriber
|
||||
user15 := data.User[15] // Owner
|
||||
chanName := "chan_other_accepted"
|
||||
|
||||
subscriptionID, channelID := 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, "gsub1.active", gsub0.Active)
|
||||
tt.AssertTrue(t, "gsub1.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)
|
||||
|
||||
gsub2 := tt.RequestAuthGet[subobj](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID))
|
||||
tt.AssertFalse(t, "gsub2.active", gsub2.Active)
|
||||
tt.AssertTrue(t, "gsub2.confirmed", gsub2.Confirmed)
|
||||
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
// subscription.active == false && subscription.confirmed == true
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertFalse(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
msgListDirect := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID))
|
||||
|
||||
foundActivatedMessageDirect := false
|
||||
for _, m := range msgListDirect.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageDirect = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageDirect", foundActivatedMessageDirect)
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{"active": true})
|
||||
|
||||
// subscription.active == true && subscription.confirmed == true
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
msgListDirect := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID))
|
||||
|
||||
foundActivatedMessageDirect := false
|
||||
for _, m := range msgListDirect.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageDirect = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageDirect", foundActivatedMessageDirect)
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID), gin.H{"confirmed": false})
|
||||
|
||||
// subscription.active == true && subscription.confirmed == false
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertFalse(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
tt.RequestAuthGetShouldFail(t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID), 401, apierr.USER_AUTH_FAILED)
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{"active": false})
|
||||
|
||||
// subscription.active == false && subscription.confirmed == false
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertFalse(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
tt.RequestAuthGetShouldFail(t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID), 401, apierr.USER_AUTH_FAILED)
|
||||
}
|
||||
|
||||
tt.RequestAuthPatch[gin.H](t, user15.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user15.UID, subscriptionID), gin.H{"confirmed": true})
|
||||
tt.RequestAuthPatch[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{"active": true})
|
||||
|
||||
// subscription.active == true && subscription.confirmed == true
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
msgListDirect := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID))
|
||||
|
||||
foundActivatedMessageDirect := false
|
||||
for _, m := range msgListDirect.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageDirect = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageDirect", foundActivatedMessageDirect)
|
||||
}
|
||||
|
||||
tt.RequestAuthDelete[gin.H](t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/subscriptions/%s", user14.UID, subscriptionID), gin.H{})
|
||||
|
||||
// subscription -> deleted
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertFalse(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
|
||||
tt.RequestAuthGetShouldFail(t, user14.AdminKey, baseUrl, fmt.Sprintf("/api/v2/users/%s/channels/%s/messages", user15.UID, channelID), 401, apierr.USER_AUTH_FAILED)
|
||||
}
|
||||
}
|
||||
|
||||
func TestActiveSubscriptionListMessages(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"`
|
||||
}
|
||||
type msg struct {
|
||||
Title string `json:"title"`
|
||||
}
|
||||
type mglist struct {
|
||||
Messages []msg `json:"messages"`
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
{
|
||||
msgListSub := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessageSub := false
|
||||
for _, m := range msgListSub.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessageSub = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertTrue(t, "foundActivatedMessageSub", foundActivatedMessageSub)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnconfirmedSubscriptionListMessages(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"`
|
||||
}
|
||||
type msg struct {
|
||||
Title string `json:"title"`
|
||||
}
|
||||
type mglist struct {
|
||||
Messages []msg `json:"messages"`
|
||||
}
|
||||
|
||||
user14 := data.User[14] // Subscriber
|
||||
user15 := data.User[15] // Owner
|
||||
chanName := "chan_other_request"
|
||||
|
||||
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.AssertFalse(t, "gsub1.confirmed", gsub1.Confirmed)
|
||||
|
||||
newMessageTitle := langext.RandBase62(48)
|
||||
tt.RequestPost[gin.H](t, baseUrl, "/", gin.H{
|
||||
"key": user15.AdminKey,
|
||||
"user_id": user15.UID,
|
||||
"channel": chanName,
|
||||
"title": newMessageTitle,
|
||||
})
|
||||
|
||||
msgList := tt.RequestAuthGet[mglist](t, user14.AdminKey, baseUrl, "/api/v2/messages")
|
||||
|
||||
foundActivatedMessage := false
|
||||
for _, m := range msgList.Messages {
|
||||
if m.Title == newMessageTitle {
|
||||
foundActivatedMessage = true
|
||||
break
|
||||
}
|
||||
}
|
||||
tt.AssertFalse(t, "foundActivatedMessage", foundActivatedMessage)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user