Skip to content

Commit

Permalink
Do some better assertions now we have a real controller reconciling t…
Browse files Browse the repository at this point in the history
…he SA secret.
  • Loading branch information
Miles-Garnsey committed May 3, 2024
1 parent ab3286d commit d64219a
Showing 1 changed file with 25 additions and 37 deletions.
62 changes: 25 additions & 37 deletions cmd/kubectl-k8ssandra/register/register_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,35 @@ import (
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
"sigs.k8s.io/controller-runtime/pkg/client"
)

func TestRegister(t *testing.T) {
require.New(t)
client1 := (*multiEnv)[0].Client
client2 := (*multiEnv)[1].Client
client1, _ := client.New((*multiEnv)[0].RestConfig(), client.Options{})
client2, _ := client.New((*multiEnv)[1].RestConfig(), client.Options{})
ctx := context.Background()

if err := client1.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "source-namespace"}}); err != nil {
t.Fatal(err)
}

if err := client2.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "dest-namespace"}}); err != nil {
t.Fatal(err)
}
require.Eventually(t, func() bool {
// It seems that at first, these clients may not be ready for use. By the time they can create a namespace they are known ready.
err1 := client1.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "source-namespace"}})
if err1 != nil {
t.Log(err1)
}
err2 := client2.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "dest-namespace"}})
if err2 != nil {
t.Log(err2)
return false
}
return err1 == nil && err2 == nil
}, time.Second*30, time.Second*5)

buildDir := os.Getenv("BUILD_DIR")
if buildDir == "" {
_, b, _, _ := runtime.Caller(0)
buildDir = filepath.Join(filepath.Dir(b), "../../../build")
buildDir = filepath.Join(filepath.Dir(b), "../../build")
}

if _, err := os.Stat(buildDir); os.IsNotExist(err) {
Expand Down Expand Up @@ -99,30 +105,12 @@ func TestRegister(t *testing.T) {
return false
}, time.Second*30, time.Second*5)

// This relies on a controller that is not running in the envtest.

desiredSaSecret := &corev1.Secret{}
require.NoError(t, client1.Get(ctx, client.ObjectKey{Name: "k8ssandra-operator-secret", Namespace: "source-namespace"}, desiredSaSecret))
patch := client.MergeFrom(desiredSaSecret.DeepCopy())
desiredSaSecret.Data = map[string][]byte{
"token": []byte("test-token"),
"ca.crt": []byte("test-ca"),
}
require.NoError(t, client1.Patch(ctx, desiredSaSecret, patch))

desiredSa := &corev1.ServiceAccount{}
require.NoError(t, client1.Get(
ctx,
client.ObjectKey{Name: "k8ssandra-operator", Namespace: "source-namespace"},
desiredSa))

patch = client.MergeFrom(desiredSa.DeepCopy())
desiredSa.Secrets = []corev1.ObjectReference{
{
Name: "k8ssandra-operator-secret",
},
}
require.NoError(t, client1.Patch(ctx, desiredSa, patch))
// Ensure secret created.
sourceSecret := &corev1.Secret{}
require.Eventually(t, func() bool {
err := client1.Get(ctx, types.NamespacedName{Name: "k8ssandra-operator", Namespace: "source-namespace"}, sourceSecret)
return err == nil
}, time.Second*60, time.Second*5)

// Continue reconciliation

Expand Down Expand Up @@ -161,11 +149,11 @@ func TestRegister(t *testing.T) {

destKubeconfig := ClientConfigFromSecret(destSecret)
require.Equal(t,
desiredSaSecret.Data["ca.crt"],
sourceSecret.Data["ca.crt"],
destKubeconfig.Clusters["cluster"].CertificateAuthorityData)

require.Equal(t,
string(desiredSaSecret.Data["token"]),
string(sourceSecret.Data["token"]),
destKubeconfig.AuthInfos["cluster"].Token)
}

Expand Down

0 comments on commit d64219a

Please sign in to comment.