Skip to content

Commit

Permalink
chore: add utils/rest unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Charles-Edouard Brétéché <[email protected]>
  • Loading branch information
eddycharly committed Nov 19, 2023
1 parent d1e1563 commit 19c7e80
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pkg/commands/serve/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (c *options) Run(_ *cobra.Command, _ []string) error {
if err != nil {
return err
}
restConfig, err := restutils.RestConfig(c.clusterFlags.kubeConfigOverrides)
restConfig, err := restutils.Config(c.clusterFlags.kubeConfigOverrides)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/utils/rest/rest.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"k8s.io/client-go/tools/clientcmd"
)

func RestConfig(overrides clientcmd.ConfigOverrides) (*rest.Config, error) {
func Config(overrides clientcmd.ConfigOverrides) (*rest.Config, error) {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &overrides)
config, err := kubeConfig.ClientConfig()
Expand Down
62 changes: 57 additions & 5 deletions pkg/utils/rest/rest_test.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,80 @@
package rest

import (
"path"
"testing"
"time"

"github.com/stretchr/testify/assert"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)

func TestRestConfig(t *testing.T) {
basePath := "../../../test"
tests := []struct {
name string
kubeConfig string
overrides clientcmd.ConfigOverrides
wantErr bool
want *rest.Config
}{{
name: "no cluster",
kubeConfig: ".",
wantErr: true,
}, {
name: "empty",
kubeConfig: "../../../test/.kube/config",
kubeConfig: path.Join(basePath, ".kube/config"),
want: &rest.Config{
Host: "https://127.0.0.1:53742",
QPS: 300,
Burst: 300,
},
}, {
name: "context override",
kubeConfig: path.Join(basePath, ".kube/config"),
overrides: clientcmd.ConfigOverrides{
CurrentContext: "foo",
},
want: &rest.Config{
Host: "https://127.0.0.1:1234",
QPS: 300,
Burst: 300,
},
}, {
name: "timeout override",
kubeConfig: path.Join(basePath, ".kube/config"),
overrides: clientcmd.ConfigOverrides{
Timeout: "30s",
},
want: &rest.Config{
Host: "https://127.0.0.1:53742",
QPS: 300,
Burst: 300,
Timeout: 30 * time.Second,
},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Setenv("KUBECONFIG", tt.kubeConfig)
_, err := RestConfig(tt.overrides)
if (err != nil) != tt.wantErr {
t.Errorf("RestConfig() error = %v, wantErr %v", err, tt.wantErr)
return
got, err := Config(tt.overrides)
if tt.wantErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
if assert.NotNil(t, got) {
assert.Equal(t, tt.want.Host, got.Host)
assert.Equal(t, tt.want.APIPath, got.APIPath)
assert.Equal(t, tt.want.Username, got.Username)
assert.Equal(t, tt.want.Password, got.Password)
assert.Equal(t, tt.want.BearerToken, got.BearerToken)
assert.Equal(t, tt.want.BearerTokenFile, got.BearerTokenFile)
assert.Equal(t, tt.want.UserAgent, got.UserAgent)
assert.Equal(t, tt.want.DisableCompression, got.DisableCompression)
assert.Equal(t, tt.want.QPS, got.QPS)
assert.Equal(t, tt.want.Burst, got.Burst)
assert.Equal(t, tt.want.Timeout, got.Timeout)
}
}
})
}
Expand Down
8 changes: 8 additions & 0 deletions test/.kube/config
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,19 @@ clusters:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EVXlNekV4TkRRd01sb1hEVE16TURVeU1ERXhORFF3TWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTmpRCmRva0ovTVUzLzNRSjlpWXR0cENCK3p1OENkSWxncHd1aVF1b0RHSEg0S0hXZW0rNVJYK04rb1c2dW5EWWFaaDIKYWZJR2JNSDM0VjV4U1kydWpkSFpidzJYenlsTnVwSEJXK3NOR2hvSDNJcjBnWVBPVW1yNTU2WXJhZ0hPT1kzTwpBbk00WlN2WWRDNFhJTmxMcmtrNmNMWjhLbzB6dnNSdS93T3FHLzNHNXd3Sjd0T0FneTFJakUwN2VoMXNEbmhICklMcVJGVDcrdEVsMytmWHBscUozdU50Qmd6K2dOOUVReXJjNzFCMENUWk5NVHhzZHhGMkJLS3lsckx1REpFTXUKclZSbG5iWHpMdmVyOUMvL1V1QTJ5ZC9PMXBvcEJ0R3dCQ0NkTkVHRTdsNDMxSDlnZFZWbW0xaWNVTzhIVTRFRApPUGg3RnIvcitlQzBReFAzUlNjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZDR3ZaSVo2amFMdXpEOWNZcUVNZFNlR1VHaitNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQnBaVEtnRGlqZHRiU0p4MmgzcQpxUm9mc1N0Um9LL0U4YzJucWlPMVl2YUI4QlJzQUNYeVZYVU1xVVJFZkw5NmxpUm90dVVYSWlOUkx0b2JZNmZNCko2NHpwclRWaFp4b3FiZ0s3elRETGd0STNEWUJxWFNaaFRYTWczRXJ0Z1Qxajl2dzdLRmRqT1dtaWpHeWFrRDQKSk96V2ZLdFMxb2RIVk5NZjlzTFUyYkdLTkdFMjlmMWZYdEF3ZldUWDB3eHJEc2pwUHpEY3ZVdGVaOG9TTzV2cgptNWl4RldlL0JsVGhFV2t3czBIbFRsZmtyY3d0N0I1c0pFUmhkaHZaa0hFdWJZYVAxdDhUUEcySW1mRDJubWM4CkZFbnVQMnRneFMrcmprMXJublBic01KZ2VkSDEwS0l3VHFCZDZIVWNJRTVnSlZSTmthLzlSWHVNR01WbXBiZ2cKc0FRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:53742
name: kind-kind
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EVXlNekV4TkRRd01sb1hEVE16TURVeU1ERXhORFF3TWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTmpRCmRva0ovTVUzLzNRSjlpWXR0cENCK3p1OENkSWxncHd1aVF1b0RHSEg0S0hXZW0rNVJYK04rb1c2dW5EWWFaaDIKYWZJR2JNSDM0VjV4U1kydWpkSFpidzJYenlsTnVwSEJXK3NOR2hvSDNJcjBnWVBPVW1yNTU2WXJhZ0hPT1kzTwpBbk00WlN2WWRDNFhJTmxMcmtrNmNMWjhLbzB6dnNSdS93T3FHLzNHNXd3Sjd0T0FneTFJakUwN2VoMXNEbmhICklMcVJGVDcrdEVsMytmWHBscUozdU50Qmd6K2dOOUVReXJjNzFCMENUWk5NVHhzZHhGMkJLS3lsckx1REpFTXUKclZSbG5iWHpMdmVyOUMvL1V1QTJ5ZC9PMXBvcEJ0R3dCQ0NkTkVHRTdsNDMxSDlnZFZWbW0xaWNVTzhIVTRFRApPUGg3RnIvcitlQzBReFAzUlNjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZDR3ZaSVo2amFMdXpEOWNZcUVNZFNlR1VHaitNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQnBaVEtnRGlqZHRiU0p4MmgzcQpxUm9mc1N0Um9LL0U4YzJucWlPMVl2YUI4QlJzQUNYeVZYVU1xVVJFZkw5NmxpUm90dVVYSWlOUkx0b2JZNmZNCko2NHpwclRWaFp4b3FiZ0s3elRETGd0STNEWUJxWFNaaFRYTWczRXJ0Z1Qxajl2dzdLRmRqT1dtaWpHeWFrRDQKSk96V2ZLdFMxb2RIVk5NZjlzTFUyYkdLTkdFMjlmMWZYdEF3ZldUWDB3eHJEc2pwUHpEY3ZVdGVaOG9TTzV2cgptNWl4RldlL0JsVGhFV2t3czBIbFRsZmtyY3d0N0I1c0pFUmhkaHZaa0hFdWJZYVAxdDhUUEcySW1mRDJubWM4CkZFbnVQMnRneFMrcmprMXJublBic01KZ2VkSDEwS0l3VHFCZDZIVWNJRTVnSlZSTmthLzlSWHVNR01WbXBiZ2cKc0FRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:1234
name: foo
contexts:
- context:
cluster: kind-kind
user: kind-kind
name: kind-kind
- context:
cluster: foo
user: kind-kind
name: foo
current-context: kind-kind
kind: Config
preferences: {}
Expand Down

0 comments on commit 19c7e80

Please sign in to comment.