| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- package enable_cluster_preview_envs
- import (
- "os"
- "testing"
- "time"
- "github.com/porter-dev/porter/api/server/shared/config/env"
- "github.com/porter-dev/porter/internal/adapter"
- "github.com/porter-dev/porter/internal/features"
- "github.com/porter-dev/porter/internal/models"
- ints "github.com/porter-dev/porter/internal/models/integrations"
- "github.com/porter-dev/porter/internal/repository"
- "github.com/porter-dev/porter/internal/repository/gorm"
- _gorm "gorm.io/gorm"
- )
- type tester struct {
- Key *[32]byte
- DB *_gorm.DB
- repo repository.Repository
- dbFileName string
- key *[32]byte
- initUsers []*models.User
- initProjects []*models.Project
- initClusters []*models.Cluster
- initKIs []*ints.KubeIntegration
- }
- func setupTestEnv(tester *tester, t *testing.T) {
- t.Helper()
- db, err := adapter.New(&env.DBConf{
- EncryptionKey: "__random_strong_encryption_key__",
- SQLLite: true,
- SQLLitePath: tester.dbFileName,
- })
- if err != nil {
- t.Fatalf("%\n", err)
- }
- err = db.AutoMigrate(
- &models.Project{},
- &models.User{},
- &models.Cluster{},
- &ints.KubeIntegration{},
- &ints.ClusterTokenCache{},
- )
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- var key [32]byte
- for i, b := range []byte("__random_strong_encryption_key__") {
- key[i] = b
- }
- tester.key = &key
- tester.Key = &key
- tester.DB = db
- tester.repo = gorm.NewRepository(db, &key, nil)
- }
- func cleanup(tester *tester, t *testing.T) {
- t.Helper()
- // remove the created file file
- os.Remove(tester.dbFileName)
- }
- func initUser(tester *tester, t *testing.T) {
- t.Helper()
- user := &models.User{
- Email: "example@example.com",
- Password: "hello1234",
- }
- user, err := tester.repo.User().CreateUser(user)
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- tester.initUsers = append(tester.initUsers, user)
- }
- func initCluster(tester *tester, t *testing.T) {
- t.Helper()
- if len(tester.initKIs) == 0 {
- initKubeIntegration(tester, t)
- }
- cluster := &models.Cluster{
- ProjectID: tester.initProjects[0].ID,
- Name: "cluster-test",
- Server: "https://localhost",
- KubeIntegrationID: tester.initKIs[0].ID,
- CertificateAuthorityData: []byte("-----BEGIN"),
- TokenCache: ints.ClusterTokenCache{
- TokenCache: ints.TokenCache{
- Token: []byte("token-1"),
- Expiry: time.Now().Add(-1 * time.Hour),
- },
- },
- }
- cluster, err := tester.repo.Cluster().CreateCluster(cluster, &features.Client{})
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- tester.initClusters = append(tester.initClusters, cluster)
- }
- func initProjectPreviewEnabled(tester *tester, t *testing.T) {
- t.Helper()
- proj := &models.Project{
- Name: "project-test",
- PreviewEnvsEnabled: true,
- }
- proj, err := tester.repo.Project().CreateProject(proj)
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- tester.initProjects = append(tester.initProjects, proj)
- }
- func initProjectPreviewDisabled(tester *tester, t *testing.T) {
- t.Helper()
- proj := &models.Project{
- Name: "project-test",
- }
- proj, err := tester.repo.Project().CreateProject(proj)
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- tester.initProjects = append(tester.initProjects, proj)
- }
- func initKubeIntegration(tester *tester, t *testing.T) {
- t.Helper()
- if len(tester.initUsers) == 0 {
- initUser(tester, t)
- }
- ki := &ints.KubeIntegration{
- Mechanism: ints.KubeLocal,
- ProjectID: tester.initProjects[0].ID,
- UserID: tester.initUsers[0].ID,
- Kubeconfig: []byte("current-context: testing\n"),
- ClientCertificateData: []byte("clientcertdata"),
- ClientKeyData: []byte("clientkeydata"),
- Token: []byte("token"),
- Username: []byte("username"),
- Password: []byte("password"),
- }
- ki, err := tester.repo.KubeIntegration().CreateKubeIntegration(ki)
- if err != nil {
- t.Fatalf("%v\n", err)
- }
- tester.initKIs = append(tester.initKIs, ki)
- }
|