Skip to content

Commit 8f9060b

Browse files
committed
fix buffer usage
1 parent e5a75a6 commit 8f9060b

File tree

4 files changed

+21
-30
lines changed

4 files changed

+21
-30
lines changed

tests/integration/api_comment_attachment_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package integration
66
import (
77
"bytes"
88
"fmt"
9-
"io"
109
"mime/multipart"
1110
"net/http"
1211
"testing"
@@ -95,15 +94,13 @@ func TestAPICreateCommentAttachment(t *testing.T) {
9594
session := loginUser(t, repoOwner.Name)
9695
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteIssue)
9796

98-
filename := "image.png"
99-
buff := generateImg()
10097
body := &bytes.Buffer{}
10198

10299
// Setup multi-part
103100
writer := multipart.NewWriter(body)
104-
part, err := writer.CreateFormFile("attachment", filename)
101+
part, err := writer.CreateFormFile("attachment", "image.png")
105102
assert.NoError(t, err)
106-
_, err = io.Copy(part, &buff)
103+
_, err = part.Write(testGeneratePngBytes())
107104
assert.NoError(t, err)
108105
err = writer.Close()
109106
assert.NoError(t, err)

tests/integration/api_issue_attachment_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package integration
66
import (
77
"bytes"
88
"fmt"
9-
"io"
109
"mime/multipart"
1110
"net/http"
1211
"testing"
@@ -72,15 +71,13 @@ func TestAPICreateIssueAttachment(t *testing.T) {
7271
session := loginUser(t, repoOwner.Name)
7372
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteIssue)
7473

75-
filename := "image.png"
76-
buff := generateImg()
7774
body := &bytes.Buffer{}
7875

7976
// Setup multi-part
8077
writer := multipart.NewWriter(body)
81-
part, err := writer.CreateFormFile("attachment", filename)
78+
part, err := writer.CreateFormFile("attachment", "image.png")
8279
assert.NoError(t, err)
83-
_, err = io.Copy(part, &buff)
80+
_, err = part.Write(testGeneratePngBytes())
8481
assert.NoError(t, err)
8582
err = writer.Close()
8683
assert.NoError(t, err)

tests/integration/api_releases_test.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -304,23 +304,22 @@ func TestAPIUploadAssetRelease(t *testing.T) {
304304
session := loginUser(t, owner.LowerName)
305305
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
306306

307-
r := createNewReleaseUsingAPI(t, token, owner, repo, "release-tag", "", "Release Tag", "test")
308-
309-
filename := "image.png"
310-
bufImage := generateImg()
307+
bufImageBytes := testGeneratePngBytes()
311308
bufLargeBytes := bytes.Repeat([]byte{' '}, 2*1024*1024)
312309

313-
assetURL := fmt.Sprintf("/api/v1/repos/%s/%s/releases/%d/assets", owner.Name, repo.Name, r.ID)
310+
release := createNewReleaseUsingAPI(t, token, owner, repo, "release-tag", "", "Release Tag", "test")
311+
assetURL := fmt.Sprintf("/api/v1/repos/%s/%s/releases/%d/assets", owner.Name, repo.Name, release.ID)
314312

315313
t.Run("multipart/form-data", func(t *testing.T) {
316314
defer tests.PrintCurrentTest(t)()
315+
const filename = "image.png"
317316

318317
performUpload := func(t *testing.T, uploadURL string, buf []byte, expectedStatus int) *httptest.ResponseRecorder {
319318
body := &bytes.Buffer{}
320319
writer := multipart.NewWriter(body)
321320
part, err := writer.CreateFormFile("attachment", filename)
322321
assert.NoError(t, err)
323-
_, err = io.Copy(part, bytes.NewReader(bufImage.Bytes()))
322+
_, err = io.Copy(part, bytes.NewReader(bufImageBytes))
324323
assert.NoError(t, err)
325324
err = writer.Close()
326325
assert.NoError(t, err)
@@ -334,14 +333,14 @@ func TestAPIUploadAssetRelease(t *testing.T) {
334333
performUpload(t, assetURL, bufLargeBytes, http.StatusRequestEntityTooLarge)
335334

336335
t.Run("UploadDefaultName", func(t *testing.T) {
337-
resp := performUpload(t, assetURL, bufImage.Bytes(), http.StatusCreated)
336+
resp := performUpload(t, assetURL, bufImageBytes, http.StatusCreated)
338337
var attachment api.Attachment
339338
DecodeJSON(t, resp, &attachment)
340339
assert.Equal(t, filename, attachment.Name)
341340
assert.EqualValues(t, 104, attachment.Size)
342341
})
343342
t.Run("UploadWithName", func(t *testing.T) {
344-
resp := performUpload(t, assetURL+"?name=test-asset", bufImage.Bytes(), http.StatusCreated)
343+
resp := performUpload(t, assetURL+"?name=test-asset", bufImageBytes, http.StatusCreated)
345344
var attachment api.Attachment
346345
DecodeJSON(t, resp, &attachment)
347346
assert.Equal(t, "test-asset", attachment.Name)
@@ -352,16 +351,16 @@ func TestAPIUploadAssetRelease(t *testing.T) {
352351
t.Run("application/octet-stream", func(t *testing.T) {
353352
defer tests.PrintCurrentTest(t)()
354353

355-
req := NewRequestWithBody(t, http.MethodPost, assetURL, bytes.NewReader(bufImage.Bytes())).AddTokenAuth(token)
354+
req := NewRequestWithBody(t, http.MethodPost, assetURL, bytes.NewReader(bufImageBytes)).AddTokenAuth(token)
356355
MakeRequest(t, req, http.StatusBadRequest)
357356

358357
req = NewRequestWithBody(t, http.MethodPost, assetURL+"?name=stream.bin", bytes.NewReader(bufLargeBytes)).AddTokenAuth(token)
359358
resp := MakeRequest(t, req, http.StatusRequestEntityTooLarge)
360359

361-
req = NewRequestWithBody(t, http.MethodPost, assetURL+"?name=stream.bin", bytes.NewReader(bufImage.Bytes())).AddTokenAuth(token)
360+
req = NewRequestWithBody(t, http.MethodPost, assetURL+"?name=stream.bin", bytes.NewReader(bufImageBytes)).AddTokenAuth(token)
362361
resp = MakeRequest(t, req, http.StatusCreated)
363362

364-
var attachment *api.Attachment
363+
var attachment api.Attachment
365364
DecodeJSON(t, resp, &attachment)
366365

367366
assert.Equal(t, "stream.bin", attachment.Name)

tests/integration/attachment_test.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"bytes"
88
"image"
99
"image/png"
10-
"io"
1110
"mime/multipart"
1211
"net/http"
1312
"strings"
@@ -21,22 +20,21 @@ import (
2120
"github.com/stretchr/testify/assert"
2221
)
2322

24-
func generateImg() bytes.Buffer {
25-
// Generate image
23+
func testGeneratePngBytes() []byte {
2624
myImage := image.NewRGBA(image.Rect(0, 0, 32, 32))
2725
var buff bytes.Buffer
28-
png.Encode(&buff, myImage)
29-
return buff
26+
_ = png.Encode(&buff, myImage)
27+
return buff.Bytes()
3028
}
3129

32-
func createAttachment(t *testing.T, session *TestSession, csrf, repoURL, filename string, buff bytes.Buffer, expectedStatus int) string {
30+
func testCreateIssueAttachment(t *testing.T, session *TestSession, csrf, repoURL, filename string, content []byte, expectedStatus int) string {
3331
body := &bytes.Buffer{}
3432

3533
// Setup multi-part
3634
writer := multipart.NewWriter(body)
3735
part, err := writer.CreateFormFile("file", filename)
3836
assert.NoError(t, err)
39-
_, err = io.Copy(part, &buff)
37+
_, err = part.Write(content)
4038
assert.NoError(t, err)
4139
err = writer.Close()
4240
assert.NoError(t, err)
@@ -57,14 +55,14 @@ func createAttachment(t *testing.T, session *TestSession, csrf, repoURL, filenam
5755
func TestCreateAnonymousAttachment(t *testing.T) {
5856
defer tests.PrepareTestEnv(t)()
5957
session := emptyTestSession(t)
60-
createAttachment(t, session, GetAnonymousCSRFToken(t, session), "user2/repo1", "image.png", generateImg(), http.StatusSeeOther)
58+
testCreateIssueAttachment(t, session, GetAnonymousCSRFToken(t, session), "user2/repo1", "image.png", testGeneratePngBytes(), http.StatusSeeOther)
6159
}
6260

6361
func TestCreateIssueAttachment(t *testing.T) {
6462
defer tests.PrepareTestEnv(t)()
6563
const repoURL = "user2/repo1"
6664
session := loginUser(t, "user2")
67-
uuid := createAttachment(t, session, GetUserCSRFToken(t, session), repoURL, "image.png", generateImg(), http.StatusOK)
65+
uuid := testCreateIssueAttachment(t, session, GetUserCSRFToken(t, session), repoURL, "image.png", testGeneratePngBytes(), http.StatusOK)
6866

6967
req := NewRequest(t, "GET", repoURL+"/issues/new")
7068
resp := session.MakeRequest(t, req, http.StatusOK)

0 commit comments

Comments
 (0)