2
0

create_test.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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. Kind: types.RoleAdmin,
  34. UserID: user.ID,
  35. ProjectID: 1,
  36. },
  37. },
  38. CapiProvisionerEnabled: true,
  39. SimplifiedViewEnabled: true,
  40. HelmValuesEnabled: false,
  41. MultiCluster: false,
  42. EnableReprovision: false,
  43. ValidateApplyV2: true,
  44. }
  45. gotProject := &types.CreateProjectResponse{}
  46. apitest.AssertResponseExpected(t, rr, expProject, gotProject)
  47. }
  48. func TestFailingDecoderValidator(t *testing.T) {
  49. req, rr := apitest.GetRequestAndRecorder(
  50. t,
  51. string(types.HTTPVerbPost),
  52. "/api/projects",
  53. &types.CreateProjectRequest{
  54. Name: "test-project",
  55. },
  56. )
  57. config := apitest.LoadConfig(t)
  58. user := apitest.CreateTestUser(t, config, true)
  59. req = apitest.WithAuthenticatedUser(t, req, user)
  60. handler := project.NewProjectCreateHandler(
  61. config,
  62. apitest.NewFailingDecoderValidator(config),
  63. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  64. )
  65. handler.ServeHTTP(rr, req)
  66. apitest.AssertResponseInternalServerError(t, rr)
  67. }
  68. func TestFailingCreateMethod(t *testing.T) {
  69. req, rr := apitest.GetRequestAndRecorder(
  70. t,
  71. string(types.HTTPVerbPost),
  72. "/api/projects",
  73. &types.CreateProjectRequest{
  74. Name: "test-project",
  75. },
  76. )
  77. config := apitest.LoadConfig(t, test.CreateProjectMethod)
  78. user := apitest.CreateTestUser(t, config, true)
  79. req = apitest.WithAuthenticatedUser(t, req, user)
  80. handler := project.NewProjectCreateHandler(
  81. config,
  82. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  83. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  84. )
  85. handler.ServeHTTP(rr, req)
  86. apitest.AssertResponseInternalServerError(t, rr)
  87. }
  88. func TestFailingCreateRoleMethod(t *testing.T) {
  89. req, rr := apitest.GetRequestAndRecorder(
  90. t,
  91. string(types.HTTPVerbPost),
  92. "/api/projects",
  93. &types.CreateProjectRequest{
  94. Name: "test-project",
  95. },
  96. )
  97. config := apitest.LoadConfig(t, test.CreateProjectRoleMethod)
  98. user := apitest.CreateTestUser(t, config, true)
  99. req = apitest.WithAuthenticatedUser(t, req, user)
  100. handler := project.NewProjectCreateHandler(
  101. config,
  102. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  103. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  104. )
  105. handler.ServeHTTP(rr, req)
  106. apitest.AssertResponseInternalServerError(t, rr)
  107. }
  108. func TestFailingReadMethod(t *testing.T) {
  109. req, rr := apitest.GetRequestAndRecorder(
  110. t,
  111. string(types.HTTPVerbPost),
  112. "/api/projects",
  113. &types.CreateProjectRequest{
  114. Name: "test-project",
  115. },
  116. )
  117. config := apitest.LoadConfig(t, test.ReadProjectMethod)
  118. user := apitest.CreateTestUser(t, config, true)
  119. req = apitest.WithAuthenticatedUser(t, req, user)
  120. handler := project.NewProjectCreateHandler(
  121. config,
  122. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  123. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  124. )
  125. handler.ServeHTTP(rr, req)
  126. apitest.AssertResponseInternalServerError(t, rr)
  127. }