72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.javil.eu/jacob1123/budgeteer/bcrypt"
|
|
"git.javil.eu/jacob1123/budgeteer/jwt"
|
|
"git.javil.eu/jacob1123/budgeteer/postgres"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func TestRegisterUser(t *testing.T) {
|
|
t.Parallel()
|
|
database, err := postgres.Connect("pgtx", cfg.DatabaseConnection)
|
|
if err != nil {
|
|
t.Errorf("connect to DB: %v", err)
|
|
return
|
|
}
|
|
|
|
tokenVerifier, _ := jwt.NewTokenVerifier(cfg.SessionSecret)
|
|
h := Handler{
|
|
Service: database,
|
|
TokenVerifier: tokenVerifier,
|
|
CredentialsVerifier: &bcrypt.Verifier{},
|
|
}
|
|
|
|
recorder := httptest.NewRecorder()
|
|
engine := echo.New()
|
|
h.LoadRoutes(engine)
|
|
|
|
t.Run("RegisterUser", func(t *testing.T) {
|
|
t.Parallel()
|
|
request, err := http.NewRequestWithContext(context.Background(),
|
|
http.MethodPost,
|
|
"/api/v1/user/register",
|
|
strings.NewReader(`{"password":"pass","email":"info@example.com","name":"Test"}`))
|
|
request.Header.Set("Content-Type", "application/json")
|
|
context := engine.NewContext(request, recorder)
|
|
if err != nil {
|
|
t.Errorf("error creating request: %s", err)
|
|
return
|
|
}
|
|
|
|
err = h.registerPost(context)
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.Error("Error registering")
|
|
return
|
|
}
|
|
|
|
if recorder.Code != http.StatusOK {
|
|
t.Errorf("handler returned wrong status code: got %v want %v", recorder.Code, http.StatusOK)
|
|
}
|
|
|
|
var response LoginResponse
|
|
err = json.NewDecoder(recorder.Body).Decode(&response)
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.Error("Error registering")
|
|
}
|
|
if len(response.Token) == 0 {
|
|
t.Error("Did not get a token")
|
|
}
|
|
})
|
|
}
|