loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

add migration & enhance int-test

+41 -4
+4
models/forgejo_migrations/migrate.go
··· 68 68 NewMigration("Remove Gitea-specific columns from the repository and badge tables", RemoveGiteaSpecificColumnsFromRepositoryAndBadge), 69 69 // v15 -> v16 70 70 NewMigration("Create the `federation_host` table", CreateFederationHostTable), 71 + // v16 -> v17 72 + NewMigration("Create the `federated_user` table", CreateFederatedUserTable), 73 + // v17 -> v18 74 + NewMigration("Add `normalized_federated_uri` column to `user` table", AddNormalizedFederatedURIToUser), 71 75 } 72 76 73 77 // GetCurrentDBVersion returns the current Forgejo database version.
+17
models/forgejo_migrations/v16.go
··· 1 + // Copyright 2024 The Forgejo Authors. All rights reserved. 2 + // SPDX-License-Identifier: MIT 3 + 4 + package forgejo_migrations //nolint:revive 5 + 6 + import "xorm.io/xorm" 7 + 8 + type FederatedUser struct { 9 + ID int64 `xorm:"pk autoincr"` 10 + UserID int64 `xorm:"NOT NULL"` 11 + ExternalID string `xorm:"UNIQUE(federation_user_mapping) NOT NULL"` 12 + FederationHostID int64 `xorm:"UNIQUE(federation_user_mapping) NOT NULL"` 13 + } 14 + 15 + func CreateFederatedUserTable(x *xorm.Engine) error { 16 + return x.Sync(new(FederatedUser)) 17 + }
+14
models/forgejo_migrations/v17.go
··· 1 + // Copyright 2024 The Forgejo Authors. All rights reserved. 2 + // SPDX-License-Identifier: MIT 3 + 4 + package forgejo_migrations //nolint:revive 5 + 6 + import "xorm.io/xorm" 7 + 8 + func AddNormalizedFederatedURIToUser(x *xorm.Engine) error { 9 + type User struct { 10 + ID int64 `xorm:"pk autoincr"` 11 + NormalizedFederatedURI string 12 + } 13 + return x.Sync(&User{}) 14 + }
+1 -1
services/federation/federation_service.go
··· 173 173 return nil, nil, err 174 174 } 175 175 newUser := user.User{ 176 - LowerName: strings.ToLower(person.PreferredUsername.String()), 176 + LowerName: strings.ToLower(name), 177 177 Name: name, 178 178 FullName: fullName, 179 179 Email: email,
+5 -3
tests/integration/api_activitypub_repository_test.go
··· 91 91 `"openRegistrations":true,"usage":{"users":{"total":14,"activeHalfyear":2}},"metadata":{}}`) 92 92 fmt.Fprint(res, responseBody) 93 93 }) 94 - federatedRoutes.HandleFunc("/api/v1/activitypub/user-id/2", 94 + federatedRoutes.HandleFunc("/api/v1/activitypub/user-id/15", 95 95 func(res http.ResponseWriter, req *http.Request) { 96 96 // curl -H "Accept: application/json" https://federated-repo.prod.meissa.de/api/v1/activitypub/user-id/2 97 97 responseBody := fmt.Sprintf(`{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],` + ··· 132 132 activity := []byte(fmt.Sprintf( 133 133 `{"type":"Like",`+ 134 134 `"startTime":"%s",`+ 135 - `"actor":"%s/api/v1/activitypub/user-id/2",`+ 135 + `"actor":"%s/api/v1/activitypub/user-id/15",`+ 136 136 `"object":"%s/api/v1/activitypub/repository-id/%v"}`, 137 137 time.Now().UTC().Format(time.RFC3339), 138 138 federatedSrv.URL, srv.URL, repositoryID)) ··· 142 142 assert.NoError(t, err) 143 143 assert.Equal(t, http.StatusNoContent, resp.StatusCode) 144 144 145 - unittest.AssertExistsAndLoadBean(t, &forgefed.FederationHost{HostFqdn: "127.0.0.1"}) 145 + federationHost := unittest.AssertExistsAndLoadBean(t, &forgefed.FederationHost{HostFqdn: "127.0.0.1"}) 146 + federatedUser := unittest.AssertExistsAndLoadBean(t, &user.FederatedUser{ExternalID: "15", FederationHostID: federationHost.ID}) 147 + unittest.AssertExistsAndLoadBean(t, &user.User{ID: federatedUser.UserID}) 146 148 }) 147 149 } 148 150