enhance(packages): implement npm single-version API and add per-version repository (#39267)

Signed-off-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
silverwind
2026-09-08 20:25:29 +02:00
committed by GitHub
parent d93bd06d0c
commit 459fc13783
5 changed files with 81 additions and 23 deletions

View File

@@ -182,9 +182,6 @@ func TestPackageNpm(t *testing.T) {
req = NewRequest(t, "GET", fmt.Sprintf("%s/-/%s", root, filename)).AddTokenAuth(token)
resp = MakeRequest(t, req, http.StatusOK)
assert.Equal(t, b, resp.Body.Bytes())
req = NewRequest(t, "GET", fmt.Sprintf("%s/%s", root, packageVersion)).AddTokenAuth(token)
MakeRequest(t, req, http.StatusNotImplemented)
}
pvs, err := packages.GetVersionsByPackageType(t.Context(), user.ID, packages.TypeNpm)
assert.NoError(t, err)
@@ -236,6 +233,24 @@ func TestPackageNpm(t *testing.T) {
assert.Empty(t, pmv.Deprecated)
})
t.Run("PackageVersionMetadata", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
for _, selector := range []string{packageVersion, packageTag} {
req := NewRequest(t, "GET", fmt.Sprintf("%s/%s", root, selector)).AddTokenAuth(token)
resp := MakeRequest(t, req, http.StatusOK)
pmv := DecodeJSON(t, resp, &npm.PackageMetadataVersion{})
assert.Equal(t, fmt.Sprintf("%s@%s", packageName, packageVersion), pmv.ID)
assert.Equal(t, npm.Repository{Type: repoType, URL: repoURL, Directory: repoDirectory}, pmv.Repository)
}
for _, missing := range []string{"9.9.9", "no-such-tag"} {
req := NewRequest(t, "GET", root+"/"+missing).AddTokenAuth(token)
MakeRequest(t, req, http.StatusNotFound)
}
})
t.Run("AddTag", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()