dendrite/syncapi/syncapi_test.go
2022-05-06 16:21:07 +01:00

96 lines
2.3 KiB
Go

package syncapi
import (
"context"
"net/http"
"net/http/httptest"
"testing"
keyapi "github.com/matrix-org/dendrite/keyserver/api"
rsapi "github.com/matrix-org/dendrite/roomserver/api"
"github.com/matrix-org/dendrite/test"
userapi "github.com/matrix-org/dendrite/userapi/api"
)
var (
alice = "@alice:localhost"
aliceAccessToken = "ALICE_BEARER_TOKEN"
)
type syncRoomserverAPI struct {
rsapi.RoomserverInternalAPI
}
type syncUserAPI struct {
userapi.UserInternalAPI
}
func (s *syncUserAPI) QueryAccessToken(ctx context.Context, req *userapi.QueryAccessTokenRequest, res *userapi.QueryAccessTokenResponse) error {
if req.AccessToken == aliceAccessToken {
res.Device = &userapi.Device{
ID: "ID",
UserID: alice,
AccessToken: aliceAccessToken,
AccountType: userapi.AccountTypeUser,
DisplayName: "Alice",
}
return nil
}
res.Err = "unknown user"
return nil
}
func (s *syncUserAPI) PerformLastSeenUpdate(ctx context.Context, req *userapi.PerformLastSeenUpdateRequest, res *userapi.PerformLastSeenUpdateResponse) error {
return nil
}
type syncKeyAPI struct {
keyapi.KeyInternalAPI
}
func TestSyncAPI(t *testing.T) {
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
base, close := test.CreateBaseDendrite(t, dbType)
defer close()
AddPublicRoutes(base, &syncUserAPI{}, &syncRoomserverAPI{}, &syncKeyAPI{})
testCases := []struct {
name string
req *http.Request
wantCode int
}{
{
name: "missing access token",
req: test.NewRequest(t, "GET", "/_matrix/client/v3/sync", test.WithQueryParams(map[string]string{
"timeout": "0",
})),
wantCode: 401,
},
{
name: "unknown access token",
req: test.NewRequest(t, "GET", "/_matrix/client/v3/sync", test.WithQueryParams(map[string]string{
"access_token": "foo",
"timeout": "0",
})),
wantCode: 401,
},
{
name: "valid access token",
req: test.NewRequest(t, "GET", "/_matrix/client/v3/sync", test.WithQueryParams(map[string]string{
"access_token": aliceAccessToken,
"timeout": "0",
})),
wantCode: 200,
},
}
for _, tc := range testCases {
w := httptest.NewRecorder()
base.PublicClientAPIMux.ServeHTTP(w, tc.req)
if w.Code != tc.wantCode {
t.Fatalf("%s: got HTTP %d want %d", tc.name, w.Code, tc.wantCode)
}
}
})
}