2017-10-26 03:49:16 +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"
"net/url"
"testing"
"github.com/PuerkitoBio/goquery"
"github.com/stretchr/testify/assert"
2019-08-23 19:40:30 +03:00
"github.com/unknwon/i18n"
2017-10-26 03:49:16 +03:00
)
func TestViewBranches ( t * testing . T ) {
2019-11-26 02:21:37 +03:00
defer prepareTestEnv ( t ) ( )
2017-10-26 03:49:16 +03:00
req := NewRequest ( t , "GET" , "/user2/repo1/branches" )
resp := MakeRequest ( t , req , http . StatusOK )
htmlDoc := NewHTMLParser ( t , resp . Body )
_ , exists := htmlDoc . doc . Find ( ".delete-branch-button" ) . Attr ( "data-url" )
assert . False ( t , exists , "The template has changed" )
}
func TestDeleteBranch ( t * testing . T ) {
2019-11-26 02:21:37 +03:00
defer prepareTestEnv ( t ) ( )
2017-10-26 03:49:16 +03:00
deleteBranch ( t )
}
func TestUndoDeleteBranch ( t * testing . T ) {
2020-06-12 02:49:47 +03:00
onGiteaRun ( t , func ( t * testing . T , u * url . URL ) {
deleteBranch ( t )
htmlDoc , name := branchAction ( t , ".undo-button" )
assert . Contains ( t ,
htmlDoc . doc . Find ( ".ui.positive.message" ) . Text ( ) ,
i18n . Tr ( "en" , "repo.branch.restore_success" , name ) ,
)
} )
2017-10-26 03:49:16 +03:00
}
func deleteBranch ( t * testing . T ) {
htmlDoc , name := branchAction ( t , ".delete-branch-button" )
assert . Contains ( t ,
htmlDoc . doc . Find ( ".ui.positive.message" ) . Text ( ) ,
i18n . Tr ( "en" , "repo.branch.deletion_success" , name ) ,
)
}
func branchAction ( t * testing . T , button string ) ( * HTMLDoc , string ) {
session := loginUser ( t , "user2" )
req := NewRequest ( t , "GET" , "/user2/repo1/branches" )
resp := session . MakeRequest ( t , req , http . StatusOK )
htmlDoc := NewHTMLParser ( t , resp . Body )
link , exists := htmlDoc . doc . Find ( button ) . Attr ( "data-url" )
2021-02-03 22:06:13 +03:00
if ! assert . True ( t , exists , "The template has changed" ) {
t . Skip ( )
}
2017-10-26 03:49:16 +03:00
req = NewRequestWithValues ( t , "POST" , link , map [ string ] string {
2017-12-04 01:46:01 +03:00
"_csrf" : getCsrf ( t , htmlDoc . doc ) ,
2017-10-26 03:49:16 +03:00
} )
2019-06-12 22:41:28 +03:00
session . MakeRequest ( t , req , http . StatusOK )
2017-10-26 03:49:16 +03:00
url , err := url . Parse ( link )
assert . NoError ( t , err )
req = NewRequest ( t , "GET" , "/user2/repo1/branches" )
resp = session . MakeRequest ( t , req , http . StatusOK )
2021-02-03 22:06:13 +03:00
return NewHTMLParser ( t , resp . Body ) , url . Query ( ) . Get ( "name" )
2017-10-26 03:49:16 +03:00
}
2017-12-04 01:46:01 +03:00
func getCsrf ( t * testing . T , doc * goquery . Document ) string {
csrf , exists := doc . Find ( "meta[name=\"_csrf\"]" ) . Attr ( "content" )
assert . True ( t , exists )
2017-10-26 03:49:16 +03:00
return csrf
}