Move package settings to package instead of being tied to version (#37026)

Unties settings page from package version and adds button to delete the
package version
Settings page now allows for deletion of entire package and it's
versions as opposed to a single version

Adds an API endpoint to delete the entire package with all versions from
registry

fixes: https://github.com/go-gitea/gitea/issues/36904

Co-Authored-By: gemini-3-flash

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
TheFox0x7
2026-04-05 21:51:51 +02:00
committed by GitHub
parent a8938115d4
commit ca51b4f875
19 changed files with 477 additions and 45 deletions
+44
View File
@@ -85,6 +85,50 @@ func TestPackageAPI(t *testing.T) {
assert.Equal(t, user.Name, p.Creator.UserName)
})
t.Run("DeleteEntirePackage", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
packageName := "test-package-entire-delete"
for _, version := range []string{"1.0.1", "1.0.2"} {
url := fmt.Sprintf("/api/packages/%s/generic/%s/%s/file.bin", user.Name, packageName, version)
req := NewRequestWithBody(t, "PUT", url, bytes.NewReader([]byte{1})).
AddBasicAuth(user.Name)
MakeRequest(t, req, http.StatusCreated)
}
req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/packages/%s/generic/%s", user.Name, packageName)).
AddTokenAuth(tokenWritePackage)
MakeRequest(t, req, http.StatusNoContent)
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s", user.Name, packageName)).
AddTokenAuth(tokenReadPackage)
MakeRequest(t, req, http.StatusNotFound)
})
t.Run("DeletePackageVersion", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
packageName := "test-package-version-delete"
for _, version := range []string{"1.0.1", "1.0.2"} {
url := fmt.Sprintf("/api/packages/%s/generic/%s/%s/file.bin", user.Name, packageName, version)
req := NewRequestWithBody(t, "PUT", url, bytes.NewReader([]byte{1})).
AddBasicAuth(user.Name)
MakeRequest(t, req, http.StatusCreated)
}
req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/packages/%s/generic/%s/1.0.1", user.Name, packageName)).
AddTokenAuth(tokenWritePackage)
MakeRequest(t, req, http.StatusNoContent)
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s/1.0.1", user.Name, packageName)).
AddTokenAuth(tokenReadPackage)
MakeRequest(t, req, http.StatusNotFound)
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s/1.0.2", user.Name, packageName)).
AddTokenAuth(tokenReadPackage)
MakeRequest(t, req, http.StatusOK)
})
t.Run("ListPackageVersions", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()