rotate_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package keyrotate_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/porter-dev/porter/cmd/migrate/keyrotate"
  6. "github.com/porter-dev/porter/internal/models"
  7. gorm "github.com/porter-dev/porter/internal/repository/gorm"
  8. )
  9. func TestClusterModelRotation(t *testing.T) {
  10. var newKey [32]byte
  11. for i, b := range []byte("__r3n3o3_s3r3n3_3n3r3p3i3n_k3y__") {
  12. newKey[i] = b
  13. }
  14. tester := &tester{
  15. dbFileName: "./porter_cluster_rotate.db",
  16. }
  17. setupTestEnv(tester, t)
  18. for i := 0; i < 1; i++ {
  19. initCluster(tester, t)
  20. }
  21. defer cleanup(tester, t)
  22. err := keyrotate.Rotate(tester.DB, tester.Key, &newKey)
  23. if err != nil {
  24. t.Fatalf("error rotating: %v\n", err)
  25. }
  26. // very all clusters decoded properly
  27. repo := gorm.NewClusterRepository(tester.DB, &newKey).(*gorm.ClusterRepository)
  28. clusters := []*models.Cluster{}
  29. if err := tester.DB.Preload("TokenCache").Find(&clusters).Error; err != nil {
  30. t.Fatalf("%v\n", err)
  31. }
  32. // decrypt with the old key
  33. for _, c := range clusters {
  34. fmt.Println("GOT TOKEN", string(c.TokenCache.Token))
  35. cluster, err := repo.ReadCluster(c.ID)
  36. if err != nil {
  37. t.Fatalf("error reading cluster: %v\n", err)
  38. }
  39. if string(cluster.CertificateAuthorityData) != "-----BEGIN" {
  40. t.Errorf("%s\n", string(cluster.CertificateAuthorityData))
  41. }
  42. if string(cluster.TokenCache.Token) != "token-1" {
  43. t.Errorf("%s\n", string(cluster.TokenCache.Token))
  44. }
  45. }
  46. }