|
|
|
package framework
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/fatedier/frp/test/e2e/framework/consts"
|
|
|
|
"github.com/fatedier/frp/test/e2e/pkg/request"
|
|
|
|
)
|
|
|
|
|
|
|
|
func SetRequestProtocol(protocol string) func(*request.Request) {
|
|
|
|
return func(r *request.Request) {
|
|
|
|
r.Protocol(protocol)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetRequestPort(port int) func(*request.Request) {
|
|
|
|
return func(r *request.Request) {
|
|
|
|
r.Port(port)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewRequest return a default TCP request with default timeout and content.
|
|
|
|
func NewRequest() *request.Request {
|
|
|
|
return request.New().
|
|
|
|
Timeout(consts.DefaultTimeout).
|
|
|
|
Body([]byte(consts.TestString))
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExpectResponse(req *request.Request, expectResp []byte, explain ...interface{}) {
|
|
|
|
ret, err := req.Do()
|
|
|
|
ExpectNoError(err, explain...)
|
|
|
|
ExpectEqualValues(expectResp, ret, explain...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExpectResponseError(req *request.Request, explain ...interface{}) {
|
|
|
|
_, err := req.Do()
|
|
|
|
ExpectError(err, explain...)
|
|
|
|
}
|
|
|
|
|
|
|
|
type RequestExpect struct {
|
|
|
|
req *request.Request
|
|
|
|
|
|
|
|
f *Framework
|
|
|
|
expectResp []byte
|
|
|
|
expectError bool
|
|
|
|
explain []interface{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewRequestExpect(f *Framework) *RequestExpect {
|
|
|
|
return &RequestExpect{
|
|
|
|
req: NewRequest(),
|
|
|
|
f: f,
|
|
|
|
expectResp: []byte(consts.TestString),
|
|
|
|
expectError: false,
|
|
|
|
explain: make([]interface{}, 0),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) RequestModify(f func(r *request.Request)) *RequestExpect {
|
|
|
|
f(e.req)
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) PortName(name string) *RequestExpect {
|
|
|
|
if e.f != nil {
|
|
|
|
e.req.Port(e.f.PortByName(name))
|
|
|
|
}
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) ExpectResp(resp []byte) *RequestExpect {
|
|
|
|
e.expectResp = resp
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) ExpectError(expectErr bool) *RequestExpect {
|
|
|
|
e.expectError = expectErr
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) Explain(explain ...interface{}) *RequestExpect {
|
|
|
|
e.explain = explain
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *RequestExpect) Ensure() {
|
|
|
|
if e.expectError {
|
|
|
|
ExpectResponseError(e.req, e.explain...)
|
|
|
|
} else {
|
|
|
|
ExpectResponse(e.req, e.expectResp, e.explain...)
|
|
|
|
}
|
|
|
|
}
|