mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-10 05:24:18 +09:00
chore: enable forcetypeassert linter, fix issues (#38804)
Enable [`forcetypeassert`](https://github.com/gostaticanalysis/forcetypeassert) linter to prevent unchecked type assertions. ~650 issues fixed, most fixes were clean, some use `setting.PanicInDevOrTesting`. The only behaviour changes are where code would previously send a 500 error or panic, a 4xx error is now emitted. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -214,7 +214,7 @@ func TestAPIEditUser(t *testing.T) {
|
||||
|
||||
errMap := make(map[string]any)
|
||||
json.Unmarshal(resp.Body.Bytes(), &errMap)
|
||||
assert.Equal(t, "e-mail invalid [email: ]", errMap["message"].(string))
|
||||
assert.Equal(t, "e-mail invalid [email: ]", errMap["message"])
|
||||
|
||||
user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{LoginName: "user2"})
|
||||
assert.False(t, user2.IsRestricted)
|
||||
|
||||
@@ -16,6 +16,7 @@ import (
|
||||
"gitea.dev/tests"
|
||||
|
||||
"github.com/42wim/httpsig"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/crypto/ssh"
|
||||
)
|
||||
|
||||
@@ -112,7 +113,9 @@ func TestHTTPSigCert(t *testing.T) {
|
||||
keyID := "gitea"
|
||||
|
||||
// create our certificate signer using the ssh signer and our certificate
|
||||
certSigner, err := ssh.NewCertSigner(pkcert.(*ssh.Certificate), sshSigner)
|
||||
cert, ok := pkcert.(*ssh.Certificate)
|
||||
require.True(t, ok)
|
||||
certSigner, err := ssh.NewCertSigner(cert, sshSigner)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -121,7 +124,7 @@ func TestHTTPSigCert(t *testing.T) {
|
||||
req = NewRequest(t, "GET", "/api/v1/admin/users")
|
||||
|
||||
// add our cert to the request
|
||||
certString := base64.RawStdEncoding.EncodeToString(pkcert.(*ssh.Certificate).Marshal())
|
||||
certString := base64.RawStdEncoding.EncodeToString(cert.Marshal())
|
||||
req.SetHeader("x-ssh-certificate", certString)
|
||||
|
||||
signer, _, err := httpsig.NewSSHSigner(certSigner, httpsig.DigestSha512, []string{httpsig.RequestTarget, "(created)", "(expires)", "x-ssh-certificate"}, httpsig.Signature, 10)
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"gitea.dev/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -327,8 +328,8 @@ func TestPackageConan(t *testing.T) {
|
||||
assert.Nil(t, pd.SemVer)
|
||||
assert.Equal(t, name, pd.Package.Name)
|
||||
assert.Equal(t, version1, pd.Version.Version)
|
||||
assert.IsType(t, &conan_module.Metadata{}, pd.Metadata)
|
||||
metadata := pd.Metadata.(*conan_module.Metadata)
|
||||
metadata, ok := pd.Metadata.(*conan_module.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, conanLicense, metadata.License)
|
||||
assert.Equal(t, conanAuthor, metadata.Author)
|
||||
assert.Equal(t, conanHomepage, metadata.ProjectURL)
|
||||
|
||||
@@ -427,8 +427,8 @@ func TestPackageContainer(t *testing.T) {
|
||||
assert.ElementsMatch(t, []string{strings.ToLower(user.LowerName + "/" + image)}, getAllByName(pd.PackageProperties, container_module.PropertyRepository))
|
||||
assert.True(t, has(pd.VersionProperties, container_module.PropertyManifestTagged))
|
||||
|
||||
assert.IsType(t, &container_module.Metadata{}, pd.Metadata)
|
||||
metadata := pd.Metadata.(*container_module.Metadata)
|
||||
metadata, ok := pd.Metadata.(*container_module.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, container_module.TypeOCI, metadata.Type)
|
||||
assert.Len(t, metadata.ImageLayers, 2)
|
||||
assert.Empty(t, metadata.Manifests)
|
||||
@@ -570,8 +570,8 @@ func TestPackageContainer(t *testing.T) {
|
||||
|
||||
assert.ElementsMatch(t, []string{manifestDigest, untaggedManifestDigest}, getAllByName(pd.VersionProperties, container_module.PropertyManifestReference))
|
||||
|
||||
assert.IsType(t, &container_module.Metadata{}, pd.Metadata)
|
||||
metadata := pd.Metadata.(*container_module.Metadata)
|
||||
metadata, ok := pd.Metadata.(*container_module.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, container_module.TypeOCI, metadata.Type)
|
||||
assert.Len(t, metadata.Manifests, 2)
|
||||
assert.Condition(t, func() bool {
|
||||
|
||||
@@ -199,8 +199,9 @@ func TestPackageMaven(t *testing.T) {
|
||||
|
||||
pd, err = packages.GetPackageDescriptor(t.Context(), pvs[0])
|
||||
require.NoError(t, err)
|
||||
assert.IsType(t, &maven.Metadata{}, pd.Metadata)
|
||||
assert.Equal(t, packageDescription, pd.Metadata.(*maven.Metadata).Description)
|
||||
metadata, ok := pd.Metadata.(*maven.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, packageDescription, metadata.Description)
|
||||
|
||||
pfs, err := packages.GetFilesByVersionID(t.Context(), pvs[0].ID)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"gitea.dev/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestPackagePyPI(t *testing.T) {
|
||||
@@ -86,8 +87,9 @@ func TestPackagePyPI(t *testing.T) {
|
||||
pd, err := packages.GetPackageDescriptor(t.Context(), pvs[0])
|
||||
assert.NoError(t, err)
|
||||
assert.Nil(t, pd.SemVer)
|
||||
assert.IsType(t, &pypi.Metadata{}, pd.Metadata)
|
||||
assert.Equal(t, projectURL, pd.Metadata.(*pypi.Metadata).ProjectURL)
|
||||
metadata, ok := pd.Metadata.(*pypi.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, projectURL, metadata.ProjectURL)
|
||||
assert.Equal(t, packageName, pd.Package.Name)
|
||||
assert.Equal(t, packageVersion, pd.Version.Version)
|
||||
|
||||
@@ -165,8 +167,9 @@ func TestPackagePyPI(t *testing.T) {
|
||||
|
||||
pd, err := packages.GetPackageDescriptor(t.Context(), pvs[0])
|
||||
assert.NoError(t, err)
|
||||
assert.IsType(t, &pypi.Metadata{}, pd.Metadata)
|
||||
assert.Equal(t, projectURL, pd.Metadata.(*pypi.Metadata).ProjectURL)
|
||||
metadata, ok := pd.Metadata.(*pypi.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, projectURL, metadata.ProjectURL)
|
||||
})
|
||||
|
||||
t.Run("UploadWithoutAnyHomepageURLMetadata", func(t *testing.T) {
|
||||
@@ -185,8 +188,9 @@ func TestPackagePyPI(t *testing.T) {
|
||||
|
||||
pd, err := packages.GetPackageDescriptor(t.Context(), pvs[0])
|
||||
assert.NoError(t, err)
|
||||
assert.IsType(t, &pypi.Metadata{}, pd.Metadata)
|
||||
assert.Empty(t, pd.Metadata.(*pypi.Metadata).ProjectURL)
|
||||
metadata, ok := pd.Metadata.(*pypi.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Empty(t, metadata.ProjectURL)
|
||||
})
|
||||
|
||||
t.Run("Download", func(t *testing.T) {
|
||||
|
||||
@@ -164,8 +164,8 @@ func TestPackageSwift(t *testing.T) {
|
||||
assert.NotNil(t, pd.SemVer)
|
||||
assert.Equal(t, packageID, pd.Package.Name)
|
||||
assert.Equal(t, packageVersion, pd.Version.Version)
|
||||
assert.IsType(t, &swift_module.Metadata{}, pd.Metadata)
|
||||
metadata := pd.Metadata.(*swift_module.Metadata)
|
||||
metadata, ok := pd.Metadata.(*swift_module.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, packageDescription, metadata.Description)
|
||||
assert.Len(t, metadata.Manifests, 2)
|
||||
assert.Equal(t, contentManifest1, metadata.Manifests[""].Content)
|
||||
@@ -241,8 +241,8 @@ func TestPackageSwift(t *testing.T) {
|
||||
assert.NotNil(t, pd.SemVer)
|
||||
assert.Equal(t, packageID, pd.Package.Name)
|
||||
assert.Equal(t, packageVersion2, pd.Version.Version)
|
||||
assert.IsType(t, &swift_module.Metadata{}, pd.Metadata)
|
||||
metadata := pd.Metadata.(*swift_module.Metadata)
|
||||
metadata, ok := pd.Metadata.(*swift_module.Metadata)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, packageDescription, metadata.Description)
|
||||
assert.Len(t, metadata.Manifests, 2)
|
||||
assert.Equal(t, contentManifest1, metadata.Manifests[""].Content)
|
||||
|
||||
@@ -210,7 +210,7 @@ func testAPIPullReviewGeneral(t *testing.T) {
|
||||
resp = MakeRequest(t, req, http.StatusUnprocessableEntity)
|
||||
errMap := make(map[string]any)
|
||||
json.Unmarshal(resp.Body.Bytes(), &errMap)
|
||||
assert.Equal(t, "review event COMMENT requires a body or a comment", errMap["message"].(string))
|
||||
assert.Equal(t, "review event COMMENT requires a body or a comment", errMap["message"])
|
||||
|
||||
// test get review requests
|
||||
// to make it simple, use same api with get review
|
||||
|
||||
@@ -352,7 +352,8 @@ func testLDAPUserSyncWithGroupFilter(t *testing.T) {
|
||||
ldapSource := unittest.AssertExistsAndLoadBean(t, &auth_model.Source{
|
||||
Name: "ldap",
|
||||
})
|
||||
ldapConfig := ldapSource.Cfg.(*ldap.Source)
|
||||
ldapConfig, ok := ldapSource.Cfg.(*ldap.Source)
|
||||
require.True(t, ok)
|
||||
ldapConfig.GroupFilter = "(cn=ship_crew)"
|
||||
require.NoError(t, auth_model.UpdateSource(t.Context(), ldapSource))
|
||||
|
||||
|
||||
@@ -113,7 +113,9 @@ func TestMigrateAzureADV2ToOIDC(t *testing.T) {
|
||||
|
||||
// --- Step 3: Set ExternalIDClaim = "oid" to restore account continuity ---
|
||||
// Set ExternalIDClaim = "oid" so that the OIDC source extracts the same Object ID that the Azure AD V2 provider previously stored.
|
||||
authSource.Cfg.(*oauth2.Source).ExternalIDClaim = "oid"
|
||||
oauth2Source, ok := authSource.Cfg.(*oauth2.Source)
|
||||
require.True(t, ok)
|
||||
oauth2Source.ExternalIDClaim = "oid"
|
||||
err = auth_model.UpdateSource(t.Context(), authSource)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"gitea.dev/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestIncomingEmail(t *testing.T) {
|
||||
@@ -48,13 +49,15 @@ func TestIncomingEmail(t *testing.T) {
|
||||
|
||||
ref, err := incoming_payload.GetReferenceFromPayload(t.Context(), issuePayload)
|
||||
assert.NoError(t, err)
|
||||
assert.IsType(t, ref, new(issues_model.Issue))
|
||||
assert.Equal(t, issue.ID, ref.(*issues_model.Issue).ID)
|
||||
refIssue, ok := ref.(*issues_model.Issue)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, issue.ID, refIssue.ID)
|
||||
|
||||
ref, err = incoming_payload.GetReferenceFromPayload(t.Context(), commentPayload)
|
||||
assert.NoError(t, err)
|
||||
assert.IsType(t, ref, new(issues_model.Comment))
|
||||
assert.Equal(t, comment.ID, ref.(*issues_model.Comment).ID)
|
||||
refComment, ok := ref.(*issues_model.Comment)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, comment.ID, refComment.ID)
|
||||
})
|
||||
|
||||
t.Run("Token", func(t *testing.T) {
|
||||
|
||||
@@ -78,10 +78,12 @@ func TestExternalMarkupRenderer(t *testing.T) {
|
||||
})
|
||||
|
||||
// above tested in-page rendering (no iframe), then we test iframe mode below
|
||||
r := markup.DetectRendererTypeByFilename("any-file.html").(*external.Renderer)
|
||||
r, ok := markup.DetectRendererTypeByFilename("any-file.html").(*external.Renderer)
|
||||
require.True(t, ok)
|
||||
defer test.MockVariableValue(&r.RenderContentMode, setting.RenderContentModeIframe)()
|
||||
assert.True(t, r.NeedPostProcess())
|
||||
r = markup.DetectRendererTypeByFilename("any-file.no-sanitizer").(*external.Renderer)
|
||||
r, ok = markup.DetectRendererTypeByFilename("any-file.no-sanitizer").(*external.Renderer)
|
||||
require.True(t, ok)
|
||||
defer test.MockVariableValue(&r.RenderContentMode, setting.RenderContentModeIframe)()
|
||||
assert.False(t, r.NeedPostProcess())
|
||||
|
||||
|
||||
@@ -39,7 +39,9 @@ func TestOAuth2AvatarFromPicture(t *testing.T) {
|
||||
})
|
||||
authSource, err := auth_model.GetActiveOAuth2SourceByAuthName(t.Context(), "test-oidc-avatar")
|
||||
require.NoError(t, err)
|
||||
providerName := authSource.Cfg.(*oauth2.Source).Provider
|
||||
oauth2Source, ok := authSource.Cfg.(*oauth2.Source)
|
||||
require.True(t, ok)
|
||||
providerName := oauth2Source.Provider
|
||||
|
||||
t.Run("AutoRegister", func(t *testing.T) {
|
||||
defer test.MockVariableValue(&setting.OAuth2Client.Username, "")()
|
||||
|
||||
@@ -1299,6 +1299,8 @@ func testSignInOauthCallbackSyncSSHKeys(t *testing.T) {
|
||||
addOAuth2Source(t, "test-oidc-source", oauth2Source)
|
||||
authSource, err := auth_model.GetActiveOAuth2SourceByAuthName(ctx, "test-oidc-source")
|
||||
require.NoError(t, err)
|
||||
authSourceCfg, ok := authSource.Cfg.(*oauth2.Source)
|
||||
require.True(t, ok)
|
||||
|
||||
sshKey1 := "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICV0MGX/W9IvLA4FXpIuUcdDcbj5KX4syHgsTy7soVgf"
|
||||
sshKey2 := "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIE7kM1R02+4ertDKGKEDcKG0s+2vyDDcIvceJ0Gqv5f1AAAABHNzaDo="
|
||||
@@ -1336,7 +1338,7 @@ func testSignInOauthCallbackSyncSSHKeys(t *testing.T) {
|
||||
defer test.MockVariableValue(&setting.OAuth2Client.EnableAutoRegistration, true)()
|
||||
defer test.MockVariableValue(&gothic.CompleteUserAuth, func(res http.ResponseWriter, req *http.Request) (goth.User, error) {
|
||||
return goth.User{
|
||||
Provider: authSource.Cfg.(*oauth2.Source).Provider,
|
||||
Provider: authSourceCfg.Provider,
|
||||
UserID: "oidc-userid",
|
||||
Email: "oidc-email@example.com",
|
||||
RawData: c.mockRawData,
|
||||
|
||||
Reference in New Issue
Block a user