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) }