2017-06-30 19:50:57 +03:00
// 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 (
2018-08-13 22:04:39 +03:00
"fmt"
2017-06-30 19:50:57 +03:00
"net/http"
"testing"
"code.gitea.io/gitea/models"
2018-08-13 22:04:39 +03:00
"code.gitea.io/gitea/modules/auth"
"code.gitea.io/gitea/modules/setting"
2017-06-30 19:50:57 +03:00
api "code.gitea.io/sdk/gitea"
"github.com/stretchr/testify/assert"
)
func TestAPIViewPulls ( t * testing . T ) {
prepareTestEnv ( t )
repo := models . AssertExistsAndLoadBean ( t , & models . Repository { ID : 1 } ) . ( * models . Repository )
owner := models . AssertExistsAndLoadBean ( t , & models . User { ID : repo . OwnerID } ) . ( * models . User )
session := loginUser ( t , "user2" )
2018-09-10 19:15:52 +03:00
token := getTokenForLoggedInUser ( t , session )
req := NewRequestf ( t , "GET" , "/api/v1/repos/%s/%s/pulls?state=all&token=" + token , owner . Name , repo . Name )
2017-07-07 22:36:47 +03:00
resp := session . MakeRequest ( t , req , http . StatusOK )
2017-06-30 19:50:57 +03:00
var pulls [ ] * api . PullRequest
DecodeJSON ( t , resp , & pulls )
expectedLen := models . GetCount ( t , & models . Issue { RepoID : repo . ID } , models . Cond ( "is_pull = ?" , true ) )
assert . Len ( t , pulls , expectedLen )
}
2018-08-13 22:04:39 +03:00
// TestAPIMergePullWIP ensures that we can't merge a WIP pull request
func TestAPIMergePullWIP ( t * testing . T ) {
prepareTestEnv ( t )
repo := models . AssertExistsAndLoadBean ( t , & models . Repository { ID : 1 } ) . ( * models . Repository )
owner := models . AssertExistsAndLoadBean ( t , & models . User { ID : repo . OwnerID } ) . ( * models . User )
pr := models . AssertExistsAndLoadBean ( t , & models . PullRequest { Status : models . PullRequestStatusMergeable } , models . Cond ( "has_merged = ?" , false ) ) . ( * models . PullRequest )
pr . LoadIssue ( )
pr . Issue . ChangeTitle ( owner , setting . Repository . PullRequest . WorkInProgressPrefixes [ 0 ] + " " + pr . Issue . Title )
// force reload
pr . LoadAttributes ( )
assert . Contains ( t , pr . Issue . Title , setting . Repository . PullRequest . WorkInProgressPrefixes [ 0 ] )
session := loginUser ( t , owner . Name )
2018-09-10 19:15:52 +03:00
token := getTokenForLoggedInUser ( t , session )
req := NewRequestWithJSON ( t , http . MethodPost , fmt . Sprintf ( "/api/v1/repos/%s/%s/pulls/%d/merge?token=%s" , owner . Name , repo . Name , pr . Index , token ) , & auth . MergePullRequestForm {
2018-08-13 22:04:39 +03:00
MergeMessageField : pr . Issue . Title ,
Do : string ( models . MergeStyleMerge ) ,
} )
session . MakeRequest ( t , req , http . StatusMethodNotAllowed )
}