github.com/jenkins-x/jx/v2@v2.1.155/pkg/cloud/aks/aks_test.go (about) 1 // +build unit 2 3 package aks_test 4 5 import ( 6 "reflect" 7 "testing" 8 9 "github.com/jenkins-x/jx/v2/pkg/cloud/aks" 10 "github.com/stretchr/testify/assert" 11 12 mocks "github.com/jenkins-x/jx/v2/pkg/util/mocks" 13 . "github.com/petergtz/pegomock" 14 ) 15 16 func aksWithRunner(t *testing.T, expectedError error, expectedOutput string) *aks.AzureRunner { 17 RegisterMockTestingT(t) 18 runner := mocks.NewMockCommander() 19 When(runner.RunWithoutRetry()).ThenReturn(expectedOutput, expectedError) 20 return aks.NewAzureRunnerWithCommander(runner) 21 } 22 23 func TestGetClusterClient(t *testing.T) { 24 azureCLI := aksWithRunner(t, nil, `[{ 25 "group": "musekeen", 26 "id": "01234567-89ab-cdef-0123-456789abcdef", 27 "name": "scalefrost", 28 "uri": "scalefrost-musekeen-2e62fb-6d5429ef.hcp.westus2.azmk8s.io" 29 }, 30 { 31 "group": "resource_group", 32 "id": "abcd", 33 "name": "name", 34 "uri": "aks.hcp.eatus.azmk8s.io" 35 } 36 ]`) 37 rg, name, client, err := azureCLI.GetClusterClient("https://aks.hcp.eatus.azmk8s.io:443") 38 assert.Equal(t, client, "abcd") 39 assert.Equal(t, rg, "resource_group") 40 assert.Equal(t, name, "name") 41 assert.Nil(t, err) 42 } 43 44 func TestNotACR(t *testing.T) { 45 azureCLI := aks.NewAzureRunner() 46 config, registry, id, err := azureCLI.GetRegistry("", "rg", "name", "azure.docker.io") 47 assert.Equal(t, "", config) 48 assert.Equal(t, "azure.docker.io", registry) 49 assert.Equal(t, "", id) 50 assert.Nil(t, err) 51 } 52 53 func TestNoRegistrySet(t *testing.T) { 54 RegisterMockTestingT(t) 55 runner := mocks.NewMockCommander() 56 When(runner.RunWithoutRetry()).Then(func(params []Param) ReturnValues { 57 return []ReturnValue{showResult(runner), nil} 58 }) 59 azureCLI := aks.NewAzureRunnerWithCommander(runner) 60 61 config, registry, id, err := azureCLI.GetRegistry("", "rg", "azure", "") 62 assert.Equal(t, `{"auths":{"azure.azurecr.io":{"auth":"YXp1cmU6cGFzc3dvcmQxMjM="}}}`, config) 63 assert.Equal(t, "azure.azurecr.io", registry) 64 assert.Equal(t, "fakeid", id) 65 assert.Nil(t, err) 66 } 67 68 func TestSubscriptionSet(t *testing.T) { 69 RegisterMockTestingT(t) 70 runner := mocks.NewMockCommander() 71 When(runner.RunWithoutRetry()).Then(func(params []Param) ReturnValues { 72 return []ReturnValue{showResult(runner), nil} 73 }) 74 azureCLI := aks.NewAzureRunnerWithCommander(runner) 75 76 config, registry, id, err := azureCLI.GetRegistry("sub", "rg", "azuresub", "") 77 assert.Equal(t, `{"auths":{"azure.azurecr.io":{"auth":"YXp1cmU6cGFzc3dvcmQxMjM="}}}`, config) 78 assert.Equal(t, "azuresub.azurecr.io", registry) 79 assert.Equal(t, "fakeidsub", id) 80 assert.Nil(t, err) 81 } 82 83 func TestRegistry404(t *testing.T) { 84 RegisterMockTestingT(t) 85 runner := mocks.NewMockCommander() 86 When(runner.RunWithoutRetry()).Then(func(params []Param) ReturnValues { 87 return []ReturnValue{showResult(runner), nil} 88 }) 89 azureCLI := aks.NewAzureRunnerWithCommander(runner) 90 91 config, registry, id, err := azureCLI.GetRegistry("", "newrg", "newacr", "notfound.azurecr.io") 92 assert.Equal(t, `{"auths":{"newacr.azurecr.io":{"auth":"YXp1cmU6cGFzc3dvcmQxMjM="}}}`, config) 93 assert.Equal(t, "newacr.azurecr.io", registry) 94 assert.Equal(t, "fakeidxxx", id) 95 assert.Nil(t, err) 96 } 97 98 func TestRegistry404WithSubSet(t *testing.T) { 99 RegisterMockTestingT(t) 100 runner := mocks.NewMockCommander() 101 When(runner.RunWithoutRetry()).Then(func(params []Param) ReturnValues { 102 return []ReturnValue{showResult(runner), nil} 103 }) 104 azureCLI := aks.NewAzureRunnerWithCommander(runner) 105 106 config, registry, id, err := azureCLI.GetRegistry("sub", "newrg", "newacr", "notfound.azurecr.io") 107 assert.Equal(t, `{"auths":{"newacr.azurecr.io":{"auth":"YXp1cmU6cGFzc3dvcmQxMjM="}}}`, config) 108 assert.Equal(t, "newacr.azurecr.io", registry) 109 assert.Equal(t, "fakeidsub", id) 110 assert.Nil(t, err) 111 } 112 113 func showResult(runner *mocks.MockCommander) string { 114 args := runner.VerifyWasCalled(AtLeast(1)).SetArgs(AnyStringSlice()).GetCapturedArguments() 115 if reflect.DeepEqual(args, []string{"acr", "list", "--query", "[].{uri:loginServer,id:id,name:name,group:resourceGroup}"}) { 116 return `[ 117 { 118 "group": "musekeen", 119 "id": "fakeidnotused", 120 "name": "jenkinsx", 121 "uri": "jenkinsx.azurecr.io" 122 }, 123 { 124 "group": "musekeen", 125 "id": "fakeid", 126 "name": "azure", 127 "uri": "azure.azurecr.io" 128 } 129 ]` 130 } else if reflect.DeepEqual(args, []string{"acr", "list", "--query", "[].{uri:loginServer,id:id,name:name,group:resourceGroup}", "--subscription", "sub"}) { 131 return `[ 132 { 133 "group": "musekeen", 134 "id": "fakeidnotused", 135 "name": "jenkinsx", 136 "uri": "jenkinsx.azurecr.io" 137 }, 138 { 139 "group": "musekeen", 140 "id": "fakeidsub", 141 "name": "azure", 142 "uri": "azuresub.azurecr.io" 143 } 144 ]` 145 } else if reflect.DeepEqual(args, []string{"acr", "create", "-g", "newrg", "-n", "newacr", "--sku", "Standard", "--admin-enabled", "--query", "id", "-o", "tsv"}) { 146 return `fakeidxxx` 147 } else if reflect.DeepEqual(args, []string{"acr", "create", "-g", "newrg", "-n", "newacr", "--sku", "Standard", "--admin-enabled", "--query", "id", "-o", "tsv", "--subscription", "sub"}) { 148 return `fakeidsub` 149 } else { 150 return `{ 151 "passwords": [ 152 { 153 "name": "password", 154 "value": "password123" 155 }, 156 { 157 "name": "password2", 158 "value": "passwordabc" 159 } 160 ], 161 "username": "azure" 162 }` 163 } 164 }