aboutsummaryrefslogtreecommitdiff
path: root/appservice
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-04-03 20:19:26 +0200
committerGitHub <noreply@github.com>2023-04-03 20:19:26 +0200
commitc2db38d2954b8d5d1944b64671985d5ffd3b5c28 (patch)
tree7199fa013869cd7298562d75f6e94f8321da8a15 /appservice
parent4cb9cd7842e58b542b25a2e9d7cdb7f61d147e96 (diff)
Add user profile tests, refactor user API methods (#3030)
This adds tests for `/profile`. Also, as a first change in this regard, refactors the methods defined on the `UserInternalAPI` to not use structs as the request/response parameters.
Diffstat (limited to 'appservice')
-rw-r--r--appservice/api/query.go36
1 files changed, 10 insertions, 26 deletions
diff --git a/appservice/api/query.go b/appservice/api/query.go
index eb567b2e..472266d9 100644
--- a/appservice/api/query.go
+++ b/appservice/api/query.go
@@ -22,8 +22,6 @@ import (
"encoding/json"
"errors"
- "github.com/matrix-org/gomatrixserverlib"
-
"github.com/matrix-org/dendrite/clientapi/auth/authtypes"
userapi "github.com/matrix-org/dendrite/userapi/api"
)
@@ -150,6 +148,10 @@ type ASLocationResponse struct {
Fields json.RawMessage `json:"fields"`
}
+// ErrProfileNotExists is returned when trying to lookup a user's profile that
+// doesn't exist locally.
+var ErrProfileNotExists = errors.New("no known profile for given user ID")
+
// RetrieveUserProfile is a wrapper that queries both the local database and
// application services for a given user's profile
// TODO: Remove this, it's called from federationapi and clientapi but is a pure function
@@ -157,25 +159,11 @@ func RetrieveUserProfile(
ctx context.Context,
userID string,
asAPI AppServiceInternalAPI,
- profileAPI userapi.ClientUserAPI,
+ profileAPI userapi.ProfileAPI,
) (*authtypes.Profile, error) {
- localpart, _, err := gomatrixserverlib.SplitID('@', userID)
- if err != nil {
- return nil, err
- }
-
// Try to query the user from the local database
- res := &userapi.QueryProfileResponse{}
- err = profileAPI.QueryProfile(ctx, &userapi.QueryProfileRequest{UserID: userID}, res)
- if err != nil {
- return nil, err
- }
- profile := &authtypes.Profile{
- Localpart: localpart,
- DisplayName: res.DisplayName,
- AvatarURL: res.AvatarURL,
- }
- if res.UserExists {
+ profile, err := profileAPI.QueryProfile(ctx, userID)
+ if err == nil {
return profile, nil
}
@@ -188,19 +176,15 @@ func RetrieveUserProfile(
// If no user exists, return
if !userResp.UserIDExists {
- return nil, errors.New("no known profile for given user ID")
+ return nil, ErrProfileNotExists
}
// Try to query the user from the local database again
- err = profileAPI.QueryProfile(ctx, &userapi.QueryProfileRequest{UserID: userID}, res)
+ profile, err = profileAPI.QueryProfile(ctx, userID)
if err != nil {
return nil, err
}
// profile should not be nil at this point
- return &authtypes.Profile{
- Localpart: localpart,
- DisplayName: res.DisplayName,
- AvatarURL: res.AvatarURL,
- }, nil
+ return profile, nil
}