aboutsummaryrefslogtreecommitdiffstats
path: root/tests/integration
diff options
context:
space:
mode:
authorExploding Dragon <explodingfkl@gmail.com>2024-08-06 21:03:33 +0800
committerGitHub <noreply@github.com>2024-08-06 09:03:33 -0400
commitde175e3b06e623280058278cdb0a62de7443cd86 (patch)
tree51dde551a952e329d0035fe25affcf17bcc74fd5 /tests/integration
parent94cca8846e7d62c8a295d70c8199d706dfa60e5c (diff)
downloadgitea-de175e3b06e623280058278cdb0a62de7443cd86.tar.gz
gitea-de175e3b06e623280058278cdb0a62de7443cd86.zip
Add signature support for the RPM module (#27069)
close #27031 If the rpm package does not contain a matching gpg signature, the installation will fail. See (#27031) , now auto-signing rpm uploads. This option is turned off by default for compatibility.
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/api_packages_rpm_test.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/integration/api_packages_rpm_test.go b/tests/integration/api_packages_rpm_test.go
index 1dcec6099e..6feceaeb78 100644
--- a/tests/integration/api_packages_rpm_test.go
+++ b/tests/integration/api_packages_rpm_test.go
@@ -24,7 +24,10 @@ import (
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/tests"
+ "github.com/ProtonMail/go-crypto/openpgp"
+ "github.com/sassoftware/go-rpmutils"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestPackageRpm(t *testing.T) {
@@ -431,6 +434,30 @@ gpgkey=%sapi/packages/%s/rpm/repository.key`,
AddBasicAuth(user.Name)
MakeRequest(t, req, http.StatusNotFound)
})
+
+ t.Run("UploadSign", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+ url := groupURL + "/upload?sign=true"
+ req := NewRequestWithBody(t, "PUT", url, bytes.NewReader(content)).
+ AddBasicAuth(user.Name)
+ MakeRequest(t, req, http.StatusCreated)
+
+ gpgReq := NewRequest(t, "GET", rootURL+"/repository.key")
+ gpgResp := MakeRequest(t, gpgReq, http.StatusOK)
+ pub, err := openpgp.ReadArmoredKeyRing(gpgResp.Body)
+ require.NoError(t, err)
+
+ req = NewRequest(t, "GET", fmt.Sprintf("%s/package/%s/%s/%s", groupURL, packageName, packageVersion, packageArchitecture))
+ resp := MakeRequest(t, req, http.StatusOK)
+
+ _, sigs, err := rpmutils.Verify(resp.Body, pub)
+ require.NoError(t, err)
+ require.NotEmpty(t, sigs)
+
+ req = NewRequest(t, "DELETE", fmt.Sprintf("%s/package/%s/%s/%s", groupURL, packageName, packageVersion, packageArchitecture)).
+ AddBasicAuth(user.Name)
+ MakeRequest(t, req, http.StatusNoContent)
+ })
})
}
}