-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix intermittent GPG Git test failure (#8968)
- Loading branch information
Showing
2 changed files
with
209 additions
and
126 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,14 +23,7 @@ import ( | |
) | ||
|
||
func TestGPGGit(t *testing.T) { | ||
onGiteaRun(t, testGPGGit) | ||
} | ||
|
||
func testGPGGit(t *testing.T, u *url.URL) { | ||
username := "user2" | ||
baseAPITestContext := NewAPITestContext(t, username, "repo1") | ||
|
||
u.Path = baseAPITestContext.GitPath() | ||
|
||
// OK Set a new GPG home | ||
tmpDir, err := ioutil.TempDir("", "temp-gpg") | ||
|
@@ -65,130 +58,218 @@ func testGPGGit(t *testing.T, u *url.URL) { | |
setting.Repository.Signing.SigningEmail = "[email protected]" | ||
user := models.AssertExistsAndLoadBean(t, &models.User{Name: username}).(*models.User) | ||
|
||
t.Run("Unsigned-Initial", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
setting.Repository.Signing.InitialCommit = []string{"never"} | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateRepository", doAPICreateRepository(testCtx, false)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "never", "never2", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned2", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned-never", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"always"} | ||
t.Run("CreateCRUDFile-Always", crudActionCreateFile( | ||
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
setting.Repository.Signing.InitialCommit = []string{"never"} | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
|
||
baseAPITestContext := NewAPITestContext(t, username, "repo1") | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("Unsigned-Initial", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateRepository", doAPICreateRepository(testCtx, false)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "never", "never2", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned2", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("Unsigned-Initial-CRUD-Never", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned-never", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"always"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("Unsigned-Initial-CRUD-Always", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateCRUDFile-Always", crudActionCreateFile( | ||
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile( | ||
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.InitialCommit = []string{"always"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("AlwaysSign-Initial", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-always") | ||
t.Run("CreateRepository", doAPICreateRepository(testCtx, false)) | ||
t.Run("CheckMasterBranchSigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.True(t, branch.Commit.Verification.Verified) | ||
assert.Equal(t, "[email protected]", branch.Commit.Verification.Signer.Email) | ||
})) | ||
}) | ||
t.Run("AlwaysSign-Initial", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
setting.Repository.Signing.InitialCommit = []string{"always"} | ||
testCtx := NewAPITestContext(t, username, "initial-always") | ||
t.Run("CreateRepository", doAPICreateRepository(testCtx, false)) | ||
t.Run("CheckMasterBranchSigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.True(t, branch.Commit.Verification.Verified) | ||
assert.Equal(t, "[email protected]", branch.Commit.Verification.Signer.Email) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"never"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("AlwaysSign-Initial-CRUD-Never", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-always") | ||
t.Run("CreateCRUDFile-Never", crudActionCreateFile( | ||
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.False(t, response.Verification.Verified) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("AlwaysSign-Initial-CRUD-ParentSigned-On-Always", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-always") | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.CRUDActions = []string{"always"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("AlwaysSign-Initial-CRUD-Always", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-always") | ||
t.Run("CreateCRUDFile-Always", crudActionCreateFile( | ||
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
})) | ||
|
||
}) | ||
}, false) | ||
var pr api.PullRequest | ||
setting.Repository.Signing.Merges = []string{"commitssigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("UnsignedMerging", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
var err error | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "never2")(t) | ||
assert.NoError(t, err) | ||
}) | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} | ||
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( | ||
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.Merges = []string{"basesigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("BaseSignedMerging", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
var err error | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "parentsigned2")(t) | ||
assert.NoError(t, err) | ||
}) | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.CRUDActions = []string{"always"} | ||
t.Run("CreateCRUDFile-Always", crudActionCreateFile( | ||
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { | ||
assert.True(t, response.Verification.Verified) | ||
assert.Equal(t, "[email protected]", response.Verification.Signer.Email) | ||
}) | ||
}, false) | ||
setting.Repository.Signing.Merges = []string{"commitssigned"} | ||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||
u.Path = baseAPITestContext.GitPath() | ||
|
||
t.Run("CommitsSignedMerging", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
var err error | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "always-parentsigned")(t) | ||
assert.NoError(t, err) | ||
}) | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.True(t, branch.Commit.Verification.Verified) | ||
})) | ||
|
||
}) | ||
t.Run("UnsignedMerging", func(t *testing.T) { | ||
PrintCurrentTest(t) | ||
testCtx := NewAPITestContext(t, username, "initial-unsigned") | ||
var pr api.PullRequest | ||
var err error | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "never2")(t) | ||
assert.NoError(t, err) | ||
}) | ||
setting.Repository.Signing.Merges = []string{"commitssigned"} | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.Merges = []string{"basesigned"} | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "parentsigned2")(t) | ||
assert.NoError(t, err) | ||
}) | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.False(t, branch.Commit.Verification.Verified) | ||
assert.Empty(t, branch.Commit.Verification.Signature) | ||
})) | ||
setting.Repository.Signing.Merges = []string{"commitssigned"} | ||
t.Run("CreatePullRequest", func(t *testing.T) { | ||
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "always-parentsigned")(t) | ||
assert.NoError(t, err) | ||
}) | ||
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index)) | ||
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) { | ||
assert.NotNil(t, branch.Commit) | ||
assert.NotNil(t, branch.Commit.Verification) | ||
assert.True(t, branch.Commit.Verification.Verified) | ||
})) | ||
|
||
}) | ||
}, false) | ||
} | ||
|
||
func crudActionCreateFile(t *testing.T, ctx APITestContext, user *models.User, from, to, path string, callback ...func(*testing.T, api.FileResponse)) func(*testing.T) { | ||
|