release_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package gorm_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/go-test/deep"
  6. "github.com/porter-dev/porter/internal/models"
  7. orm "gorm.io/gorm"
  8. )
  9. func TestCreateRelease(t *testing.T) {
  10. tester := &tester{
  11. dbFileName: "./porter_create_release.db",
  12. }
  13. setupTestEnv(tester, t)
  14. defer cleanup(tester, t)
  15. release := &models.Release{
  16. Name: "denver-meister-dakota",
  17. Namespace: "default",
  18. ProjectID: 1,
  19. ClusterID: 1,
  20. WebhookToken: "abcdefgh",
  21. }
  22. release, err := tester.repo.Release().CreateRelease(release)
  23. if err != nil {
  24. t.Fatalf("%v\n", err)
  25. }
  26. release, err = tester.repo.Release().ReadRelease(1, release.Name, release.Namespace)
  27. if err != nil {
  28. t.Fatalf("%v\n", err)
  29. }
  30. // make sure id and name are correct"
  31. if release.Model.ID != 1 {
  32. t.Errorf("incorrect release ID: expected %d, got %d\n", 1, release.Model.ID)
  33. }
  34. if release.Name != "denver-meister-dakota" {
  35. t.Errorf("incorrect project name: expected %s, got %s\n", "denver-meister-dakota", release.Name)
  36. }
  37. if release.WebhookToken != "abcdefgh" {
  38. t.Errorf("incorrect webhook token: expected %s, got %s\n", "abcdefgh", release.WebhookToken)
  39. }
  40. release, err = tester.repo.Release().ReadReleaseByWebhookToken(release.WebhookToken)
  41. if release.Name != "denver-meister-dakota" {
  42. t.Errorf("incorrect project name: expected %s, got %s\n", "denver-meister-dakota", release.Name)
  43. }
  44. }
  45. func TestListReleasesByImageRepoURI(t *testing.T) {
  46. tester := &tester{
  47. dbFileName: "./porter_list_releases.db",
  48. }
  49. setupTestEnv(tester, t)
  50. defer cleanup(tester, t)
  51. imageRepoURIs := []string{
  52. "uri1",
  53. "uri2",
  54. "uri3",
  55. "uri1",
  56. "uri1",
  57. }
  58. releases := make([]*models.Release, 0)
  59. for i, uri := range imageRepoURIs {
  60. release := &models.Release{
  61. Name: fmt.Sprintf("denver-meister-dakota-%d", i),
  62. Namespace: "default",
  63. ProjectID: 1,
  64. ClusterID: 1,
  65. WebhookToken: fmt.Sprintf("abcdefgh-%d", i),
  66. ImageRepoURI: uri,
  67. }
  68. release, err := tester.repo.Release().CreateRelease(release)
  69. if err != nil {
  70. t.Fatalf("%v\n", err)
  71. }
  72. if uri == "uri1" {
  73. releases = append(releases, release)
  74. }
  75. }
  76. resReleases, err := tester.repo.Release().ListReleasesByImageRepoURI(1, "uri1")
  77. if err != nil {
  78. t.Fatalf("%v\n", err)
  79. }
  80. // make sure resulting arrays match
  81. if len(resReleases) != 3 {
  82. t.Fatalf("length of resulting release list not 3")
  83. }
  84. if diff := deep.Equal(releases, resReleases); diff != nil {
  85. t.Errorf("release entry not equal:")
  86. t.Error(diff)
  87. }
  88. }
  89. func TestDeleteRelease(t *testing.T) {
  90. tester := &tester{
  91. dbFileName: "./porter_delete_release.db",
  92. }
  93. setupTestEnv(tester, t)
  94. defer cleanup(tester, t)
  95. release := &models.Release{
  96. Name: "denver-meister-dakota",
  97. Namespace: "default",
  98. ProjectID: 1,
  99. ClusterID: 1,
  100. WebhookToken: "abcdefgh",
  101. }
  102. release, err := tester.repo.Release().CreateRelease(release)
  103. if err != nil {
  104. t.Fatalf("%v\n", err)
  105. }
  106. release, err = tester.repo.Release().ReadRelease(1, release.Name, release.Namespace)
  107. if err != nil {
  108. t.Fatalf("%v\n", err)
  109. }
  110. _, err = tester.repo.Release().DeleteRelease(release)
  111. if err != nil {
  112. t.Fatalf("%v\n", err)
  113. }
  114. _, err = tester.repo.Release().ReadRelease(1, release.Name, release.Namespace)
  115. if err != orm.ErrRecordNotFound {
  116. t.Fatalf("incorrect error: expected %v, got %v\n", orm.ErrRecordNotFound, err)
  117. }
  118. }