webtest: improve error
continuous-integration/drone the build failed
Details
continuous-integration/drone the build failed
Details
This commit is contained in:
parent
979f5fef7d
commit
48b828b029
|
@ -17,7 +17,8 @@ func TestAPIStatus(t *testing.T) {
|
|||
|
||||
obj := Status{}
|
||||
// GET
|
||||
s.Request(http.MethodGet, "/api/status", nil, http.StatusOK, &obj)
|
||||
err := s.Request(http.MethodGet, "/api/status", nil, http.StatusOK, &obj)
|
||||
assert.NoError(err)
|
||||
assert.Equal(VERSION, obj.Version)
|
||||
assert.Equal(EXTRAS, obj.Extras)
|
||||
assert.True(obj.Up)
|
||||
|
@ -26,7 +27,8 @@ func TestAPIStatus(t *testing.T) {
|
|||
|
||||
obj = Status{}
|
||||
// GET - failed status
|
||||
s.Request(http.MethodGet, "/api/status", nil, http.StatusInternalServerError, &obj)
|
||||
err = s.Request(http.MethodGet, "/api/status", nil, http.StatusInternalServerError, &obj)
|
||||
assert.NoError(err)
|
||||
assert.Equal(VERSION, obj.Version)
|
||||
assert.Equal(EXTRAS, obj.Extras)
|
||||
assert.False(obj.Up)
|
||||
|
|
|
@ -20,24 +20,28 @@ func TestAPILogin(t *testing.T) {
|
|||
|
||||
hErr := web.HTTPError{}
|
||||
// invalid
|
||||
s.Request(http.MethodPost, "/api/v1/auth/login", 1, http.StatusBadRequest, &hErr)
|
||||
err := s.Request(http.MethodPost, "/api/v1/auth/login", 1, http.StatusBadRequest, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(web.APIErrorInvalidRequestFormat, hErr.Message)
|
||||
|
||||
req := login{}
|
||||
hErr = web.HTTPError{}
|
||||
// invalid - user
|
||||
s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusUnauthorized, &hErr)
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusUnauthorized, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(APIErrorUserNotFound, hErr.Message)
|
||||
|
||||
req.Username = "admin"
|
||||
hErr = web.HTTPError{}
|
||||
// invalid - password
|
||||
s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusUnauthorized, &hErr)
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusUnauthorized, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(APIErrorIncorrectPassword, hErr.Message)
|
||||
|
||||
req.Password = "CHANGEME"
|
||||
obj := User{}
|
||||
// valid login
|
||||
s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusOK, &obj)
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/login", &req, http.StatusOK, &obj)
|
||||
assert.NoError(err)
|
||||
assert.Equal("admin", obj.Username)
|
||||
}
|
||||
|
|
|
@ -27,23 +27,26 @@ func TestAPIPasswordCode(t *testing.T) {
|
|||
|
||||
hErr := web.HTTPError{}
|
||||
// invalid
|
||||
s.Request(http.MethodPost, "/api/v1/auth/password/code", &passwordNew, http.StatusBadRequest, &hErr)
|
||||
err := s.Request(http.MethodPost, "/api/v1/auth/password/code", &passwordNew, http.StatusBadRequest, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(web.APIErrorInvalidRequestFormat, hErr.Message)
|
||||
|
||||
res := ""
|
||||
// set new password
|
||||
s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
ForgetCode: forgetCode,
|
||||
Password: passwordNew,
|
||||
}, http.StatusOK, &res)
|
||||
assert.NoError(err)
|
||||
assert.Equal("admin", res)
|
||||
|
||||
hErr = web.HTTPError{}
|
||||
// set password without code
|
||||
s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
ForgetCode: forgetCode,
|
||||
Password: passwordCurrent,
|
||||
}, http.StatusBadRequest, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(APIErrorUserNotFound, hErr.Message)
|
||||
|
||||
forgetCode = uuid.New()
|
||||
|
@ -51,9 +54,10 @@ func TestAPIPasswordCode(t *testing.T) {
|
|||
|
||||
res = ""
|
||||
// set old password
|
||||
s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
err = s.Request(http.MethodPost, "/api/v1/auth/password/code", &PasswordWithForgetCode{
|
||||
ForgetCode: forgetCode,
|
||||
Password: passwordCurrent,
|
||||
}, http.StatusOK, &res)
|
||||
assert.NoError(err)
|
||||
assert.Equal("admin", res)
|
||||
}
|
||||
|
|
|
@ -23,23 +23,28 @@ func TestAPIPassword(t *testing.T) {
|
|||
|
||||
hErr := web.HTTPError{}
|
||||
// no auth
|
||||
s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordNew, http.StatusUnauthorized, &hErr)
|
||||
err := s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordNew, http.StatusUnauthorized, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(APIErrorNoSession, hErr.Message)
|
||||
|
||||
s.TestLogin()
|
||||
err = s.TestLogin()
|
||||
assert.NoError(err)
|
||||
|
||||
hErr = web.HTTPError{}
|
||||
// invalid
|
||||
s.Request(http.MethodPost, "/api/v1/my/auth/password", nil, http.StatusBadRequest, &hErr)
|
||||
err = s.Request(http.MethodPost, "/api/v1/my/auth/password", nil, http.StatusBadRequest, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(web.APIErrorInvalidRequestFormat, hErr.Message)
|
||||
|
||||
res := false
|
||||
// set new password
|
||||
s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordNew, http.StatusOK, &res)
|
||||
err = s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordNew, http.StatusOK, &res)
|
||||
assert.NoError(err)
|
||||
assert.True(res)
|
||||
|
||||
res = false
|
||||
// set old password
|
||||
s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordCurrent, http.StatusOK, &res)
|
||||
err = s.Request(http.MethodPost, "/api/v1/my/auth/password", &passwordCurrent, http.StatusOK, &res)
|
||||
assert.NoError(err)
|
||||
assert.True(res)
|
||||
}
|
||||
|
|
|
@ -20,14 +20,17 @@ func TestAPIStatus(t *testing.T) {
|
|||
|
||||
hErr := web.HTTPError{}
|
||||
// invalid
|
||||
s.Request(http.MethodGet, "/api/v1/auth/status", nil, http.StatusUnauthorized, &hErr)
|
||||
err := s.Request(http.MethodGet, "/api/v1/auth/status", nil, http.StatusUnauthorized, &hErr)
|
||||
assert.NoError(err)
|
||||
assert.Equal(APIErrorNoSession, hErr.Message)
|
||||
|
||||
s.TestLogin()
|
||||
err = s.TestLogin()
|
||||
assert.NoError(err)
|
||||
|
||||
obj := User{}
|
||||
// invalid - user
|
||||
s.Request(http.MethodGet, "/api/v1/auth/status", nil, http.StatusOK, &obj)
|
||||
err = s.Request(http.MethodGet, "/api/v1/auth/status", nil, http.StatusOK, &obj)
|
||||
assert.NoError(err)
|
||||
assert.Equal("admin", obj.Username)
|
||||
|
||||
}
|
||||
|
|
|
@ -16,10 +16,12 @@ func TestMetricsLoaded(t *testing.T) {
|
|||
assert.NotNil(s)
|
||||
|
||||
// GET
|
||||
s.Request(http.MethodGet, "/metrics", nil, http.StatusOK, nil)
|
||||
err := s.Request(http.MethodGet, "/metrics", nil, http.StatusOK, nil)
|
||||
assert.NoError(err)
|
||||
|
||||
UP = func() bool { return false }
|
||||
|
||||
// GET
|
||||
s.Request(http.MethodGet, "/metrics", nil, http.StatusOK, nil)
|
||||
err = s.Request(http.MethodGet, "/metrics", nil, http.StatusOK, nil)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
|
|
@ -90,19 +90,23 @@ func (s *testServer) DatabaseForget() {
|
|||
}
|
||||
|
||||
// Request sends a request to webtest WebService
|
||||
func (s *testServer) Request(method, url string, body interface{}, expectCode int, jsonObj interface{}) {
|
||||
func (s *testServer) Request(method, url string, body interface{}, expectCode int, jsonObj interface{}) error {
|
||||
var jsonBody io.Reader
|
||||
if body != nil {
|
||||
if strBody, ok := body.(string); ok {
|
||||
jsonBody = strings.NewReader(strBody)
|
||||
} else {
|
||||
jsonBodyArray, err := json.Marshal(body)
|
||||
s.assert.Nil(err, "no request created")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jsonBody = bytes.NewBuffer(jsonBodyArray)
|
||||
}
|
||||
}
|
||||
req, err := http.NewRequest(method, url, jsonBody)
|
||||
s.assert.Nil(err, "no request created")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(s.lastCookies) > 0 {
|
||||
for _, c := range s.lastCookies {
|
||||
req.AddCookie(c)
|
||||
|
@ -114,14 +118,15 @@ func (s *testServer) Request(method, url string, body interface{}, expectCode in
|
|||
// valid statusCode
|
||||
s.assert.Equal(expectCode, w.Code, "expected http status code")
|
||||
if expectCode != w.Code {
|
||||
fmt.Printf("wrong status code, body:%v\n", w.Body)
|
||||
return
|
||||
return fmt.Errorf("wrong status code, body: %v", w.Body)
|
||||
}
|
||||
|
||||
if jsonObj != nil {
|
||||
// fetch JSON
|
||||
err = json.NewDecoder(w.Body).Decode(jsonObj)
|
||||
s.assert.Nil(err, "decode json")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
result := w.Result()
|
||||
|
@ -131,17 +136,18 @@ func (s *testServer) Request(method, url string, body interface{}, expectCode in
|
|||
s.lastCookies = cookies
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Login to API by send request
|
||||
func (s *testServer) Login(login Login) {
|
||||
func (s *testServer) Login(login Login) error {
|
||||
// POST: correct login
|
||||
s.Request(http.MethodPost, "/api/v1/auth/login", &login, http.StatusOK, nil)
|
||||
return s.Request(http.MethodPost, "/api/v1/auth/login", &login, http.StatusOK, nil)
|
||||
}
|
||||
|
||||
// TestLogin to API by default login data
|
||||
func (s *testServer) TestLogin() {
|
||||
s.Login(Login{
|
||||
func (s *testServer) TestLogin() error {
|
||||
return s.Login(Login{
|
||||
Username: "admin",
|
||||
Password: "CHANGEME",
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue