welcome_webhook_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package user_test
  2. import (
  3. "io"
  4. "net/http"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/porter-dev/porter/api/server/handlers/user"
  8. "github.com/porter-dev/porter/api/server/shared"
  9. "github.com/porter-dev/porter/api/server/shared/apitest"
  10. "github.com/porter-dev/porter/api/types"
  11. )
  12. func TestWelcomeWebhookWithoutURL(t *testing.T) {
  13. req, rr := apitest.GetRequestAndRecorder(
  14. t,
  15. string(types.HTTPVerbPost),
  16. "/api/welcome",
  17. &types.WelcomeWebhookRequest{
  18. Email: "test@test.it",
  19. IsCompany: true,
  20. Company: "Awesome Company",
  21. Role: "Founder",
  22. Name: "John Doe",
  23. },
  24. )
  25. config := apitest.LoadConfig(t)
  26. config.ServerConf.WelcomeFormWebhook = ""
  27. handler := user.NewUserWelcomeHandler(
  28. config,
  29. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  30. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  31. )
  32. handler.ServeHTTP(rr, req)
  33. assert.Equal(t, rr.Result().StatusCode, 200, "incorrect status code")
  34. }
  35. func helloWebhook(w http.ResponseWriter, r *http.Request) {
  36. io.WriteString(w, "Hello!\n")
  37. }
  38. func TestWelcomeWebhookWithURL(t *testing.T) {
  39. req, rr := apitest.GetRequestAndRecorder(
  40. t,
  41. string(types.HTTPVerbPost),
  42. "/api/welcome",
  43. &types.WelcomeWebhookRequest{
  44. Email: "test@test.it",
  45. IsCompany: true,
  46. Company: "Awesome Company",
  47. Role: "Founder",
  48. Name: "John Doe",
  49. },
  50. )
  51. go func() {
  52. http.HandleFunc("/hello", helloWebhook)
  53. http.ListenAndServe(":10044", nil)
  54. }()
  55. config := apitest.LoadConfig(t)
  56. config.ServerConf.WelcomeFormWebhook = "http://localhost:10044/hello"
  57. handler := user.NewUserWelcomeHandler(
  58. config,
  59. shared.NewDefaultRequestDecoderValidator(config.Logger, config.Alerter),
  60. shared.NewDefaultResultWriter(config.Logger, config.Alerter),
  61. )
  62. handler.ServeHTTP(rr, req)
  63. assert.Equal(t, rr.Result().StatusCode, 200, "incorrect status code")
  64. }