forgejo-aneksajo_auto_patch.../data/53/ref_aneksajo_u.diff
2025-01-23 01:26:39 +01:00

38 lines
1.3 KiB
Diff

--- 9.0.3 2024-12-12 08:06:13.000000000 +0100
+++ aneksajo 2024-12-16 08:23:15.000000000 +0100
@@ -22,6 +22,7 @@
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/services/forms"
+ "github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -461,3 +462,27 @@
ctx.Session.MakeRequest(t, req, http.StatusNoContent)
}
}
+
+// generate and activate an ssh key for the user attached to the APITestContext
+// TODO: pick a better name; golang doesn't do method overriding.
+func withCtxKeyFile(t *testing.T, ctx APITestContext, callback func()) {
+ // we need to have write:public_key to do this step
+ // the easiest way is to create a throwaway ctx that is identical but only has that permission
+ ctxKeyWriter := ctx
+ ctxKeyWriter.Token = getTokenForLoggedInUser(t, ctx.Session, auth.AccessTokenScopeWriteUser)
+
+ keyName := "One of " + ctx.Username + "'s keys: #" + uuid.New().String()
+ withKeyFile(t, keyName, func(keyFile string) {
+ var key api.PublicKey
+
+ doAPICreateUserKey(ctxKeyWriter, keyName, keyFile,
+ func(t *testing.T, _key api.PublicKey) {
+ // save the key ID so we can delete it at the end
+ key = _key
+ })(t)
+
+ defer doAPIDeleteUserKey(ctxKeyWriter, key.ID)(t)
+
+ callback()
+ })
+}