aboutsummaryrefslogtreecommitdiff
path: root/clientapi
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-02-03 13:42:35 +0100
committerGitHub <noreply@github.com>2023-02-03 13:42:35 +0100
commitbaf118b08cee29cf7435a8a871a7aab423baf779 (patch)
treee8013d7d191a2754a19669787b42c7ed84671be3 /clientapi
parent9c826d064dacc00d4f4f385a09aa2c8d381e7317 (diff)
Add Sytest/Complement coverage to scheduled runs (#2962)
This adds Sytest and Complement coverage reporting to the nightly scheduled CI runs. Fixes a few API mode related issues as well, since we seemingly never really ran them with Complement. Also fixes a bug related to device list changes: When we pass in an empty `newlyLeftRooms` slice, we got a list of all currently joined rooms with the corresponding members. When we then got the `newlyJoinedRooms`, we wouldn't update the `changed` slice, because we already got the user from the `newlyLeftRooms` query. This is fixed by simply ignoring empty `newlyLeftRooms`.
Diffstat (limited to 'clientapi')
-rw-r--r--clientapi/routing/leaveroom.go10
-rw-r--r--clientapi/routing/register.go12
-rw-r--r--clientapi/routing/routing.go23
3 files changed, 40 insertions, 5 deletions
diff --git a/clientapi/routing/leaveroom.go b/clientapi/routing/leaveroom.go
index a7166185..86414afc 100644
--- a/clientapi/routing/leaveroom.go
+++ b/clientapi/routing/leaveroom.go
@@ -18,6 +18,7 @@ import (
"net/http"
"github.com/matrix-org/dendrite/clientapi/jsonerror"
+ "github.com/matrix-org/dendrite/internal/httputil"
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
"github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/util"
@@ -44,6 +45,15 @@ func LeaveRoomByID(
JSON: jsonerror.LeaveServerNoticeError(),
}
}
+ switch e := err.(type) {
+ case httputil.InternalAPIError:
+ if e.Message == jsonerror.LeaveServerNoticeError().Error() {
+ return util.JSONResponse{
+ Code: http.StatusForbidden,
+ JSON: jsonerror.LeaveServerNoticeError(),
+ }
+ }
+ }
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.Unknown(err.Error()),
diff --git a/clientapi/routing/register.go b/clientapi/routing/register.go
index ff6a0900..be2b192b 100644
--- a/clientapi/routing/register.go
+++ b/clientapi/routing/register.go
@@ -31,6 +31,8 @@ import (
"time"
"github.com/matrix-org/dendrite/internal"
+ internalHTTPUtil "github.com/matrix-org/dendrite/internal/httputil"
+ "github.com/matrix-org/dendrite/internal/sqlutil"
"github.com/tidwall/gjson"
"github.com/matrix-org/dendrite/internal/eventutil"
@@ -859,6 +861,16 @@ func completeRegistration(
JSON: jsonerror.UserInUse("Desired user ID is already taken."),
}
}
+ switch e := err.(type) {
+ case internalHTTPUtil.InternalAPIError:
+ conflictErr := &userapi.ErrorConflict{Message: sqlutil.ErrUserExists.Error()}
+ if e.Message == conflictErr.Error() {
+ return util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.UserInUse("Desired user ID is already taken."),
+ }
+ }
+ }
return util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: jsonerror.Unknown("failed to create account: " + err.Error()),
diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go
index 93f6ea90..66610c0a 100644
--- a/clientapi/routing/routing.go
+++ b/clientapi/routing/routing.go
@@ -18,6 +18,7 @@ import (
"context"
"net/http"
"strings"
+ "sync"
"github.com/gorilla/mux"
"github.com/matrix-org/dendrite/setup/base"
@@ -198,18 +199,24 @@ func Setup(
// server notifications
if cfg.Matrix.ServerNotices.Enabled {
logrus.Info("Enabling server notices at /_synapse/admin/v1/send_server_notice")
- serverNotificationSender, err := getSenderDevice(context.Background(), rsAPI, userAPI, cfg)
- if err != nil {
- logrus.WithError(err).Fatal("unable to get account for sending sending server notices")
- }
+ var serverNotificationSender *userapi.Device
+ var err error
+ notificationSenderOnce := &sync.Once{}
synapseAdminRouter.Handle("/admin/v1/send_server_notice/{txnID}",
httputil.MakeAuthAPI("send_server_notice", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ notificationSenderOnce.Do(func() {
+ serverNotificationSender, err = getSenderDevice(context.Background(), rsAPI, userAPI, cfg)
+ if err != nil {
+ logrus.WithError(err).Fatal("unable to get account for sending sending server notices")
+ }
+ })
// not specced, but ensure we're rate limiting requests to this endpoint
if r := rateLimits.Limit(req, device); r != nil {
return *r
}
- vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
+ var vars map[string]string
+ vars, err = httputil.URLDecodeMapValues(mux.Vars(req))
if err != nil {
return util.ErrorResponse(err)
}
@@ -225,6 +232,12 @@ func Setup(
synapseAdminRouter.Handle("/admin/v1/send_server_notice",
httputil.MakeAuthAPI("send_server_notice", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ notificationSenderOnce.Do(func() {
+ serverNotificationSender, err = getSenderDevice(context.Background(), rsAPI, userAPI, cfg)
+ if err != nil {
+ logrus.WithError(err).Fatal("unable to get account for sending sending server notices")
+ }
+ })
// not specced, but ensure we're rate limiting requests to this endpoint
if r := rateLimits.Limit(req, device); r != nil {
return *r