mirror of
https://github.com/storytold/irsa-manager.git
synced 2026-10-09 00:09:43 +00:00
secret deletion
This commit is contained in:
@@ -77,7 +77,10 @@ func (r *IRSASetupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
|
||||
}
|
||||
|
||||
if !obj.DeletionTimestamp.IsZero() {
|
||||
err = r.reconcileDelete(ctx, obj)
|
||||
err = r.reconcileDelete(ctx, obj, kubeClient)
|
||||
if err == nil {
|
||||
log.Info("successfully deleted")
|
||||
}
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
|
||||
@@ -94,7 +97,25 @@ func (r *IRSASetupReconciler) reconcile(ctx context.Context, obj *irsav1alpha1.I
|
||||
return err
|
||||
}
|
||||
|
||||
func (r *IRSASetupReconciler) reconcileDelete(ctx context.Context, obj *irsav1alpha1.IRSASetup) error {
|
||||
func (r *IRSASetupReconciler) reconcileDelete(ctx context.Context, obj *irsav1alpha1.IRSASetup, kubeClient *kubernetes.KubernetesClient) error {
|
||||
factory, err := newOIDCIdpFactory(ctx, obj, nil, r.AwsClient)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
secret, err := manifests.NewSecretBuilder().Build("name", "default")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
kubeHandler := handler.NewKubernetesHandler(kubeClient)
|
||||
kubeHandler.Append(secret)
|
||||
err = selfhosted.Delete(ctx, factory)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = kubeHandler.DeleteAll(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -38,13 +38,16 @@ var _ = Describe("IRSASetup Controller", func() {
|
||||
Context("When reconciling a resource", func() {
|
||||
const resourceName = "test-resource"
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
typeNamespacedName := types.NamespacedName{
|
||||
Name: resourceName,
|
||||
Namespace: "default", // TODO(user):Modify as needed
|
||||
Namespace: "default",
|
||||
}
|
||||
irsasetup := &irsav1alpha1.IRSASetup{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: resourceName,
|
||||
Namespace: "default",
|
||||
},
|
||||
}
|
||||
irsasetup := &irsav1alpha1.IRSASetup{}
|
||||
|
||||
BeforeEach(func() {
|
||||
By("creating the custom resource for the Kind IRSASetup")
|
||||
@@ -69,17 +72,12 @@ var _ = Describe("IRSASetup Controller", func() {
|
||||
}
|
||||
})
|
||||
|
||||
AfterEach(func() {
|
||||
// TODO(user): Cleanup logic after each test, like removing the resource instance.
|
||||
resource := &irsav1alpha1.IRSASetup{}
|
||||
err := k8sClient.Get(ctx, typeNamespacedName, resource)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Cleanup the specific resource instance IRSASetup")
|
||||
Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
|
||||
})
|
||||
It("should successfully reconcile the resource", func() {
|
||||
awsClient := newMockAwsClient()
|
||||
expected := []types.NamespacedName{
|
||||
{Name: "name", Namespace: "default"},
|
||||
}
|
||||
|
||||
By("Reconciling the created resource")
|
||||
controllerReconciler := &IRSASetupReconciler{
|
||||
Client: k8sClient,
|
||||
@@ -91,8 +89,24 @@ var _ = Describe("IRSASetup Controller", func() {
|
||||
NamespacedName: typeNamespacedName,
|
||||
})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// TODO(user): Add more specific assertions depending on your controller's reconciliation logic.
|
||||
// Example: If you expect a certain status condition after reconciliation, verify it here.
|
||||
_, err = controllerReconciler.Reconcile(ctx, reconcile.Request{
|
||||
NamespacedName: typeNamespacedName,
|
||||
})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
for _, expect := range expected {
|
||||
checkExist(expect, newSecret)
|
||||
}
|
||||
By("removing the custom resource for the Kind")
|
||||
Eventually(func() error {
|
||||
return k8sClient.Delete(ctx, irsasetup)
|
||||
}, timeout).Should(Succeed())
|
||||
_, err = controllerReconciler.Reconcile(ctx, reconcile.Request{
|
||||
NamespacedName: typeNamespacedName,
|
||||
})
|
||||
Expect(err).To(Not(HaveOccurred()))
|
||||
for _, expect := range expected {
|
||||
checkNoExist(expect, newSecret)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -21,12 +21,16 @@ import (
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/kubernetes/scheme"
|
||||
"k8s.io/client-go/rest"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
@@ -43,6 +47,8 @@ var (
|
||||
cfg *rest.Config
|
||||
k8sClient client.Client
|
||||
testEnv *envtest.Environment
|
||||
timeout = time.Second * 10
|
||||
ctx = ctrl.SetupSignalHandler()
|
||||
)
|
||||
|
||||
func TestControllers(t *testing.T) {
|
||||
@@ -89,3 +95,21 @@ var _ = AfterSuite(func() {
|
||||
err := testEnv.Stop()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
func checkExist(expected types.NamespacedName, newFunc func() client.Object) {
|
||||
Eventually(func() error {
|
||||
found := newFunc()
|
||||
return k8sClient.Get(ctx, expected, found)
|
||||
}, timeout).Should(Succeed())
|
||||
}
|
||||
|
||||
func checkNoExist(expected types.NamespacedName, newFunc func() client.Object) {
|
||||
Eventually(func() error {
|
||||
found := newFunc()
|
||||
return k8sClient.Get(ctx, expected, found)
|
||||
}, timeout).Should(Not(Succeed()))
|
||||
}
|
||||
|
||||
func newSecret() client.Object {
|
||||
return &corev1.Secret{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user