2017-05-07 17:40:31 +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 (
"net/http"
"path"
"testing"
2017-06-17 07:49:45 +03:00
api "code.gitea.io/sdk/gitea"
2017-05-07 17:40:31 +03:00
"github.com/stretchr/testify/assert"
)
func TestRepoCommits ( t * testing . T ) {
prepareTestEnv ( t )
2017-06-17 07:49:45 +03:00
session := loginUser ( t , "user2" )
2017-05-07 17:40:31 +03:00
// Request repository commits page
2017-10-30 05:04:25 +03:00
req := NewRequest ( t , "GET" , "/user2/repo1/commits/branch/master" )
2017-07-07 22:36:47 +03:00
resp := session . MakeRequest ( t , req , http . StatusOK )
2017-05-07 17:40:31 +03:00
2017-06-17 19:29:59 +03:00
doc := NewHTMLParser ( t , resp . Body )
2017-05-07 17:40:31 +03:00
commitURL , exists := doc . doc . Find ( "#commits-table tbody tr td.sha a" ) . Attr ( "href" )
assert . True ( t , exists )
assert . NotEmpty ( t , commitURL )
}
func doTestRepoCommitWithStatus ( t * testing . T , state string , classes ... string ) {
prepareTestEnv ( t )
2017-06-17 07:49:45 +03:00
session := loginUser ( t , "user2" )
2018-09-10 19:15:52 +03:00
token := getTokenForLoggedInUser ( t , session )
2017-05-07 17:40:31 +03:00
// Request repository commits page
2017-10-30 05:04:25 +03:00
req := NewRequest ( t , "GET" , "/user2/repo1/commits/branch/master" )
2017-07-07 22:36:47 +03:00
resp := session . MakeRequest ( t , req , http . StatusOK )
2017-05-07 17:40:31 +03:00
2017-06-17 19:29:59 +03:00
doc := NewHTMLParser ( t , resp . Body )
2017-05-07 17:40:31 +03:00
// Get first commit URL
commitURL , exists := doc . doc . Find ( "#commits-table tbody tr td.sha a" ) . Attr ( "href" )
assert . True ( t , exists )
assert . NotEmpty ( t , commitURL )
// Call API to add status for commit
2018-09-10 19:15:52 +03:00
req = NewRequestWithJSON ( t , "POST" , "/api/v1/repos/user2/repo1/statuses/" + path . Base ( commitURL ) + "?token=" + token ,
2017-06-17 07:49:45 +03:00
api . CreateStatusOption {
State : api . StatusState ( state ) ,
TargetURL : "http://test.ci/" ,
Description : "" ,
Context : "testci" ,
} ,
)
2017-05-07 17:40:31 +03:00
2017-07-07 22:36:47 +03:00
resp = session . MakeRequest ( t , req , http . StatusCreated )
2017-05-07 17:40:31 +03:00
2017-10-30 05:04:25 +03:00
req = NewRequest ( t , "GET" , "/user2/repo1/commits/branch/master" )
2017-07-07 22:36:47 +03:00
resp = session . MakeRequest ( t , req , http . StatusOK )
2017-05-07 17:40:31 +03:00
2017-06-17 19:29:59 +03:00
doc = NewHTMLParser ( t , resp . Body )
2017-05-07 17:40:31 +03:00
// Check if commit status is displayed in message column
sel := doc . doc . Find ( "#commits-table tbody tr td.message i.commit-status" )
assert . Equal ( t , sel . Length ( ) , 1 )
for _ , class := range classes {
assert . True ( t , sel . HasClass ( class ) )
}
}
func TestRepoCommitsWithStatusPending ( t * testing . T ) {
doTestRepoCommitWithStatus ( t , "pending" , "circle" , "yellow" )
}
func TestRepoCommitsWithStatusSuccess ( t * testing . T ) {
doTestRepoCommitWithStatus ( t , "success" , "check" , "green" )
}
func TestRepoCommitsWithStatusError ( t * testing . T ) {
doTestRepoCommitWithStatus ( t , "error" , "warning" , "red" )
}
func TestRepoCommitsWithStatusFailure ( t * testing . T ) {
doTestRepoCommitWithStatus ( t , "failure" , "remove" , "red" )
}
func TestRepoCommitsWithStatusWarning ( t * testing . T ) {
doTestRepoCommitWithStatus ( t , "warning" , "warning" , "sign" , "yellow" )
}