Skip to content

Commit f4ff059

Browse files
committed
Add more integration tests
1 parent 94d91e2 commit f4ff059

File tree

1 file changed

+62
-8
lines changed

1 file changed

+62
-8
lines changed

tests/integration/api_packages_pypi_test.go

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ func TestPackagePyPI(t *testing.T) {
3939

4040
root := fmt.Sprintf("/api/packages/%s/pypi", user.Name)
4141

42-
uploadFile := func(t *testing.T, filename, content string, expectedStatus int) {
43-
body := &bytes.Buffer{}
44-
writer := multipart.NewWriter(body)
42+
createBasicMultipartFile := func(packageName, filename, content string) (body *bytes.Buffer, writer *multipart.Writer) {
43+
body = &bytes.Buffer{}
44+
writer = multipart.NewWriter(body)
4545
part, _ := writer.CreateFormFile("content", filename)
4646
_, _ = io.Copy(part, strings.NewReader(content))
4747

@@ -52,17 +52,28 @@ func TestPackagePyPI(t *testing.T) {
5252
writer.WriteField("description", packageDescription)
5353
writer.WriteField("sha256_digest", hashSHA256)
5454
writer.WriteField("requires_python", "3.6")
55-
writer.WriteField("project_urls", "DOCUMENTATION , https://readthedocs.org")
56-
writer.WriteField("project_urls", fmt.Sprintf("Home-page, %s", projectURL))
5755

58-
_ = writer.Close()
56+
return
57+
}
5958

59+
upload := func(t *testing.T, body *bytes.Buffer, contentType string, expectedStatus int) {
6060
req := NewRequestWithBody(t, "POST", root, body).
61-
SetHeader("Content-Type", writer.FormDataContentType()).
61+
SetHeader("Content-Type", contentType).
6262
AddBasicAuth(user.Name)
6363
MakeRequest(t, req, expectedStatus)
6464
}
6565

66+
uploadFile := func(t *testing.T, filename, content string, expectedStatus int) {
67+
body, writer := createBasicMultipartFile(packageName, filename, content)
68+
69+
writer.WriteField("project_urls", "DOCUMENTATION , https://readthedocs.org")
70+
writer.WriteField("project_urls", fmt.Sprintf("Home-page, %s", projectURL))
71+
72+
_ = writer.Close()
73+
74+
upload(t, body, writer.FormDataContentType(), expectedStatus)
75+
}
76+
6677
t.Run("Upload", func(t *testing.T) {
6778
defer tests.PrintCurrentTest(t)()
6879

@@ -137,6 +148,48 @@ func TestPackagePyPI(t *testing.T) {
137148
uploadFile(t, "test.tar.gz", content, http.StatusConflict)
138149
})
139150

151+
t.Run("UploadUsingDeprecatedHomepageMetadata", func(t *testing.T) {
152+
defer tests.PrintCurrentTest(t)()
153+
154+
pkgName := "homepage-package"
155+
body, writer := createBasicMultipartFile(pkgName, "test.whl", content)
156+
157+
writer.WriteField("home_page", projectURL)
158+
159+
_ = writer.Close()
160+
161+
upload(t, body, writer.FormDataContentType(), http.StatusCreated)
162+
163+
pvs, err := packages.GetVersionsByPackageName(db.DefaultContext, user.ID, packages.TypePyPI, pkgName)
164+
assert.NoError(t, err)
165+
assert.Len(t, pvs, 1)
166+
167+
pd, err := packages.GetPackageDescriptor(db.DefaultContext, pvs[0])
168+
assert.NoError(t, err)
169+
assert.IsType(t, &pypi.Metadata{}, pd.Metadata)
170+
assert.Equal(t, projectURL, pd.Metadata.(*pypi.Metadata).ProjectURL)
171+
})
172+
173+
t.Run("UploadWithoutAnyHomepageURLMetadata", func(t *testing.T) {
174+
defer tests.PrintCurrentTest(t)()
175+
176+
pkgName := "no-project-url-or-homepage-package"
177+
body, writer := createBasicMultipartFile(pkgName, "test.whl", content)
178+
179+
_ = writer.Close()
180+
181+
upload(t, body, writer.FormDataContentType(), http.StatusCreated)
182+
183+
pvs, err := packages.GetVersionsByPackageName(db.DefaultContext, user.ID, packages.TypePyPI, pkgName)
184+
assert.NoError(t, err)
185+
assert.Len(t, pvs, 1)
186+
187+
pd, err := packages.GetPackageDescriptor(db.DefaultContext, pvs[0])
188+
assert.NoError(t, err)
189+
assert.IsType(t, &pypi.Metadata{}, pd.Metadata)
190+
assert.Empty(t, pd.Metadata.(*pypi.Metadata).ProjectURL)
191+
})
192+
140193
t.Run("Download", func(t *testing.T) {
141194
defer tests.PrintCurrentTest(t)()
142195

@@ -151,7 +204,7 @@ func TestPackagePyPI(t *testing.T) {
151204
downloadFile("test.whl")
152205
downloadFile("test.tar.gz")
153206

154-
pvs, err := packages.GetVersionsByPackageType(db.DefaultContext, user.ID, packages.TypePyPI)
207+
pvs, err := packages.GetVersionsByPackageName(db.DefaultContext, user.ID, packages.TypePyPI, packageName)
155208
assert.NoError(t, err)
156209
assert.Len(t, pvs, 1)
157210
assert.Equal(t, int64(2), pvs[0].DownloadCount)
@@ -183,4 +236,5 @@ func TestPackagePyPI(t *testing.T) {
183236
}
184237
}
185238
})
239+
186240
}

0 commit comments

Comments
 (0)