-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexecutor_test.go
84 lines (64 loc) · 2.54 KB
/
executor_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package httransform
import (
"testing"
"time"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"
"github.com/valyala/fasthttp"
"golang.org/x/xerrors"
)
type MockHTTPRequestExecutor struct {
mock.Mock
}
func (m *MockHTTPRequestExecutor) Do(req *fasthttp.Request, resp *fasthttp.Response) error {
args := m.Called(req, resp)
resp.SetStatusCode(fasthttp.StatusNotFound)
return args.Error(0)
}
func (m *MockHTTPRequestExecutor) DoTimeout(req *fasthttp.Request, resp *fasthttp.Response, timeout time.Duration) error {
args := m.Called(req, resp, timeout)
resp.SetStatusCode(fasthttp.StatusNotFound)
return args.Error(0)
}
type ExecuteRequestTestSuite struct {
suite.Suite
executor *MockHTTPRequestExecutor
request *fasthttp.Request
response *fasthttp.Response
}
func (suite *ExecuteRequestTestSuite) SetupTest() {
suite.executor = &MockHTTPRequestExecutor{}
suite.request = fasthttp.AcquireRequest()
suite.response = fasthttp.AcquireResponse()
}
func (suite *ExecuteRequestTestSuite) TearDownTest() {
fasthttp.ReleaseRequest(suite.request)
fasthttp.ReleaseResponse(suite.response)
}
func (suite *ExecuteRequestTestSuite) TestExecuteRequestOK() {
suite.executor.On("Do", suite.request, suite.response).Return(nil)
ExecuteRequest(suite.executor, suite.request, suite.response)
suite.executor.AssertExpectations(suite.T())
suite.Equal(suite.response.StatusCode(), fasthttp.StatusNotFound)
}
func (suite *ExecuteRequestTestSuite) TestExecuteRequestErr() {
suite.executor.On("Do", suite.request, suite.response).Return(xerrors.New("Some error"))
ExecuteRequest(suite.executor, suite.request, suite.response)
suite.executor.AssertExpectations(suite.T())
suite.Equal(suite.response.StatusCode(), fasthttp.StatusBadGateway)
}
func (suite *ExecuteRequestTestSuite) TestExecuteRequestTimeoutOK() {
suite.executor.On("DoTimeout", suite.request, suite.response, time.Minute).Return(nil)
ExecuteRequestTimeout(suite.executor, suite.request, suite.response, time.Minute)
suite.executor.AssertExpectations(suite.T())
suite.Equal(suite.response.StatusCode(), fasthttp.StatusNotFound)
}
func (suite *ExecuteRequestTestSuite) TestExecuteRequestTimeoutErr() {
suite.executor.On("DoTimeout", suite.request, suite.response, time.Minute).Return(xerrors.New("Some error"))
ExecuteRequestTimeout(suite.executor, suite.request, suite.response, time.Minute)
suite.executor.AssertExpectations(suite.T())
suite.Equal(suite.response.StatusCode(), fasthttp.StatusBadGateway)
}
func TestExecuteRequest(t *testing.T) {
suite.Run(t, &ExecuteRequestTestSuite{})
}