@@ -10,7 +10,6 @@ import (
10
10
"io/ioutil"
11
11
"net/url"
12
12
"os"
13
- "path/filepath"
14
13
"testing"
15
14
16
15
"code.gitea.io/gitea/models"
@@ -40,8 +39,11 @@ func TestGPGGit(t *testing.T) {
40
39
defer os .Setenv ("GNUPGHOME" , oldGNUPGHome )
41
40
42
41
// Need to create a root key
43
- rootKeyPair ,
err := createGPGKey (
tmpDir ,
"gitea" ,
"[email protected] " )
42
+ rootKeyPair ,
err := importTestingKey (
tmpDir ,
"gitea" ,
"[email protected] " )
44
43
assert .NoError (t , err )
44
+ if err != nil {
45
+ assert .FailNow (t , "Unable to import rootKeyPair" )
46
+ }
45
47
46
48
rootKeyID := rootKeyPair .PrimaryKey .KeyIdShortString ()
47
49
@@ -125,6 +127,11 @@ func TestGPGGit(t *testing.T) {
125
127
testCtx := NewAPITestContext (t , username , "initial-unsigned" )
126
128
t .Run ("CreateCRUDFile-Always" , crudActionCreateFile (
127
129
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
+ }
128
135
assert .True (t , response .Verification .Verified )
129
136
if ! response .Verification .Verified {
130
137
t .FailNow ()
@@ -134,6 +141,11 @@ func TestGPGGit(t *testing.T) {
134
141
}))
135
142
t .Run ("CreateCRUDFile-ParentSigned-always" , crudActionCreateFile (
136
143
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
+ }
137
149
assert .True (t , response .Verification .Verified )
138
150
if ! response .Verification .Verified {
139
151
t .FailNow ()
@@ -152,6 +164,11 @@ func TestGPGGit(t *testing.T) {
152
164
testCtx := NewAPITestContext (t , username , "initial-unsigned" )
153
165
t .Run ("CreateCRUDFile-Always-ParentSigned" , crudActionCreateFile (
154
166
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
+ }
155
172
assert .True (t , response .Verification .Verified )
156
173
if ! response .Verification .Verified {
157
174
t .FailNow ()
@@ -171,7 +188,15 @@ func TestGPGGit(t *testing.T) {
171
188
t .Run ("CreateRepository" , doAPICreateRepository (testCtx , false ))
172
189
t .Run ("CheckMasterBranchSigned" , doAPIGetBranch (testCtx , "master" , func (t * testing.T , branch api.Branch ) {
173
190
assert .NotNil (t , branch .Commit )
191
+ if branch .Commit == nil {
192
+ assert .FailNow (t , "no commit provided with branch! %v" , branch )
193
+ return
194
+ }
174
195
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
+ }
175
200
assert .True (t , branch .Commit .Verification .Verified )
176
201
if ! branch .Commit .Verification .Verified {
177
202
t .FailNow ()
@@ -318,43 +343,26 @@ func crudActionCreateFile(t *testing.T, ctx APITestContext, user *models.User, f
318
343
}, callback ... )
319
344
}
320
345
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 {
324
348
return nil , err
325
349
}
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" )
336
351
if err != nil {
337
352
return nil , err
338
353
}
339
- defer keyWriter .Close ()
340
- defer os .Remove (keyFile )
354
+ defer keyringFile .Close ()
341
355
342
- w , err := armor .Encode ( keyWriter , openpgp . PrivateKeyType , nil )
356
+ block , err := armor .Decode ( keyringFile )
343
357
if err != nil {
344
358
return nil , err
345
359
}
346
- defer w .Close ()
347
360
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 )
354
364
}
355
365
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
360
368
}
0 commit comments