Merge pull request #119984 from my-git9/certlist-ut

kubeadm: increase ut coverage for util/kubeconfig
This commit is contained in:
Kubernetes Prow Robot 2023-08-18 00:52:28 -07:00 committed by GitHub
commit 8a5e17cd28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,6 +20,7 @@ import (
"bytes"
"fmt"
"os"
"reflect"
"testing"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
@ -345,3 +346,184 @@ func TestHasCredentials(t *testing.T) {
})
}
}
func TestGetClusterFromKubeConfig(t *testing.T) {
tests := []struct {
name string
config *clientcmdapi.Config
expectedClusterName string
expectedCluster *clientcmdapi.Cluster
}{
{
name: "cluster is empty",
config: &clientcmdapi.Config{
CurrentContext: "kubernetes",
},
expectedClusterName: "",
expectedCluster: nil,
},
{
name: "cluster and currentContext are not empty",
config: &clientcmdapi.Config{
CurrentContext: "foo",
Contexts: map[string]*clientcmdapi.Context{
"foo": {AuthInfo: "foo", Cluster: "foo"},
"bar": {AuthInfo: "bar", Cluster: "bar"},
},
Clusters: map[string]*clientcmdapi.Cluster{
"foo": {Server: "http://foo:8080"},
"bar": {Server: "https://bar:16443"},
},
},
expectedClusterName: "foo",
expectedCluster: &clientcmdapi.Cluster{
Server: "http://foo:8080",
},
},
{
name: "cluster is not empty and currentContext is not in contexts",
config: &clientcmdapi.Config{
CurrentContext: "foo",
Contexts: map[string]*clientcmdapi.Context{
"bar": {AuthInfo: "bar", Cluster: "bar"},
},
Clusters: map[string]*clientcmdapi.Cluster{
"foo": {Server: "http://foo:8080"},
"bar": {Server: "https://bar:16443"},
},
},
expectedClusterName: "",
expectedCluster: nil,
},
}
for _, rt := range tests {
t.Run(rt.name, func(t *testing.T) {
clusterName, cluster := GetClusterFromKubeConfig(rt.config)
if clusterName != rt.expectedClusterName {
t.Errorf("got cluster name = %s, expected %s", clusterName, rt.expectedClusterName)
}
if !reflect.DeepEqual(cluster, rt.expectedCluster) {
t.Errorf("got cluster = %+v, expected %+v", cluster, rt.expectedCluster)
}
})
}
}
func TestEnsureAuthenticationInfoAreEmbedded(t *testing.T) {
file, err := os.CreateTemp("", t.Name())
if err != nil {
t.Fatal(err)
}
defer os.Remove(file.Name())
defer file.Close()
tests := []struct {
name string
config *clientcmdapi.Config
wantErr bool
}{
{
name: "get data from file",
config: &clientcmdapi.Config{
CurrentContext: "kubernetes",
Contexts: map[string]*clientcmdapi.Context{"kubernetes": {AuthInfo: "kubernetes"}},
AuthInfos: map[string]*clientcmdapi.AuthInfo{"kubernetes": {
ClientCertificate: file.Name(),
ClientKey: file.Name(),
TokenFile: file.Name(),
},
},
},
wantErr: false,
},
{
name: "get data from config",
config: &clientcmdapi.Config{
CurrentContext: "kubernetes",
Contexts: map[string]*clientcmdapi.Context{"kubernetes": {AuthInfo: "kubernetes"}},
AuthInfos: map[string]*clientcmdapi.AuthInfo{"kubernetes": {
ClientCertificateData: []byte{'f', 'o', 'o'},
ClientKeyData: []byte{'b', 'a', 'r'},
Token: "k8s",
},
},
},
wantErr: false,
},
{
name: "invalid authInfo: no authInfo",
config: nil,
wantErr: true,
},
{
name: "get data from file but the file doesn't exist",
config: &clientcmdapi.Config{
CurrentContext: "kubernetes",
Contexts: map[string]*clientcmdapi.Context{"kubernetes": {AuthInfo: "kubernetes"}},
AuthInfos: map[string]*clientcmdapi.AuthInfo{"kubernetes": {
ClientCertificate: "unknownfile",
ClientKey: "unknownfile",
TokenFile: "unknownfile",
},
},
},
wantErr: true,
},
}
for _, rt := range tests {
t.Run(rt.name, func(t *testing.T) {
if err := EnsureAuthenticationInfoAreEmbedded(rt.config); (err != nil) != rt.wantErr {
t.Errorf("error = %v, wantErr %v", err, rt.wantErr)
}
})
}
}
func TestEnsureCertificateAuthorityIsEmbedded(t *testing.T) {
file, err := os.CreateTemp("", t.Name())
if err != nil {
t.Fatal(err)
}
defer os.Remove(file.Name())
defer file.Close()
tests := []struct {
name string
cluster *clientcmdapi.Cluster
wantErr bool
}{
{
name: "get data from file",
cluster: &clientcmdapi.Cluster{
CertificateAuthority: file.Name(),
},
wantErr: false,
},
{
name: "get data from config",
cluster: &clientcmdapi.Cluster{
CertificateAuthorityData: []byte{'f', 'o', 'o'},
},
wantErr: false,
},
{
name: "cluster is nil",
cluster: nil,
wantErr: true,
},
{
name: "get data from file but the file doesn't exist",
cluster: &clientcmdapi.Cluster{
CertificateAuthority: "unknownfile",
},
wantErr: true,
},
}
for _, rt := range tests {
t.Run(rt.name, func(t *testing.T) {
if err := EnsureCertificateAuthorityIsEmbedded(rt.cluster); (err != nil) != rt.wantErr {
t.Errorf("error = %v, wantErr %v", err, rt.wantErr)
}
})
}
}