release_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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. Tags: make([]*models.Tag, 0),
  68. }
  69. release, err := tester.repo.Release().CreateRelease(release)
  70. if err != nil {
  71. t.Fatalf("%v\n", err)
  72. }
  73. if uri == "uri1" {
  74. releases = append(releases, release)
  75. }
  76. }
  77. resReleases, err := tester.repo.Release().ListReleasesByImageRepoURI(1, "uri1")
  78. if err != nil {
  79. t.Fatalf("%v\n", err)
  80. }
  81. // make sure resulting arrays match
  82. if len(resReleases) != 3 {
  83. t.Fatalf("length of resulting release list not 3")
  84. }
  85. if diff := deep.Equal(releases, resReleases); diff != nil {
  86. t.Errorf("release entry not equal:")
  87. t.Error(diff)
  88. }
  89. }
  90. func TestDeleteRelease(t *testing.T) {
  91. tester := &tester{
  92. dbFileName: "./porter_delete_release.db",
  93. }
  94. setupTestEnv(tester, t)
  95. defer cleanup(tester, t)
  96. release := &models.Release{
  97. Name: "denver-meister-dakota",
  98. Namespace: "default",
  99. ProjectID: 1,
  100. ClusterID: 1,
  101. WebhookToken: "abcdefgh",
  102. }
  103. release, err := tester.repo.Release().CreateRelease(release)
  104. if err != nil {
  105. t.Fatalf("%v\n", err)
  106. }
  107. release, err = tester.repo.Release().ReadRelease(1, release.Name, release.Namespace)
  108. if err != nil {
  109. t.Fatalf("%v\n", err)
  110. }
  111. _, err = tester.repo.Release().DeleteRelease(release)
  112. if err != nil {
  113. t.Fatalf("%v\n", err)
  114. }
  115. _, err = tester.repo.Release().ReadRelease(1, release.Name, release.Namespace)
  116. if err != orm.ErrRecordNotFound {
  117. t.Fatalf("incorrect error: expected %v, got %v\n", orm.ErrRecordNotFound, err)
  118. }
  119. }