Run fed routing tests with both databases

This commit is contained in:
Devon Hudson 2023-01-23 09:36:01 -07:00
parent 298e3455d5
commit 1551539c24
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628
2 changed files with 86 additions and 82 deletions

View file

@ -45,48 +45,50 @@ func (u *fakeUserAPI) QueryProfile(ctx context.Context, req *userAPI.QueryProfil
} }
func TestHandleQueryProfile(t *testing.T) { func TestHandleQueryProfile(t *testing.T) {
base, close := testrig.CreateBaseDendrite(t, test.DBTypeSQLite) test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
defer close() base, close := testrig.CreateBaseDendrite(t, dbType)
defer close()
fedMux := mux.NewRouter().SkipClean(true).PathPrefix(httputil.PublicFederationPathPrefix).Subrouter().UseEncodedPath() fedMux := mux.NewRouter().SkipClean(true).PathPrefix(httputil.PublicFederationPathPrefix).Subrouter().UseEncodedPath()
base.PublicFederationAPIMux = fedMux base.PublicFederationAPIMux = fedMux
base.Cfg.FederationAPI.Matrix.SigningIdentity.ServerName = testOrigin base.Cfg.FederationAPI.Matrix.SigningIdentity.ServerName = testOrigin
base.Cfg.FederationAPI.Matrix.Metrics.Enabled = false base.Cfg.FederationAPI.Matrix.Metrics.Enabled = false
fedClient := fakeFedClient{} fedClient := fakeFedClient{}
serverKeyAPI := &signing.YggdrasilKeys{} serverKeyAPI := &signing.YggdrasilKeys{}
keyRing := serverKeyAPI.KeyRing() keyRing := serverKeyAPI.KeyRing()
fedapi := fedAPI.NewInternalAPI(base, &fedClient, nil, nil, keyRing, true) fedapi := fedAPI.NewInternalAPI(base, &fedClient, nil, nil, keyRing, true)
userapi := fakeUserAPI{} userapi := fakeUserAPI{}
r, ok := fedapi.(*fedInternal.FederationInternalAPI) r, ok := fedapi.(*fedInternal.FederationInternalAPI)
if !ok { if !ok {
panic("This is a programming error.") panic("This is a programming error.")
} }
routing.Setup(base, nil, r, keyRing, &fedClient, &userapi, nil, &base.Cfg.MSCs, nil, nil) routing.Setup(base, nil, r, keyRing, &fedClient, &userapi, nil, &base.Cfg.MSCs, nil, nil)
handler := fedMux.Get(routing.QueryProfileRouteName).GetHandler().ServeHTTP handler := fedMux.Get(routing.QueryProfileRouteName).GetHandler().ServeHTTP
_, sk, _ := ed25519.GenerateKey(nil) _, sk, _ := ed25519.GenerateKey(nil)
keyID := signing.KeyID keyID := signing.KeyID
pk := sk.Public().(ed25519.PublicKey) pk := sk.Public().(ed25519.PublicKey)
serverName := gomatrixserverlib.ServerName(hex.EncodeToString(pk)) serverName := gomatrixserverlib.ServerName(hex.EncodeToString(pk))
req := gomatrixserverlib.NewFederationRequest("GET", serverName, testOrigin, "/query/profile?user_id="+url.QueryEscape("@user:"+string(testOrigin))) req := gomatrixserverlib.NewFederationRequest("GET", serverName, testOrigin, "/query/profile?user_id="+url.QueryEscape("@user:"+string(testOrigin)))
type queryContent struct{} type queryContent struct{}
content := queryContent{} content := queryContent{}
err := req.SetContent(content) err := req.SetContent(content)
if err != nil { if err != nil {
t.Fatalf("Error: %s", err.Error()) t.Fatalf("Error: %s", err.Error())
} }
req.Sign(serverName, gomatrixserverlib.KeyID(keyID), sk) req.Sign(serverName, gomatrixserverlib.KeyID(keyID), sk)
httpReq, err := req.HTTPRequest() httpReq, err := req.HTTPRequest()
if err != nil { if err != nil {
t.Fatalf("Error: %s", err.Error()) t.Fatalf("Error: %s", err.Error())
} }
// vars := map[string]string{"room_alias": "#room:server"} // vars := map[string]string{"room_alias": "#room:server"}
w := httptest.NewRecorder() w := httptest.NewRecorder()
// httpReq = mux.SetURLVars(httpReq, vars) // httpReq = mux.SetURLVars(httpReq, vars)
handler(w, httpReq) handler(w, httpReq)
res := w.Result() res := w.Result()
data, _ := io.ReadAll(res.Body) data, _ := io.ReadAll(res.Body)
println(string(data)) println(string(data))
assert.Equal(t, 200, res.StatusCode) assert.Equal(t, 200, res.StatusCode)
})
} }

View file

@ -45,48 +45,50 @@ func (f *fakeFedClient) LookupRoomAlias(ctx context.Context, origin, s gomatrixs
} }
func TestHandleQueryDirectory(t *testing.T) { func TestHandleQueryDirectory(t *testing.T) {
base, close := testrig.CreateBaseDendrite(t, test.DBTypeSQLite) test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
defer close() base, close := testrig.CreateBaseDendrite(t, dbType)
defer close()
fedMux := mux.NewRouter().SkipClean(true).PathPrefix(httputil.PublicFederationPathPrefix).Subrouter().UseEncodedPath() fedMux := mux.NewRouter().SkipClean(true).PathPrefix(httputil.PublicFederationPathPrefix).Subrouter().UseEncodedPath()
base.PublicFederationAPIMux = fedMux base.PublicFederationAPIMux = fedMux
base.Cfg.FederationAPI.Matrix.SigningIdentity.ServerName = testOrigin base.Cfg.FederationAPI.Matrix.SigningIdentity.ServerName = testOrigin
base.Cfg.FederationAPI.Matrix.Metrics.Enabled = false base.Cfg.FederationAPI.Matrix.Metrics.Enabled = false
fedClient := fakeFedClient{} fedClient := fakeFedClient{}
serverKeyAPI := &signing.YggdrasilKeys{} serverKeyAPI := &signing.YggdrasilKeys{}
keyRing := serverKeyAPI.KeyRing() keyRing := serverKeyAPI.KeyRing()
fedapi := fedAPI.NewInternalAPI(base, &fedClient, nil, nil, keyRing, true) fedapi := fedAPI.NewInternalAPI(base, &fedClient, nil, nil, keyRing, true)
userapi := fakeUserAPI{} userapi := fakeUserAPI{}
r, ok := fedapi.(*fedInternal.FederationInternalAPI) r, ok := fedapi.(*fedInternal.FederationInternalAPI)
if !ok { if !ok {
panic("This is a programming error.") panic("This is a programming error.")
} }
routing.Setup(base, nil, r, keyRing, &fedClient, &userapi, nil, &base.Cfg.MSCs, nil, nil) routing.Setup(base, nil, r, keyRing, &fedClient, &userapi, nil, &base.Cfg.MSCs, nil, nil)
handler := fedMux.Get(routing.QueryDirectoryRouteName).GetHandler().ServeHTTP handler := fedMux.Get(routing.QueryDirectoryRouteName).GetHandler().ServeHTTP
_, sk, _ := ed25519.GenerateKey(nil) _, sk, _ := ed25519.GenerateKey(nil)
keyID := signing.KeyID keyID := signing.KeyID
pk := sk.Public().(ed25519.PublicKey) pk := sk.Public().(ed25519.PublicKey)
serverName := gomatrixserverlib.ServerName(hex.EncodeToString(pk)) serverName := gomatrixserverlib.ServerName(hex.EncodeToString(pk))
req := gomatrixserverlib.NewFederationRequest("GET", serverName, testOrigin, "/query/directory?room_alias="+url.QueryEscape("#room:server")) req := gomatrixserverlib.NewFederationRequest("GET", serverName, testOrigin, "/query/directory?room_alias="+url.QueryEscape("#room:server"))
type queryContent struct{} type queryContent struct{}
content := queryContent{} content := queryContent{}
err := req.SetContent(content) err := req.SetContent(content)
if err != nil { if err != nil {
t.Fatalf("Error: %s", err.Error()) t.Fatalf("Error: %s", err.Error())
} }
req.Sign(serverName, gomatrixserverlib.KeyID(keyID), sk) req.Sign(serverName, gomatrixserverlib.KeyID(keyID), sk)
httpReq, err := req.HTTPRequest() httpReq, err := req.HTTPRequest()
if err != nil { if err != nil {
t.Fatalf("Error: %s", err.Error()) t.Fatalf("Error: %s", err.Error())
} }
// vars := map[string]string{"room_alias": "#room:server"} // vars := map[string]string{"room_alias": "#room:server"}
w := httptest.NewRecorder() w := httptest.NewRecorder()
// httpReq = mux.SetURLVars(httpReq, vars) // httpReq = mux.SetURLVars(httpReq, vars)
handler(w, httpReq) handler(w, httpReq)
res := w.Result() res := w.Result()
data, _ := io.ReadAll(res.Body) data, _ := io.ReadAll(res.Body)
println(string(data)) println(string(data))
assert.Equal(t, 200, res.StatusCode) assert.Equal(t, 200, res.StatusCode)
})
} }