mirror of
https://github.com/element-hq/dendrite.git
synced 2025-09-13 21:02:25 +03:00
Handle guest access [1/2?] (#2872)
Needs https://github.com/matrix-org/sytest/pull/1315, as otherwise the membership events aren't persisted yet when hitting `/state` after kicking guest users. Makes the following tests pass: ``` Guest users denied access over federation if guest access prohibited Guest users are kicked from guest_access rooms on revocation of guest_access Guest users are kicked from guest_access rooms on revocation of guest_access over federation ``` Todo (in a follow up PR): - Restrict access to CS API Endpoints as per https://spec.matrix.org/v1.4/client-server-api/#client-behaviour-14 Co-authored-by: kegsay <kegan@matrix.org>
This commit is contained in:
parent
09dff951d6
commit
5eed31fea3
20 changed files with 607 additions and 45 deletions
|
@ -307,3 +307,64 @@ func TestLoginToken(t *testing.T) {
|
|||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestQueryAccountByLocalpart(t *testing.T) {
|
||||
alice := test.NewUser(t)
|
||||
|
||||
localpart, userServername, _ := gomatrixserverlib.SplitID('@', alice.ID)
|
||||
|
||||
ctx := context.Background()
|
||||
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
|
||||
intAPI, db, close := MustMakeInternalAPI(t, apiTestOpts{}, dbType)
|
||||
defer close()
|
||||
|
||||
createdAcc, err := db.CreateAccount(ctx, localpart, userServername, "", "", alice.AccountType)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
testCases := func(t *testing.T, internalAPI api.UserInternalAPI) {
|
||||
// Query existing account
|
||||
queryAccResp := &api.QueryAccountByLocalpartResponse{}
|
||||
if err = internalAPI.QueryAccountByLocalpart(ctx, &api.QueryAccountByLocalpartRequest{
|
||||
Localpart: localpart,
|
||||
ServerName: userServername,
|
||||
}, queryAccResp); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(createdAcc, queryAccResp.Account) {
|
||||
t.Fatalf("created and queried accounts don't match:\n%+v vs.\n%+v", createdAcc, queryAccResp.Account)
|
||||
}
|
||||
|
||||
// Query non-existent account, this should result in an error
|
||||
err = internalAPI.QueryAccountByLocalpart(ctx, &api.QueryAccountByLocalpartRequest{
|
||||
Localpart: "doesnotexist",
|
||||
ServerName: userServername,
|
||||
}, queryAccResp)
|
||||
|
||||
if err == nil {
|
||||
t.Fatalf("expected an error, but got none: %+v", queryAccResp)
|
||||
}
|
||||
}
|
||||
|
||||
t.Run("Monolith", func(t *testing.T) {
|
||||
testCases(t, intAPI)
|
||||
// also test tracing
|
||||
testCases(t, &api.UserInternalAPITrace{Impl: intAPI})
|
||||
})
|
||||
|
||||
t.Run("HTTP API", func(t *testing.T) {
|
||||
router := mux.NewRouter().PathPrefix(httputil.InternalPathPrefix).Subrouter()
|
||||
userapi.AddInternalRoutes(router, intAPI, false)
|
||||
apiURL, cancel := test.ListenAndServe(t, router, false)
|
||||
defer cancel()
|
||||
|
||||
userHTTPApi, err := inthttp.NewUserAPIClient(apiURL, &http.Client{Timeout: time.Second * 5})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create HTTP client: %s", err)
|
||||
}
|
||||
testCases(t, userHTTPApi)
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue