@@ -10,7 +10,6 @@ import (
1010 "io/ioutil"
1111 "net/url"
1212 "os"
13- "path/filepath"
1413 "testing"
1514
1615 "code.gitea.io/gitea/models"
@@ -40,8 +39,11 @@ func TestGPGGit(t *testing.T) {
4039 defer os .Setenv ("GNUPGHOME" , oldGNUPGHome )
4140
4241 // Need to create a root key
43- rootKeyPair ,
err := createGPGKey (
tmpDir ,
"gitea" ,
"[email protected] " )
42+ rootKeyPair ,
err := importTestingKey (
tmpDir ,
"gitea" ,
"[email protected] " )
4443 assert .NoError (t , err )
44+ if err != nil {
45+ assert .FailNow (t , "Unable to import rootKeyPair" )
46+ }
4547
4648 rootKeyID := rootKeyPair .PrimaryKey .KeyIdShortString ()
4749
@@ -125,6 +127,11 @@ func TestGPGGit(t *testing.T) {
125127 testCtx := NewAPITestContext (t , username , "initial-unsigned" )
126128 t .Run ("CreateCRUDFile-Always" , crudActionCreateFile (
127129 t , testCtx , user , "master" , "always" , "signed-always.txt" , func (t * testing.T , response api.FileResponse ) {
130+ assert .NotNil (t , response .Verification )
131+ if response .Verification == nil {
132+ assert .FailNow (t , "no verification provided with response! %v" , response )
133+ return
134+ }
128135 assert .True (t , response .Verification .Verified )
129136 if ! response .Verification .Verified {
130137 t .FailNow ()
@@ -134,6 +141,11 @@ func TestGPGGit(t *testing.T) {
134141 }))
135142 t .Run ("CreateCRUDFile-ParentSigned-always" , crudActionCreateFile (
136143 t , testCtx , user , "parentsigned" , "parentsigned-always" , "signed-parent2.txt" , func (t * testing.T , response api.FileResponse ) {
144+ assert .NotNil (t , response .Verification )
145+ if response .Verification == nil {
146+ assert .FailNow (t , "no verification provided with response! %v" , response )
147+ return
148+ }
137149 assert .True (t , response .Verification .Verified )
138150 if ! response .Verification .Verified {
139151 t .FailNow ()
@@ -152,6 +164,11 @@ func TestGPGGit(t *testing.T) {
152164 testCtx := NewAPITestContext (t , username , "initial-unsigned" )
153165 t .Run ("CreateCRUDFile-Always-ParentSigned" , crudActionCreateFile (
154166 t , testCtx , user , "always" , "always-parentsigned" , "signed-always-parentsigned.txt" , func (t * testing.T , response api.FileResponse ) {
167+ assert .NotNil (t , response .Verification )
168+ if response .Verification == nil {
169+ assert .FailNow (t , "no verification provided with response! %v" , response )
170+ return
171+ }
155172 assert .True (t , response .Verification .Verified )
156173 if ! response .Verification .Verified {
157174 t .FailNow ()
@@ -171,7 +188,15 @@ func TestGPGGit(t *testing.T) {
171188 t .Run ("CreateRepository" , doAPICreateRepository (testCtx , false ))
172189 t .Run ("CheckMasterBranchSigned" , doAPIGetBranch (testCtx , "master" , func (t * testing.T , branch api.Branch ) {
173190 assert .NotNil (t , branch .Commit )
191+ if branch .Commit == nil {
192+ assert .FailNow (t , "no commit provided with branch! %v" , branch )
193+ return
194+ }
174195 assert .NotNil (t , branch .Commit .Verification )
196+ if branch .Commit .Verification == nil {
197+ assert .FailNow (t , "no verification provided with branch commit! %v" , branch .Commit )
198+ return
199+ }
175200 assert .True (t , branch .Commit .Verification .Verified )
176201 if ! branch .Commit .Verification .Verified {
177202 t .FailNow ()
@@ -318,43 +343,26 @@ func crudActionCreateFile(t *testing.T, ctx APITestContext, user *models.User, f
318343 }, callback ... )
319344}
320345
321- func createGPGKey (tmpDir , name , email string ) (* openpgp.Entity , error ) {
322- keyPair , err := openpgp .NewEntity (name , "test" , email , nil )
323- if err != nil {
346+ func importTestingKey (tmpDir , name , email string ) (* openpgp.Entity , error ) {
347+ if _ , _ , err := process .GetManager ().Exec ("gpg --import integrations/private-testing.key" , "gpg" , "--import" , "integrations/private-testing.key" ); err != nil {
324348 return nil , err
325349 }
326-
327- for _ , id := range keyPair .Identities {
328- err := id .SelfSignature .SignUserId (id .UserId .Id , keyPair .PrimaryKey , keyPair .PrivateKey , nil )
329- if err != nil {
330- return nil , err
331- }
332- }
333-
334- keyFile := filepath .Join (tmpDir , "temporary.key" )
335- keyWriter , err := os .Create (keyFile )
350+ keyringFile , err := os .Open ("integrations/private-testing.key" )
336351 if err != nil {
337352 return nil , err
338353 }
339- defer keyWriter .Close ()
340- defer os .Remove (keyFile )
354+ defer keyringFile .Close ()
341355
342- w , err := armor .Encode ( keyWriter , openpgp . PrivateKeyType , nil )
356+ block , err := armor .Decode ( keyringFile )
343357 if err != nil {
344358 return nil , err
345359 }
346- defer w .Close ()
347360
348- keyPair .SerializePrivate (w , nil )
349- if err := w .Close (); err != nil {
350- return nil , err
351- }
352- if err := keyWriter .Close (); err != nil {
353- return nil , err
361+ keyring , err := openpgp .ReadKeyRing (block .Body )
362+ if err != nil {
363+ return nil , fmt .Errorf ("Keyring access failed: '%v'" , err )
354364 }
355365
356- if _ , _ , err := process .GetManager ().Exec ("gpg --import temporary.key" , "gpg" , "--import" , keyFile ); err != nil {
357- return nil , err
358- }
359- return keyPair , nil
366+ // There should only be one entity in this file.
367+ return keyring [0 ], nil
360368}
0 commit comments