@@ -101,7 +101,7 @@ func TestCreateFileOnProtectedBranch(t *testing.T) { | |||||
assert.Contains(t, string(resp.Body), "Can not commit to protected branch 'master'.") | assert.Contains(t, string(resp.Body), "Can not commit to protected branch 'master'.") | ||||
} | } | ||||
func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePath string) { | |||||
func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePath string) *TestResponse { | |||||
newContent := "Hello, World (Edited)\n" | newContent := "Hello, World (Edited)\n" | ||||
@@ -134,6 +134,8 @@ func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePa | |||||
resp = session.MakeRequest(t, req) | resp = session.MakeRequest(t, req) | ||||
assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | ||||
assert.EqualValues(t, newContent, string(resp.Body)) | assert.EqualValues(t, newContent, string(resp.Body)) | ||||
return resp | |||||
} | } | ||||
func TestEditFile(t *testing.T) { | func TestEditFile(t *testing.T) { | ||||
@@ -14,7 +14,7 @@ import ( | |||||
"github.com/stretchr/testify/assert" | "github.com/stretchr/testify/assert" | ||||
) | ) | ||||
func testPullCreate(t *testing.T, session *TestSession, user, repo, branch string) { | |||||
func testPullCreate(t *testing.T, session *TestSession, user, repo, branch string) *TestResponse { | |||||
req := NewRequest(t, "GET", path.Join(user, repo)) | req := NewRequest(t, "GET", path.Join(user, repo)) | ||||
resp := session.MakeRequest(t, req) | resp := session.MakeRequest(t, req) | ||||
assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | ||||
@@ -45,6 +45,8 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo, branch strin | |||||
assert.EqualValues(t, http.StatusFound, resp.HeaderCode) | assert.EqualValues(t, http.StatusFound, resp.HeaderCode) | ||||
//TODO check the redirected URL | //TODO check the redirected URL | ||||
return resp | |||||
} | } | ||||
func TestPullCreate(t *testing.T) { | func TestPullCreate(t *testing.T) { | ||||
@@ -0,0 +1,53 @@ | |||||
// Copyright 2017 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" | |||||
"net/http" | |||||
"net/url" | |||||
"path" | |||||
"strings" | |||||
"testing" | |||||
"github.com/stretchr/testify/assert" | |||||
) | |||||
func testPullMerge(t *testing.T, session *TestSession, user, repo, pullnum string) *TestResponse { | |||||
req := NewRequest(t, "GET", path.Join(user, repo, "pulls", pullnum)) | |||||
resp := session.MakeRequest(t, req) | |||||
assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | |||||
// Click the little green button to craete a pull | |||||
htmlDoc, err := NewHtmlParser(resp.Body) | |||||
assert.NoError(t, err) | |||||
link, exists := htmlDoc.doc.Find("form.ui.form>button.ui.green.button").Parent().Attr("action") | |||||
assert.True(t, exists, "The template has changed") | |||||
req = NewRequestBody(t, "POST", link, | |||||
bytes.NewBufferString(url.Values{ | |||||
"_csrf": []string{htmlDoc.GetInputValueByName("_csrf")}, | |||||
}.Encode()), | |||||
) | |||||
req.Header.Add("Content-Type", "application/x-www-form-urlencoded") | |||||
resp = session.MakeRequest(t, req) | |||||
assert.EqualValues(t, http.StatusFound, resp.HeaderCode) | |||||
return resp | |||||
} | |||||
func TestPullMerge(t *testing.T) { | |||||
prepareTestEnv(t) | |||||
session := loginUser(t, "user1", "password") | |||||
testRepoFork(t, session) | |||||
testEditFile(t, session, "user1", "repo1", "master", "README.md") | |||||
resp := testPullCreate(t, session, "user1", "repo1", "master") | |||||
redirectedURL := resp.Headers["Location"] | |||||
assert.NotEmpty(t, redirectedURL, "Redirected URL is not found") | |||||
elem := strings.Split(redirectedURL[0], "/") | |||||
assert.EqualValues(t, "pulls", elem[3]) | |||||
testPullMerge(t, session, elem[1], elem[2], elem[4]) | |||||
} |
@@ -13,7 +13,7 @@ import ( | |||||
"github.com/stretchr/testify/assert" | "github.com/stretchr/testify/assert" | ||||
) | ) | ||||
func testRepoFork(t *testing.T, session *TestSession) { | |||||
func testRepoFork(t *testing.T, session *TestSession) *TestResponse { | |||||
// Step0: check the existence of the to-fork repo | // Step0: check the existence of the to-fork repo | ||||
req := NewRequest(t, "GET", "/user1/repo1") | req := NewRequest(t, "GET", "/user1/repo1") | ||||
resp := session.MakeRequest(t, req) | resp := session.MakeRequest(t, req) | ||||
@@ -53,6 +53,8 @@ func testRepoFork(t *testing.T, session *TestSession) { | |||||
req = NewRequest(t, "GET", "/user1/repo1") | req = NewRequest(t, "GET", "/user1/repo1") | ||||
resp = session.MakeRequest(t, req) | resp = session.MakeRequest(t, req) | ||||
assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | assert.EqualValues(t, http.StatusOK, resp.HeaderCode) | ||||
return resp | |||||
} | } | ||||
func TestRepoFork(t *testing.T) { | func TestRepoFork(t *testing.T) { | ||||