* tests: add attachements integration * Update integrations/attachement_test.go Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>tags/v1.21.12.1
| @@ -0,0 +1,88 @@ | |||||
| // Copyright 2019 The Gitea Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package integrations | |||||
| import ( | |||||
| "bytes" | |||||
| "image" | |||||
| "image/png" | |||||
| "io" | |||||
| "mime/multipart" | |||||
| "net/http" | |||||
| "testing" | |||||
| "code.gitea.io/gitea/modules/test" | |||||
| "github.com/stretchr/testify/assert" | |||||
| ) | |||||
| func generateImg() bytes.Buffer { | |||||
| // Generate image | |||||
| myImage := image.NewRGBA(image.Rect(0, 0, 32, 32)) | |||||
| var buff bytes.Buffer | |||||
| png.Encode(&buff, myImage) | |||||
| return buff | |||||
| } | |||||
| func createAttachment(t *testing.T, session *TestSession, repoURL, filename string, buff bytes.Buffer, expectedStatus int) string { | |||||
| body := &bytes.Buffer{} | |||||
| //Setup multi-part | |||||
| writer := multipart.NewWriter(body) | |||||
| part, err := writer.CreateFormFile("file", filename) | |||||
| assert.NoError(t, err) | |||||
| _, err = io.Copy(part, &buff) | |||||
| assert.NoError(t, err) | |||||
| err = writer.Close() | |||||
| assert.NoError(t, err) | |||||
| csrf := GetCSRF(t, session, repoURL) | |||||
| req := NewRequestWithBody(t, "POST", "/attachments", body) | |||||
| req.Header.Add("X-Csrf-Token", csrf) | |||||
| req.Header.Add("Content-Type", writer.FormDataContentType()) | |||||
| resp := session.MakeRequest(t, req, expectedStatus) | |||||
| if expectedStatus != http.StatusOK { | |||||
| return "" | |||||
| } | |||||
| var obj map[string]string | |||||
| DecodeJSON(t, resp, &obj) | |||||
| return obj["uuid"] | |||||
| } | |||||
| func TestCreateAnonymousAttachment(t *testing.T) { | |||||
| prepareTestEnv(t) | |||||
| session := emptyTestSession(t) | |||||
| createAttachment(t, session, "user2/repo1", "image.png", generateImg(), http.StatusFound) | |||||
| } | |||||
| func TestCreateIssueAttachement(t *testing.T) { | |||||
| prepareTestEnv(t) | |||||
| const repoURL = "user2/repo1" | |||||
| session := loginUser(t, "user2") | |||||
| uuid := createAttachment(t, session, repoURL, "image.png", generateImg(), http.StatusOK) | |||||
| req := NewRequest(t, "GET", repoURL+"/issues/new") | |||||
| resp := session.MakeRequest(t, req, http.StatusOK) | |||||
| htmlDoc := NewHTMLParser(t, resp.Body) | |||||
| link, exists := htmlDoc.doc.Find("form").Attr("action") | |||||
| assert.True(t, exists, "The template has changed") | |||||
| postData := map[string]string{ | |||||
| "_csrf": htmlDoc.GetCSRF(), | |||||
| "title": "New Issue With Attachement", | |||||
| "content": "some content", | |||||
| "files[0]": uuid, | |||||
| } | |||||
| req = NewRequestWithValues(t, "POST", link, postData) | |||||
| resp = session.MakeRequest(t, req, http.StatusFound) | |||||
| test.RedirectURL(resp) // check that redirect URL exists | |||||
| //Validate that attachement is available | |||||
| req = NewRequest(t, "GET", "/attachments/"+uuid) | |||||
| session.MakeRequest(t, req, http.StatusOK) | |||||
| } | |||||
| @@ -78,7 +78,7 @@ func TestCreateRelease(t *testing.T) { | |||||
| session := loginUser(t, "user2") | session := loginUser(t, "user2") | ||||
| createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", false, false) | createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", false, false) | ||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.stable"), 1) | |||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.stable"), 2) | |||||
| } | } | ||||
| func TestCreateReleasePreRelease(t *testing.T) { | func TestCreateReleasePreRelease(t *testing.T) { | ||||
| @@ -87,7 +87,7 @@ func TestCreateReleasePreRelease(t *testing.T) { | |||||
| session := loginUser(t, "user2") | session := loginUser(t, "user2") | ||||
| createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", true, false) | createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", true, false) | ||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.prerelease"), 1) | |||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.prerelease"), 2) | |||||
| } | } | ||||
| func TestCreateReleaseDraft(t *testing.T) { | func TestCreateReleaseDraft(t *testing.T) { | ||||
| @@ -96,7 +96,7 @@ func TestCreateReleaseDraft(t *testing.T) { | |||||
| session := loginUser(t, "user2") | session := loginUser(t, "user2") | ||||
| createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", false, true) | createNewRelease(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", false, true) | ||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.draft"), 1) | |||||
| checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", i18n.Tr("en", "repo.release.draft"), 2) | |||||
| } | } | ||||
| func TestCreateReleasePaging(t *testing.T) { | func TestCreateReleasePaging(t *testing.T) { | ||||
| @@ -69,3 +69,18 @@ | |||||
| name: attach1 | name: attach1 | ||||
| download_count: 0 | download_count: 0 | ||||
| created_unix: 946684800 | created_unix: 946684800 | ||||
| - | |||||
| id: 9 | |||||
| uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a19 | |||||
| release_id: 1 | |||||
| name: attach1 | |||||
| download_count: 0 | |||||
| created_unix: 946684800 | |||||
| - | |||||
| id: 10 | |||||
| uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a20 | |||||
| name: attach1 | |||||
| download_count: 0 | |||||
| created_unix: 946684800 | |||||
| @@ -1 +1,14 @@ | |||||
| [] # empty | |||||
| - | |||||
| id: 1 | |||||
| repo_id: 1 | |||||
| publisher_id: 2 | |||||
| tag_name: "v1.1" | |||||
| lower_tag_name: "v1.1" | |||||
| target: "master" | |||||
| title: "testing-release" | |||||
| sha1: "65f1bf27bc3bf70f64657658635e66094edbcb4d" | |||||
| num_commits: 10 | |||||
| is_draft: false | |||||
| is_prerelease: false | |||||
| is_tag: false | |||||
| created_unix: 946684800 | |||||