package server import ( "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.NewRequest( 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") } }) }