Adds tests for register route
This commit is contained in:
parent
c9675b1573
commit
249fabbd7a
@ -9,7 +9,8 @@ import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func newAuthRouter(m *models.Model, tok tokens.Toker) http.Handler {
|
||||
// NewAuthRouter returns a new auth router.
|
||||
func NewAuthRouter(m *models.Model, tok tokens.Toker) http.Handler {
|
||||
router := chi.NewRouter()
|
||||
router.Post("/register", postUserFunc(m))
|
||||
router.Post("/tokens", createTokenFunc(m, tok))
|
||||
|
139
routes/auth_register_test.go
Normal file
139
routes/auth_register_test.go
Normal file
@ -0,0 +1,139 @@
|
||||
package routes_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"gitea.deepak.science/deepak/gogmagog/routes"
|
||||
"gitea.deepak.science/deepak/gogmagog/tokens"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRegisterAuth(t *testing.T) {
|
||||
// set up
|
||||
assert := assert.New(t)
|
||||
m := getEmptyModel()
|
||||
toker := tokens.New("secret")
|
||||
data := []byte(`{
|
||||
"username": "test",
|
||||
"password": "pass",
|
||||
"display_name": "My Display Name"
|
||||
}`)
|
||||
req, _ := http.NewRequest("POST", "/register", bytes.NewBuffer(data))
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
// function under test
|
||||
router := routes.NewAuthRouter(m, toker)
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
// check results
|
||||
status := rr.Code
|
||||
assert.Equal(http.StatusCreated, status)
|
||||
expected := `{
|
||||
"username": "test"
|
||||
}`
|
||||
assert.JSONEq(expected, rr.Body.String())
|
||||
contentType := rr.Header().Get("Content-Type")
|
||||
assert.Equal("application/json", contentType)
|
||||
|
||||
}
|
||||
|
||||
func TestRegisterBadRequestAuth(t *testing.T) {
|
||||
// set up
|
||||
assert := assert.New(t)
|
||||
m := getEmptyModel()
|
||||
toker := tokens.New("secret")
|
||||
data := []byte(`{
|
||||
"username": y Display Name"
|
||||
}`)
|
||||
req, _ := http.NewRequest("POST", "/register", bytes.NewBuffer(data))
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
// function under test
|
||||
router := routes.NewAuthRouter(m, toker)
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
// check results
|
||||
status := rr.Code
|
||||
assert.Equal(http.StatusBadRequest, status)
|
||||
|
||||
}
|
||||
|
||||
func TestRegisterBadRequestTwoBodies(t *testing.T) {
|
||||
// set up
|
||||
assert := assert.New(t)
|
||||
m := getEmptyModel()
|
||||
toker := tokens.New("secret")
|
||||
data := []byte(`{
|
||||
"username": "test",
|
||||
"password": "pass",
|
||||
"display_name": "My Display Name"
|
||||
}, {
|
||||
"username": "test",
|
||||
"password": "pass",
|
||||
"display_name": "My Display Name"
|
||||
}`)
|
||||
req, _ := http.NewRequest("POST", "/register", bytes.NewBuffer(data))
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
// function under test
|
||||
router := routes.NewAuthRouter(m, toker)
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
// check results
|
||||
status := rr.Code
|
||||
assert.Equal(http.StatusBadRequest, status)
|
||||
|
||||
}
|
||||
|
||||
func TestRegisterErrorModel(t *testing.T) {
|
||||
// set up
|
||||
assert := assert.New(t)
|
||||
m := getErrorModel("here's an error")
|
||||
toker := tokens.New("secret")
|
||||
data := []byte(`{
|
||||
"username": "test",
|
||||
"password": "pass",
|
||||
"display_name": "My Display Name"
|
||||
}`)
|
||||
req, _ := http.NewRequest("POST", "/register", bytes.NewBuffer(data))
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
// function under test
|
||||
router := routes.NewAuthRouter(m, toker)
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
// check results
|
||||
status := rr.Code
|
||||
assert.Equal(http.StatusInternalServerError, status)
|
||||
|
||||
}
|
||||
|
||||
func TestRegisterBadWriter(t *testing.T) {
|
||||
// set up
|
||||
assert := assert.New(t)
|
||||
m := getEmptyModel()
|
||||
toker := tokens.New("secret")
|
||||
data := []byte(`{
|
||||
"username": "test",
|
||||
"password": "pass",
|
||||
"display_name": "My Display Name"
|
||||
}`)
|
||||
req, _ := http.NewRequest("POST", "/register", bytes.NewBuffer(data))
|
||||
|
||||
rr := NewBadWriter()
|
||||
|
||||
// function under test
|
||||
router := routes.NewAuthRouter(m, toker)
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
// check results
|
||||
status := rr.Code
|
||||
assert.Equal(http.StatusInternalServerError, status)
|
||||
|
||||
}
|
@ -19,7 +19,7 @@ func NewRouter(m *models.Model, tok tokens.Toker) http.Handler {
|
||||
r.Mount("/plans", NewPlanRouter(m))
|
||||
r.Mount("/me", NewCurrentUserRouter(m))
|
||||
})
|
||||
router.Mount("/auth", newAuthRouter(m, tok))
|
||||
router.Mount("/auth", NewAuthRouter(m, tok))
|
||||
router.Mount("/health", newHealthRouter(m))
|
||||
router.Get("/ping", ping)
|
||||
return router
|
||||
|
Loading…
x
Reference in New Issue
Block a user