| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package user_test
- import (
- "fmt"
- "net/http"
- "testing"
- "github.com/porter-dev/porter/api/server/handlers/user"
- "github.com/porter-dev/porter/api/server/shared"
- "github.com/porter-dev/porter/api/server/shared/apitest"
- "github.com/porter-dev/porter/api/types"
- "github.com/porter-dev/porter/internal/repository/test"
- )
- func TestCreateUserSuccessful(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "test@test.it",
- Password: "somepassword",
- },
- )
- config := apitest.LoadConfig(t)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- expUser := &types.CreateUserResponse{
- ID: 1,
- Email: "test@test.it",
- EmailVerified: false,
- }
- gotUser := &types.CreateUserResponse{}
- apitest.AssertResponseExpected(t, rr, expUser, gotUser)
- }
- func TestCreateUserBadEmail(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "notanemail",
- Password: "somepassword",
- },
- )
- config := apitest.LoadConfig(t)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- apitest.AssertResponseError(t, rr, http.StatusBadRequest, &types.ExternalError{
- Error: fmt.Sprintf("validation failed on field 'Email' on condition 'email'"),
- })
- }
- func TestCreateUserMissingField(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "test@test.it",
- },
- )
- config := apitest.LoadConfig(t)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- apitest.AssertResponseError(t, rr, http.StatusBadRequest, &types.ExternalError{
- Error: fmt.Sprintf("validation failed on field 'Password' on condition 'required'"),
- })
- }
- func TestCreateUserSameEmail(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "test@test.it",
- Password: "somepassword",
- },
- )
- config := apitest.LoadConfig(t)
- // create the existing user
- apitest.CreateTestUser(t, config, true)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- apitest.AssertResponseError(t, rr, http.StatusBadRequest, &types.ExternalError{
- Error: fmt.Sprintf("email already taken"),
- })
- }
- func TestFailingCreateUserMethod(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "test@test.it",
- Password: "somepassword",
- },
- )
- config := apitest.LoadConfig(t, test.CreateUserMethod)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- apitest.AssertResponseInternalServerError(t, rr)
- }
- func TestFailingCreateSessionMethod(t *testing.T) {
- req, rr := apitest.GetRequestAndRecorder(
- t,
- string(types.HTTPVerbPost),
- "/api/users",
- &types.CreateUserRequest{
- Email: "test@test.it",
- Password: "somepassword",
- },
- )
- config := apitest.LoadConfig(t, test.CreateSessionMethod)
- handler := user.NewUserCreateHandler(
- config,
- shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
- shared.NewDefaultResultWriter(config.Logger, config.Alerter),
- )
- handler.ServeHTTP(rr, req)
- apitest.AssertResponseInternalServerError(t, rr)
- }
|