github.com/jenkins-x/jx/v2@v2.1.155/pkg/cloud/factory/factory_test.go (about) 1 // +build unit 2 3 package factory 4 5 import ( 6 "io/ioutil" 7 "path" 8 "testing" 9 10 "github.com/ghodss/yaml" 11 v1 "github.com/jenkins-x/jx-api/pkg/apis/jenkins.io/v1" 12 "github.com/jenkins-x/jx-api/pkg/client/clientset/versioned" 13 "github.com/jenkins-x/jx/v2/pkg/cloud" 14 amazonStorage "github.com/jenkins-x/jx/v2/pkg/cloud/amazon/storage" 15 "github.com/jenkins-x/jx/v2/pkg/cloud/buckets" 16 "github.com/jenkins-x/jx/v2/pkg/cloud/gke/storage" 17 "github.com/jenkins-x/jx/v2/pkg/cmd/clients" 18 "github.com/jenkins-x/jx/v2/pkg/cmd/clients/fake" 19 "github.com/jenkins-x/jx/v2/pkg/config" 20 "github.com/jenkins-x/jx/v2/pkg/util" 21 "github.com/stretchr/testify/assert" 22 v12 "k8s.io/apimachinery/pkg/apis/meta/v1" 23 ) 24 25 func TestNewBucketProviderFromTeamSettingsConfiguration(t *testing.T) { 26 var fac clients.Factory 27 fac = &fake.FakeFactory{} 28 jxClient, ns, err := fac.CreateJXClient() 29 assert.NoError(t, err) 30 31 requirementsYamlFile := path.Join("test_data", "jx-requirements.yml") 32 exists, err := util.FileExists(requirementsYamlFile) 33 assert.NoError(t, err) 34 assert.True(t, exists) 35 36 bytes, err := ioutil.ReadFile(requirementsYamlFile) 37 assert.NoError(t, err) 38 requirements := &config.RequirementsConfig{} 39 err = yaml.Unmarshal(bytes, requirements) 40 assert.NoError(t, err) 41 42 _, err = jxClient.JenkinsV1().Environments(ns).Create(&v1.Environment{ 43 ObjectMeta: v12.ObjectMeta{ 44 Name: "dev", 45 }, 46 Spec: v1.EnvironmentSpec{ 47 TeamSettings: v1.TeamSettings{ 48 BootRequirements: string(bytes), 49 }, 50 }, 51 }) 52 assert.NoError(t, err) 53 54 testCases := []struct { 55 provider string 56 providerType buckets.Provider 57 }{ 58 { 59 provider: cloud.GKE, 60 providerType: &storage.GKEBucketProvider{}, 61 }, 62 { 63 provider: cloud.AWS, 64 providerType: &amazonStorage.AmazonBucketProvider{}, 65 }, 66 { 67 provider: cloud.EKS, 68 providerType: &amazonStorage.AmazonBucketProvider{}, 69 }, 70 { 71 provider: "NonSupportedProvider", 72 providerType: &buckets.LegacyBucketProvider{}, 73 }, 74 } 75 for _, tt := range testCases { 76 t.Run(tt.provider, func(t *testing.T) { 77 requirements.Cluster.Provider = tt.provider 78 err = updateDevEnvironment(jxClient, ns, requirements) 79 assert.NoError(t, err) 80 pro, err := NewBucketProviderFromTeamSettingsConfiguration(fac) 81 assert.NoError(t, err) 82 assert.IsType(t, tt.providerType, pro) 83 }) 84 } 85 } 86 func TestNewBucketProviderFromTeamSettingsConfigurationOrDefault(t *testing.T) { 87 var fac clients.Factory 88 fac = &fake.FakeFactory{} 89 jxClient, ns, err := fac.CreateJXClient() 90 assert.NoError(t, err) 91 92 _, err = jxClient.JenkinsV1().Environments(ns).Create(&v1.Environment{ 93 ObjectMeta: v12.ObjectMeta{ 94 Name: "dev", 95 }, 96 Spec: v1.EnvironmentSpec{ 97 TeamSettings: v1.TeamSettings{}, 98 }, 99 }) 100 assert.NoError(t, err) 101 102 provider, err := NewBucketProviderFromTeamSettingsConfigurationOrDefault(fac, v1.StorageLocation{ 103 Classifier: "logs", 104 BucketURL: "file://bucketname", 105 }) 106 assert.NoError(t, err) 107 108 assert.IsType(t, &buckets.LegacyBucketProvider{}, provider) 109 } 110 111 func updateDevEnvironment(jxClient versioned.Interface, ns string, requirements *config.RequirementsConfig) error { 112 bytes, err := yaml.Marshal(requirements) 113 if err != nil { 114 return err 115 } 116 _, err = jxClient.JenkinsV1().Environments(ns).PatchUpdate(&v1.Environment{ 117 ObjectMeta: v12.ObjectMeta{ 118 Name: "dev", 119 }, 120 Spec: v1.EnvironmentSpec{ 121 TeamSettings: v1.TeamSettings{ 122 BootRequirements: string(bytes), 123 }, 124 }, 125 }) 126 return err 127 }