mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-29 09:43:10 -06:00
Co-authored-by: Tommie Gannert <tommie@gannert.se> Co-authored-by: Dan Peleg <dan@globekeeper.com>
144 lines
4.3 KiB
Go
144 lines
4.3 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
"math/rand"
|
|
"os"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/matrix-org/dendrite/pushserver/api"
|
|
"github.com/matrix-org/dendrite/pushserver/storage"
|
|
"github.com/matrix-org/dendrite/setup/config"
|
|
"github.com/matryer/is"
|
|
)
|
|
|
|
var (
|
|
ctx = context.Background()
|
|
localpart = "foo"
|
|
testPusher = api.Pusher{
|
|
SessionID: 42984798792,
|
|
PushKey: "dc_GxbDa8El0pWKkDIM-rQ:APA91bHflmL6ycJMbLKX8VYLD-Ebft3t-SLQwIap-pDWP-evu1AWxsXxzyl1pgSZxDMn6OeznZsjXhTU0m5xz05dyJ4syX86S89uwxBwtbK-k0PHQt9wF8CgOcibm-OYZodpY5TtmknZ",
|
|
Kind: "http",
|
|
AppID: "com.example.app.ios",
|
|
AppDisplayName: "Mat Rix",
|
|
DeviceDisplayName: "iPhone 9",
|
|
ProfileTag: "xxyyzz",
|
|
Language: "pl",
|
|
Data: map[string]interface{}{
|
|
"format": "event_id_only",
|
|
"url": "https://push-gateway.location.there/_matrix/push/v1/notify",
|
|
},
|
|
}
|
|
testPusher2 = api.Pusher{
|
|
SessionID: 42984798792,
|
|
PushKey: "dc_GxbDa8El0pWKkDIM-rQ:APA91bHflmL6ycJMbLKX8VYLD-Ebft3t-SLQwIap-pDWP-evu1AWxsXxzyl1pgSZxDMn6OeznZsjXhTU0m5xz05dyJ4syX86S89uwxBwtbK-k0PHQt9wF8CgOcibm-OYZodpY5TtmknZ---",
|
|
Kind: "http",
|
|
AppID: "com.example.app.ios",
|
|
AppDisplayName: "Mat Rix",
|
|
DeviceDisplayName: "iPhone 9",
|
|
ProfileTag: "xxyyzz",
|
|
Language: "pl",
|
|
Data: map[string]interface{}{
|
|
"format": "event_id_only",
|
|
"url": "https://push-gateway.location.there/_matrix/push/v1/notify",
|
|
},
|
|
}
|
|
nilPusher = api.Pusher{
|
|
PushKey: "dc_GxbDa8El0pWKkDIM-rQ:APA91bHflmL6ycJMbLKX8VYLD-Ebft3t-SLQwIap-pDWP-evu1AWxsXxzyl1pgSZxDMn6OeznZsjXhTU0m5xz05dyJ4syX86S89uwxBwtbK-k0PHQt9wF8CgOcibm-OYZodpY5TtmknZ",
|
|
AppID: "com.example.app.ios",
|
|
}
|
|
)
|
|
|
|
func TestPerformPusherSet(t *testing.T) {
|
|
is := is.New(t)
|
|
dut := mustNewPushserverAPI(is)
|
|
pushers := mustSetPushers(is, dut, testPusher)
|
|
is.Equal(len(pushers.Pushers), 1)
|
|
pushKeyTS := pushers.Pushers[0].PushKeyTS
|
|
is.True(pushKeyTS != 0)
|
|
pushers.Pushers[0].PushKeyTS = 0
|
|
is.Equal(pushers.Pushers[0], testPusher)
|
|
pushers.Pushers[0].PushKeyTS = pushKeyTS
|
|
|
|
}
|
|
|
|
func TestPerformPusherSet_Append(t *testing.T) {
|
|
is := is.New(t)
|
|
dut := mustNewPushserverAPI(is)
|
|
mustSetPushers(is, dut, testPusher)
|
|
pushers := mustAppendPushers(is, dut, testPusher2)
|
|
is.Equal(len(pushers.Pushers), 2)
|
|
is.True(pushers.Pushers[1].PushKeyTS != 0)
|
|
pushers.Pushers[1].PushKeyTS = 0
|
|
is.Equal(pushers.Pushers[1], testPusher2)
|
|
}
|
|
|
|
func TestPerformPusherSet_Delete(t *testing.T) {
|
|
is := is.New(t)
|
|
dut := mustNewPushserverAPI(is)
|
|
mustSetPushers(is, dut, testPusher)
|
|
pushers := mustSetPushers(is, dut, nilPusher)
|
|
// pushers := mustAppendPushers(is, dut, testPusher2)
|
|
is.Equal(len(pushers.Pushers), 0)
|
|
}
|
|
|
|
func TestPerformPusherSet_AppendDelete(t *testing.T) {
|
|
is := is.New(t)
|
|
dut := mustNewPushserverAPI(is)
|
|
mustSetPushers(is, dut, testPusher)
|
|
mustAppendPushers(is, dut, testPusher2)
|
|
pushers := mustAppendPushers(is, dut, nilPusher)
|
|
is.Equal(len(pushers.Pushers), 1)
|
|
is.True(pushers.Pushers[0].PushKeyTS != 0)
|
|
pushers.Pushers[0].PushKeyTS = 0
|
|
is.Equal(pushers.Pushers[0], testPusher2)
|
|
}
|
|
|
|
func mustNewPushserverAPI(is *is.I) api.PushserverInternalAPI {
|
|
db := mustNewDatabase(is)
|
|
return &PushserverInternalAPI{
|
|
DB: db,
|
|
}
|
|
}
|
|
|
|
func mustNewDatabase(is *is.I) storage.Database {
|
|
randPostfix := strconv.Itoa(rand.Int())
|
|
dbPath := os.TempDir() + "/dendrite-" + randPostfix
|
|
dut, err := storage.Open(&config.DatabaseOptions{
|
|
ConnectionString: config.DataSource("file:" + dbPath),
|
|
})
|
|
is.NoErr(err)
|
|
return dut
|
|
}
|
|
|
|
func mustSetPushers(is *is.I, dut api.PushserverInternalAPI, p api.Pusher) *api.QueryPushersResponse {
|
|
err := dut.PerformPusherSet(ctx, &api.PerformPusherSetRequest{
|
|
Localpart: localpart,
|
|
Append: false,
|
|
Pusher: p,
|
|
}, &struct{}{})
|
|
is.NoErr(err)
|
|
var pushers api.QueryPushersResponse
|
|
err = dut.QueryPushers(ctx, &api.QueryPushersRequest{
|
|
Localpart: localpart,
|
|
}, &pushers)
|
|
is.NoErr(err)
|
|
return &pushers
|
|
}
|
|
|
|
func mustAppendPushers(is *is.I, dut api.PushserverInternalAPI, p api.Pusher) *api.QueryPushersResponse {
|
|
err := dut.PerformPusherSet(ctx, &api.PerformPusherSetRequest{
|
|
Localpart: localpart,
|
|
Append: true,
|
|
Pusher: p,
|
|
}, &struct{}{})
|
|
is.NoErr(err)
|
|
var pushers api.QueryPushersResponse
|
|
err = dut.QueryPushers(ctx, &api.QueryPushersRequest{
|
|
Localpart: localpart,
|
|
}, &pushers)
|
|
is.NoErr(err)
|
|
return &pushers
|
|
}
|