2017-05-02 03:49:55 +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 (
"bytes"
2017-06-17 07:49:45 +03:00
"testing"
2017-05-02 03:49:55 +03:00
2017-05-07 17:40:31 +03:00
"github.com/PuerkitoBio/goquery"
2017-06-17 07:49:45 +03:00
"github.com/stretchr/testify/assert"
2017-05-02 03:49:55 +03:00
)
2017-06-17 19:29:59 +03:00
// HTMLDoc struct
type HTMLDoc struct {
2017-05-07 17:40:31 +03:00
doc * goquery . Document
2017-05-02 03:49:55 +03:00
}
2017-06-17 19:29:59 +03:00
// NewHTMLParser parse html file
2017-12-04 01:46:01 +03:00
func NewHTMLParser ( t testing . TB , body * bytes . Buffer ) * HTMLDoc {
2019-07-29 07:15:18 +03:00
t . Helper ( )
2017-12-04 01:46:01 +03:00
doc , err := goquery . NewDocumentFromReader ( body )
2017-06-17 07:49:45 +03:00
assert . NoError ( t , err )
2017-06-17 19:29:59 +03:00
return & HTMLDoc { doc : doc }
2017-05-02 03:49:55 +03:00
}
2017-06-17 19:29:59 +03:00
// GetInputValueByID for get input value by id
func ( doc * HTMLDoc ) GetInputValueByID ( id string ) string {
2017-05-07 17:40:31 +03:00
text , _ := doc . doc . Find ( "#" + id ) . Attr ( "value" )
return text
2017-05-02 03:49:55 +03:00
}
2017-06-17 19:29:59 +03:00
// GetInputValueByName for get input value by name
func ( doc * HTMLDoc ) GetInputValueByName ( name string ) string {
2017-05-07 17:40:31 +03:00
text , _ := doc . doc . Find ( "input[name=\"" + name + "\"]" ) . Attr ( "value" )
return text
2017-05-02 03:49:55 +03:00
}
2017-06-17 07:49:45 +03:00
2017-06-17 19:29:59 +03:00
// GetCSRF for get CSRC token value from input
func ( doc * HTMLDoc ) GetCSRF ( ) string {
2017-06-17 07:49:45 +03:00
return doc . GetInputValueByName ( "_csrf" )
}
2017-09-12 09:48:13 +03:00
// AssertElement check if element by selector exists or does not exist depending on checkExists
func ( doc * HTMLDoc ) AssertElement ( t testing . TB , selector string , checkExists bool ) {
sel := doc . doc . Find ( selector )
if checkExists {
assert . Equal ( t , 1 , sel . Length ( ) )
} else {
assert . Equal ( t , 0 , sel . Length ( ) )
}
}