aboutsummaryrefslogtreecommitdiff
path: root/userapi
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-04-14 13:35:27 +0200
committerGitHub <noreply@github.com>2023-04-14 12:35:27 +0100
commitc45d8cd68875f7f5081f252cfdc2dd32f99c58f8 (patch)
treeee3d2fd0df11fc7bebc0d57ffa6040c5fb2bd203 /userapi
parentca63b414da87f7bdb25effffd187d51191a42b3e (diff)
Add pushrules tests (#3044)
partly takes care of https://github.com/matrix-org/dendrite/issues/2870 by making sure that rule IDs don't start with a dot. Co-authored-by: kegsay <kegan@matrix.org>
Diffstat (limited to 'userapi')
-rw-r--r--userapi/api/api.go17
-rw-r--r--userapi/internal/user_api.go27
2 files changed, 12 insertions, 32 deletions
diff --git a/userapi/api/api.go b/userapi/api/api.go
index ba1c374f..7c47efd2 100644
--- a/userapi/api/api.go
+++ b/userapi/api/api.go
@@ -90,7 +90,7 @@ type ClientUserAPI interface {
QueryDevices(ctx context.Context, req *QueryDevicesRequest, res *QueryDevicesResponse) error
QueryAccountData(ctx context.Context, req *QueryAccountDataRequest, res *QueryAccountDataResponse) error
QueryPushers(ctx context.Context, req *QueryPushersRequest, res *QueryPushersResponse) error
- QueryPushRules(ctx context.Context, req *QueryPushRulesRequest, res *QueryPushRulesResponse) error
+ QueryPushRules(ctx context.Context, userID string) (*pushrules.AccountRuleSets, error)
QueryAccountAvailability(ctx context.Context, req *QueryAccountAvailabilityRequest, res *QueryAccountAvailabilityResponse) error
PerformAccountCreation(ctx context.Context, req *PerformAccountCreationRequest, res *PerformAccountCreationResponse) error
PerformDeviceCreation(ctx context.Context, req *PerformDeviceCreationRequest, res *PerformDeviceCreationResponse) error
@@ -99,7 +99,7 @@ type ClientUserAPI interface {
PerformPasswordUpdate(ctx context.Context, req *PerformPasswordUpdateRequest, res *PerformPasswordUpdateResponse) error
PerformPusherDeletion(ctx context.Context, req *PerformPusherDeletionRequest, res *struct{}) error
PerformPusherSet(ctx context.Context, req *PerformPusherSetRequest, res *struct{}) error
- PerformPushRulesPut(ctx context.Context, req *PerformPushRulesPutRequest, res *struct{}) error
+ PerformPushRulesPut(ctx context.Context, userID string, ruleSets *pushrules.AccountRuleSets) error
PerformAccountDeactivation(ctx context.Context, req *PerformAccountDeactivationRequest, res *PerformAccountDeactivationResponse) error
PerformOpenIDTokenCreation(ctx context.Context, req *PerformOpenIDTokenCreationRequest, res *PerformOpenIDTokenCreationResponse) error
QueryNotifications(ctx context.Context, req *QueryNotificationsRequest, res *QueryNotificationsResponse) error
@@ -555,19 +555,6 @@ const (
HTTPKind PusherKind = "http"
)
-type PerformPushRulesPutRequest struct {
- UserID string `json:"user_id"`
- RuleSets *pushrules.AccountRuleSets `json:"rule_sets"`
-}
-
-type QueryPushRulesRequest struct {
- UserID string `json:"user_id"`
-}
-
-type QueryPushRulesResponse struct {
- RuleSets *pushrules.AccountRuleSets `json:"rule_sets"`
-}
-
type QueryNotificationsRequest struct {
Localpart string `json:"localpart"` // Required.
ServerName gomatrixserverlib.ServerName `json:"server_name"` // Required.
diff --git a/userapi/internal/user_api.go b/userapi/internal/user_api.go
index 6dad91dd..139ca758 100644
--- a/userapi/internal/user_api.go
+++ b/userapi/internal/user_api.go
@@ -26,6 +26,7 @@ import (
appserviceAPI "github.com/matrix-org/dendrite/appservice/api"
"github.com/matrix-org/dendrite/clientapi/auth/authtypes"
fedsenderapi "github.com/matrix-org/dendrite/federationapi/api"
+ "github.com/matrix-org/dendrite/internal/pushrules"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
"github.com/sirupsen/logrus"
@@ -872,36 +873,28 @@ func (a *UserInternalAPI) QueryPushers(ctx context.Context, req *api.QueryPusher
func (a *UserInternalAPI) PerformPushRulesPut(
ctx context.Context,
- req *api.PerformPushRulesPutRequest,
- _ *struct{},
+ userID string,
+ ruleSets *pushrules.AccountRuleSets,
) error {
- bs, err := json.Marshal(&req.RuleSets)
+ bs, err := json.Marshal(ruleSets)
if err != nil {
return err
}
userReq := api.InputAccountDataRequest{
- UserID: req.UserID,
+ UserID: userID,
DataType: pushRulesAccountDataType,
AccountData: json.RawMessage(bs),
}
var userRes api.InputAccountDataResponse // empty
- if err := a.InputAccountData(ctx, &userReq, &userRes); err != nil {
- return err
- }
- return nil
+ return a.InputAccountData(ctx, &userReq, &userRes)
}
-func (a *UserInternalAPI) QueryPushRules(ctx context.Context, req *api.QueryPushRulesRequest, res *api.QueryPushRulesResponse) error {
- localpart, domain, err := gomatrixserverlib.SplitID('@', req.UserID)
- if err != nil {
- return fmt.Errorf("failed to split user ID %q for push rules", req.UserID)
- }
- pushRules, err := a.DB.QueryPushRules(ctx, localpart, domain)
+func (a *UserInternalAPI) QueryPushRules(ctx context.Context, userID string) (*pushrules.AccountRuleSets, error) {
+ localpart, domain, err := gomatrixserverlib.SplitID('@', userID)
if err != nil {
- return fmt.Errorf("failed to query push rules: %w", err)
+ return nil, fmt.Errorf("failed to split user ID %q for push rules", userID)
}
- res.RuleSets = pushRules
- return nil
+ return a.DB.QueryPushRules(ctx, localpart, domain)
}
func (a *UserInternalAPI) SetAvatarURL(ctx context.Context, localpart string, serverName gomatrixserverlib.ServerName, avatarURL string) (*authtypes.Profile, bool, error) {