create_test.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package project_test
  2. import (
  3. "testing"
  4. "github.com/porter-dev/porter/api/server/handlers/project"
  5. "github.com/porter-dev/porter/api/server/shared"
  6. "github.com/porter-dev/porter/api/server/shared/apitest"
  7. "github.com/porter-dev/porter/api/types"
  8. "github.com/porter-dev/porter/internal/repository/test"
  9. )
  10. func TestCreateProjectSuccessful(t *testing.T) {
  11. req, rr := apitest.GetRequestAndRecorder(
  12. t,
  13. string(types.HTTPVerbPost),
  14. "/api/projects",
  15. &types.CreateProjectRequest{
  16. Name: "test-project",
  17. },
  18. )
  19. config := apitest.LoadConfig(t)
  20. user := apitest.CreateTestUser(t, config, true)
  21. req = apitest.WithAuthenticatedUser(t, req, user)
  22. handler := project.NewProjectCreateHandler(
  23. config,
  24. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  25. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  26. )
  27. handler.ServeHTTP(rr, req)
  28. expProject := &types.CreateProjectResponse{
  29. ID: 1,
  30. Name: "test-project",
  31. Roles: []*types.Role{},
  32. }
  33. gotProject := &types.CreateProjectResponse{}
  34. apitest.AssertResponseExpected(t, rr, expProject, gotProject)
  35. }
  36. func TestFailingDecoderValidator(t *testing.T) {
  37. req, rr := apitest.GetRequestAndRecorder(
  38. t,
  39. string(types.HTTPVerbPost),
  40. "/api/projects",
  41. &types.CreateProjectRequest{
  42. Name: "test-project",
  43. },
  44. )
  45. config := apitest.LoadConfig(t)
  46. user := apitest.CreateTestUser(t, config, true)
  47. req = apitest.WithAuthenticatedUser(t, req, user)
  48. handler := project.NewProjectCreateHandler(
  49. config,
  50. apitest.NewFailingDecoderValidator(config),
  51. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  52. )
  53. handler.ServeHTTP(rr, req)
  54. apitest.AssertResponseInternalServerError(t, rr)
  55. }
  56. func TestFailingCreateMethod(t *testing.T) {
  57. req, rr := apitest.GetRequestAndRecorder(
  58. t,
  59. string(types.HTTPVerbPost),
  60. "/api/projects",
  61. &types.CreateProjectRequest{
  62. Name: "test-project",
  63. },
  64. )
  65. config := apitest.LoadConfig(t, test.CreateProjectMethod)
  66. user := apitest.CreateTestUser(t, config, true)
  67. req = apitest.WithAuthenticatedUser(t, req, user)
  68. handler := project.NewProjectCreateHandler(
  69. config,
  70. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  71. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  72. )
  73. handler.ServeHTTP(rr, req)
  74. apitest.AssertResponseInternalServerError(t, rr)
  75. }