patch_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package test
  2. import (
  3. "context"
  4. "fmt"
  5. "os"
  6. "testing"
  7. "github.com/matryer/is"
  8. "github.com/porter-dev/api-contracts/generated/go/helpers"
  9. porterv1 "github.com/porter-dev/api-contracts/generated/go/porter/v1"
  10. v2 "github.com/porter-dev/porter/internal/porter_app/v2"
  11. )
  12. func TestPatchApp(t *testing.T) {
  13. tests := []struct {
  14. haveFileName string
  15. wantFileName string
  16. }{
  17. {"app_proto_prepatch", "app_proto_postpatch"},
  18. }
  19. for _, tt := range tests {
  20. t.Run(tt.haveFileName, func(t *testing.T) {
  21. is := is.New(t)
  22. wantBytes, err := os.ReadFile(fmt.Sprintf("../testdata/%s.json", tt.wantFileName))
  23. is.NoErr(err) // no error expected reading test file
  24. want := &porterv1.PorterApp{}
  25. err = helpers.UnmarshalContractObject(wantBytes, want)
  26. is.NoErr(err) // no error expected unmarshalling test file
  27. inputBytes, err := os.ReadFile(fmt.Sprintf("../testdata/%s.json", tt.haveFileName))
  28. is.NoErr(err) // no error expected reading test file
  29. input := &porterv1.PorterApp{}
  30. err = helpers.UnmarshalContractObject(inputBytes, input)
  31. is.NoErr(err) // no error expected unmarshalling test file
  32. flags := []v2.ApplyFlag{
  33. v2.AttachBuildpacks{
  34. Buildpacks: []string{"heroku/python"},
  35. },
  36. v2.SetBuildContext{
  37. Context: "./app",
  38. },
  39. v2.SetBuildMethod{
  40. Method: "docker",
  41. },
  42. v2.SetBuildDockerfile{
  43. Dockerfile: "Dockerfile",
  44. },
  45. v2.SetBuilder{
  46. Builder: "heroku/buildpacks:20",
  47. },
  48. v2.AttachEnvGroupsFlag{
  49. EnvGroups: []string{"foo-group"},
  50. },
  51. v2.SetImageRepo{
  52. Repo: "ghcr.io/porter-dev",
  53. },
  54. v2.SetImageTag{
  55. Tag: "a-new-tag",
  56. },
  57. v2.SetName{
  58. Name: "js-test-app1",
  59. },
  60. }
  61. var opts []v2.PatchOperation
  62. for _, flag := range flags {
  63. opts = append(opts, flag.AsPatchOperations()...)
  64. }
  65. got, err := v2.PatchApp(context.Background(), input, opts)
  66. is.NoErr(err) // no error expected patching app
  67. diffProtoWithFailTest(t, is, want, got)
  68. })
  69. }
  70. }