helm_repo_test.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. package gorm_test
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/go-test/deep"
  6. "github.com/porter-dev/porter/internal/models"
  7. ints "github.com/porter-dev/porter/internal/models/integrations"
  8. "gorm.io/gorm"
  9. orm "gorm.io/gorm"
  10. )
  11. func TestCreateHelmRepo(t *testing.T) {
  12. tester := &tester{
  13. dbFileName: "./porter_create_hr.db",
  14. }
  15. setupTestEnv(tester, t)
  16. initProject(tester, t)
  17. defer cleanup(tester, t)
  18. hr := &models.HelmRepo{
  19. Name: "helm-repo-test",
  20. RepoURL: "https://example-repo.com",
  21. ProjectID: tester.initProjects[0].Model.ID,
  22. }
  23. hr, err := tester.repo.HelmRepo().CreateHelmRepo(hr)
  24. if err != nil {
  25. t.Fatalf("%v\n", err)
  26. }
  27. hr, err = tester.repo.HelmRepo().ReadHelmRepo(tester.initProjects[0].Model.ID, hr.Model.ID)
  28. if err != nil {
  29. t.Fatalf("%v\n", err)
  30. }
  31. // make sure id is 1 and name is "registry-test"
  32. if hr.Model.ID != 1 {
  33. t.Errorf("incorrect registry ID: expected %d, got %d\n", 1, hr.Model.ID)
  34. }
  35. if hr.Name != "helm-repo-test" {
  36. t.Errorf("incorrect helm repo name: expected %s, got %s\n", "helm-repo-test", hr.Name)
  37. }
  38. if hr.RepoURL != "https://example-repo.com" {
  39. t.Errorf("incorrect helm repo url: expected %s, got %s\n", "https://example-repo.com", hr.RepoURL)
  40. }
  41. }
  42. func TestListHelmReposByProjectID(t *testing.T) {
  43. tester := &tester{
  44. dbFileName: "./porter_list_hrs.db",
  45. }
  46. setupTestEnv(tester, t)
  47. initProject(tester, t)
  48. initHelmRepo(tester, t)
  49. defer cleanup(tester, t)
  50. hrs, err := tester.repo.HelmRepo().ListHelmReposByProjectID(
  51. tester.initProjects[0].Model.ID,
  52. )
  53. if err != nil {
  54. t.Fatalf("%v\n", err)
  55. }
  56. if len(hrs) != 1 {
  57. t.Fatalf("length of helm repos incorrect: expected %d, got %d\n", 1, len(hrs))
  58. }
  59. // make sure data is correct
  60. expHelmRepo := models.HelmRepo{
  61. Name: "helm-repo-test",
  62. RepoURL: "https://example-repo.com",
  63. ProjectID: tester.initProjects[0].Model.ID,
  64. }
  65. hr := hrs[0]
  66. // reset fields for reflect.DeepEqual
  67. hr.Model = gorm.Model{}
  68. if diff := deep.Equal(expHelmRepo, *hr); diff != nil {
  69. t.Errorf("incorrect helm repo")
  70. t.Error(diff)
  71. }
  72. }
  73. func TestUpdateHelmRepo(t *testing.T) {
  74. tester := &tester{
  75. dbFileName: "./porter_update_hr.db",
  76. }
  77. setupTestEnv(tester, t)
  78. initProject(tester, t)
  79. initHelmRepo(tester, t)
  80. defer cleanup(tester, t)
  81. hr := tester.initHRs[0]
  82. hr.Name = "helm-repo-new-name"
  83. hr, err := tester.repo.HelmRepo().UpdateHelmRepo(
  84. hr,
  85. )
  86. if err != nil {
  87. t.Fatalf("%v\n", err)
  88. }
  89. hr, err = tester.repo.HelmRepo().ReadHelmRepo(tester.initProjects[0].Model.ID, tester.initHRs[0].ID)
  90. // make sure data is correct
  91. expHelmRepo := models.HelmRepo{
  92. Name: "helm-repo-new-name",
  93. RepoURL: "https://example-repo.com",
  94. ProjectID: tester.initProjects[0].Model.ID,
  95. }
  96. // reset fields for reflect.DeepEqual
  97. hr.Model = orm.Model{}
  98. if diff := deep.Equal(expHelmRepo, *hr); diff != nil {
  99. t.Errorf("incorrect helm repo")
  100. t.Error(diff)
  101. }
  102. }
  103. func TestUpdateHelmRepoToken(t *testing.T) {
  104. tester := &tester{
  105. dbFileName: "./porter_test_update_hr_token.db",
  106. }
  107. setupTestEnv(tester, t)
  108. initProject(tester, t)
  109. defer cleanup(tester, t)
  110. hr := &models.HelmRepo{
  111. Name: "helm-repo-test",
  112. RepoURL: "https://example-repo.com",
  113. ProjectID: tester.initProjects[0].Model.ID,
  114. TokenCache: ints.HelmRepoTokenCache{
  115. TokenCache: ints.TokenCache{
  116. Token: []byte("token-1"),
  117. Expiry: time.Now().Add(-1 * time.Hour),
  118. },
  119. },
  120. }
  121. hr, err := tester.repo.HelmRepo().CreateHelmRepo(hr)
  122. if err != nil {
  123. t.Fatalf("%v\n", err)
  124. }
  125. hr, err = tester.repo.HelmRepo().ReadHelmRepo(tester.initProjects[0].Model.ID, hr.Model.ID)
  126. if err != nil {
  127. t.Fatalf("%v\n", err)
  128. }
  129. // make sure helm repo id of token is 1
  130. if hr.TokenCache.HelmRepoID != 1 {
  131. t.Fatalf("incorrect helm repo id in token cache: expected %d, got %d\n", 1, hr.TokenCache.HelmRepoID)
  132. }
  133. // make sure old token is expired
  134. if isExpired := hr.TokenCache.IsExpired(); !isExpired {
  135. t.Fatalf("token was not expired\n")
  136. }
  137. if string(hr.TokenCache.Token) != "token-1" {
  138. t.Errorf("incorrect token in cache: expected %s, got %s\n", "token-1", hr.TokenCache.Token)
  139. }
  140. hr.TokenCache.Token = []byte("token-2")
  141. hr.TokenCache.Expiry = time.Now().Add(24 * time.Hour)
  142. hr, err = tester.repo.HelmRepo().UpdateHelmRepoTokenCache(&hr.TokenCache)
  143. if err != nil {
  144. t.Fatalf("%v\n", err)
  145. }
  146. hr, err = tester.repo.HelmRepo().ReadHelmRepo(tester.initProjects[0].Model.ID, hr.Model.ID)
  147. if err != nil {
  148. t.Fatalf("%v\n", err)
  149. }
  150. // make sure id is 1
  151. if hr.Model.ID != 1 {
  152. t.Errorf("incorrect helm repo ID: expected %d, got %d\n", 1, hr.Model.ID)
  153. }
  154. // make sure new token is correct and not expired
  155. if hr.TokenCache.HelmRepoID != 1 {
  156. t.Fatalf("incorrect helm repo ID in token cache: expected %d, got %d\n", 1, hr.TokenCache.HelmRepoID)
  157. }
  158. if isExpired := hr.TokenCache.IsExpired(); isExpired {
  159. t.Fatalf("token was expired\n")
  160. }
  161. if string(hr.TokenCache.Token) != "token-2" {
  162. t.Errorf("incorrect token in cache: expected %s, got %s\n", "token-2", hr.TokenCache.Token)
  163. }
  164. }
  165. // func TestDeleteRegistry(t *testing.T) {
  166. // tester := &tester{
  167. // dbFileName: "./porter_delete_registry.db",
  168. // }
  169. // setupTestEnv(tester, t)
  170. // initProject(tester, t)
  171. // initRegistry(tester, t)
  172. // defer cleanup(tester, t)
  173. // reg, err := tester.repo.Registry().ReadRegistry(tester.initRegs[0].Model.ID)
  174. // if err != nil {
  175. // t.Fatalf("%v\n", err)
  176. // }
  177. // err = tester.repo.Registry().DeleteRegistry(reg)
  178. // if err != nil {
  179. // t.Fatalf("%v\n", err)
  180. // }
  181. // _, err = tester.repo.Registry().ReadRegistry(tester.initRegs[0].Model.ID)
  182. // if err != orm.ErrRecordNotFound {
  183. // t.Fatalf("incorrect error: expected %v, got %v\n", orm.ErrRecordNotFound, err)
  184. // }
  185. // regs, err := tester.repo.Registry().ListRegistriesByProjectID(tester.initProjects[0].Model.ID)
  186. // if err != nil {
  187. // t.Fatalf("%v\n", err)
  188. // }
  189. // if len(regs) != 0 {
  190. // t.Fatalf("length of clusters was not 0")
  191. // }
  192. // }