diff --git a/cmd/kubeadm/app/cmd/init_test.go b/cmd/kubeadm/app/cmd/init_test.go index 9339277199f..10112726489 100644 --- a/cmd/kubeadm/app/cmd/init_test.go +++ b/cmd/kubeadm/app/cmd/init_test.go @@ -22,10 +22,16 @@ import ( "path/filepath" "testing" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" + v1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" + kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" + "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) var testInitConfig = fmt.Sprintf(`--- @@ -98,6 +104,39 @@ func TestNewInitData(t *testing.T) { flags: map[string]string{ options.CfgPath: configFilePath, }, + validate: func(t *testing.T, data *initData) { + validData := &initData{ + certificatesDir: kubeadmapiv1.DefaultCertificatesDir, + kubeconfigPath: constants.GetAdminKubeConfigPath(), + kubeconfigDir: constants.KubernetesDir, + ignorePreflightErrors: sets.New("c", "d"), + cfg: &kubeadmapi.InitConfiguration{ + NodeRegistration: kubeadmapi.NodeRegistrationOptions{ + Name: "somename", + CRISocket: "unix:///var/run/containerd/containerd.sock", + IgnorePreflightErrors: []string{"c", "d"}, + ImagePullPolicy: "IfNotPresent", + }, + LocalAPIEndpoint: kubeadmapi.APIEndpoint{ + AdvertiseAddress: "1.2.3.4", + BindPort: 6443, + }, + BootstrapTokens: []v1.BootstrapToken{ + { + Token: &v1.BootstrapTokenString{ID: "abcdef", Secret: "0123456789abcdef"}, + Usages: []string{"signing", "authentication"}, + TTL: &metav1.Duration{ + Duration: constants.DefaultTokenDuration, + }, + Groups: []string{"system:bootstrappers:kubeadm:default-node-token"}, + }, + }, + }, + } + if diff := cmp.Diff(validData, data, cmp.AllowUnexported(initData{}), cmpopts.IgnoreFields(initData{}, "client", "cfg.ClusterConfiguration", "cfg.NodeRegistration.Taints")); diff != "" { + t.Fatalf("newInitData returned data (-want,+got):\n%s", diff) + } + }, }, { name: "--node-name flags override config from file", @@ -164,7 +203,6 @@ func TestNewInitData(t *testing.T) { if err == nil && tc.expectError { t.Fatal("newInitData didn't return error when expected") } - // exec additional validation on the returned value if tc.validate != nil { tc.validate(t, data) diff --git a/cmd/kubeadm/app/cmd/join_test.go b/cmd/kubeadm/app/cmd/join_test.go index 268650215d1..4e323bb74e1 100644 --- a/cmd/kubeadm/app/cmd/join_test.go +++ b/cmd/kubeadm/app/cmd/join_test.go @@ -24,9 +24,15 @@ import ( "strings" "testing" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/klog/v2" + kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" @@ -206,6 +212,37 @@ func TestNewJoinData(t *testing.T) { flags: map[string]string{ options.CfgPath: configFilePath, }, + validate: func(t *testing.T, data *joinData) { + validData := &joinData{ + cfg: &kubeadmapi.JoinConfiguration{ + TypeMeta: metav1.TypeMeta{Kind: "", APIVersion: ""}, + NodeRegistration: kubeadmapi.NodeRegistrationOptions{ + Name: "somename", + CRISocket: "unix:///var/run/containerd/containerd.sock", + IgnorePreflightErrors: []string{"c", "d"}, + ImagePullPolicy: "IfNotPresent", + Taints: []v1.Taint{{Key: "node-role.kubernetes.io/control-plane", Effect: "NoSchedule"}}, + }, + CACertPath: kubeadmapiv1.DefaultCACertPath, + Discovery: kubeadmapi.Discovery{ + BootstrapToken: &kubeadmapi.BootstrapTokenDiscovery{ + Token: "abcdef.0123456789abcdef", + APIServerEndpoint: "1.2.3.4:6443", + UnsafeSkipCAVerification: true, + }, + TLSBootstrapToken: "abcdef.0123456789abcdef", + Timeout: &metav1.Duration{Duration: kubeadmapiv1.DefaultDiscoveryTimeout}, + }, + ControlPlane: &kubeadmapi.JoinControlPlane{ + CertificateKey: "c39a18bae4a72e71b178661f437363da218a3efb83ddb03f1cd91d9ae1da41bd", + }, + }, + ignorePreflightErrors: sets.New("c", "d"), + } + if diff := cmp.Diff(validData, data, cmp.AllowUnexported(joinData{}), cmpopts.IgnoreFields(joinData{}, "client", "initCfg", "cfg.ControlPlane.LocalAPIEndpoint")); diff != "" { + t.Fatalf("newJoinData returned data (-want,+got):\n%s", diff) + } + }, }, { name: "--node-name flags override config from file",