Skip to content

Commit f50e574

Browse files
zmotsoSergK
authored andcommitted
fix: Unable to update default browserFlow in master realm (#143)
1 parent c22c55a commit f50e574

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

internal/controller/clusterkeycloakrealm/chain/factory.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ func MakeChain(c client.Client, operatorNs string) RealmHandler {
1111
NewPutRealmSettings(),
1212
NewUserProfile(),
1313
NewConfigureEmail(c, operatorNs),
14+
NewAuthFlow(),
1415
)
1516

1617
return ch

internal/controller/clusterkeycloakrealm/clusterkeycloakrealm_controller_integration_test.go

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package clusterkeycloakrealm
22

33
import (
4+
"time"
5+
46
. "github.com/onsi/ginkgo/v2"
57
. "github.com/onsi/gomega"
68

@@ -10,6 +12,8 @@ import (
1012

1113
"github.com/epam/edp-keycloak-operator/api/common"
1214
keycloakAlpha "github.com/epam/edp-keycloak-operator/api/v1alpha1"
15+
"github.com/epam/edp-keycloak-operator/internal/controller/helper"
16+
"github.com/epam/edp-keycloak-operator/pkg/client/keycloak/adapter"
1317
"github.com/epam/edp-keycloak-operator/pkg/objectmeta"
1418
)
1519

@@ -18,7 +22,7 @@ var _ = Describe("ClusterKeycloakRealm controller", func() {
1822
clusterKeycloakCR = "test-cluster-keycloak-realm"
1923
)
2024
It("Should reconcile ClusterKeycloakRealm", func() {
21-
By("By creating a ClusterKeycloakRealm")
25+
By("Creating a ClusterKeycloakRealm")
2226
keycloakRealm := &keycloakAlpha.ClusterKeycloakRealm{
2327
ObjectMeta: metav1.ObjectMeta{
2428
Name: clusterKeycloakCR,
@@ -53,6 +57,70 @@ var _ = Describe("ClusterKeycloakRealm controller", func() {
5357

5458
return createdKeycloakRealm.Status.Available
5559
}, timeout, interval).Should(BeTrue())
60+
61+
By("Updating ClusterKeycloakRealm with authentication flow")
62+
By("Creating authentication flow")
63+
h := helper.MakeHelper(k8sClient, k8sClient.Scheme(), ns)
64+
65+
testClusterRealm := &keycloakAlpha.ClusterKeycloakRealm{
66+
ObjectMeta: metav1.ObjectMeta{
67+
Name: "temp-realm-for-flow",
68+
},
69+
Spec: keycloakAlpha.ClusterKeycloakRealmSpec{
70+
ClusterKeycloakRef: ClusterKeycloakCR,
71+
RealmName: "test-realm",
72+
},
73+
}
74+
75+
keycloakClient, err := h.CreateKeycloakClientFromClusterRealm(ctx, testClusterRealm)
76+
Expect(err).ShouldNot(HaveOccurred())
77+
78+
testFlow := &adapter.KeycloakAuthFlow{
79+
Alias: "test-flow",
80+
Description: "Test authentication flow for integration test",
81+
ProviderID: "basic-flow",
82+
TopLevel: true,
83+
BuiltIn: false,
84+
AuthenticationExecutions: []adapter.AuthenticationExecution{
85+
{
86+
Authenticator: "auth-username-password-form",
87+
Requirement: "REQUIRED",
88+
Priority: 10,
89+
},
90+
},
91+
}
92+
93+
err = keycloakClient.SyncAuthFlow("test-realm", testFlow)
94+
Expect(adapter.SkipAlreadyExistsErr(err)).ShouldNot(HaveOccurred())
95+
96+
By("Updating ClusterKeycloakRealm with authentication flow")
97+
By("Getting ClusterKeycloakRealm")
98+
createdKeycloakRealm := &keycloakAlpha.ClusterKeycloakRealm{}
99+
err = k8sClient.Get(ctx, types.NamespacedName{Name: clusterKeycloakCR}, createdKeycloakRealm)
100+
Expect(err).ShouldNot(HaveOccurred())
101+
102+
createdKeycloakRealm.Spec.AuthenticationFlow = &keycloakAlpha.AuthenticationFlow{
103+
BrowserFlow: "test-flow",
104+
}
105+
Expect(k8sClient.Update(ctx, createdKeycloakRealm)).Should(Succeed())
106+
Consistently(func() bool {
107+
updatedKeycloakRealm := &keycloakAlpha.ClusterKeycloakRealm{}
108+
109+
Expect(k8sClient.Get(
110+
ctx,
111+
types.NamespacedName{Name: clusterKeycloakCR},
112+
updatedKeycloakRealm,
113+
)).ShouldNot(HaveOccurred())
114+
115+
return updatedKeycloakRealm.Status.Available
116+
}, time.Second*3, time.Second).Should(BeTrue())
117+
118+
By("Checking realm configuration")
119+
realm, err := keycloakClient.GetRealm(ctx, "test-realm")
120+
Expect(err).ShouldNot(HaveOccurred())
121+
Expect(realm.BrowserFlow).ShouldNot(BeNil())
122+
Expect(*realm.BrowserFlow).Should(Equal("test-flow"))
123+
56124
By("By deleting ClusterKeycloakRealm")
57125
Expect(k8sClient.Delete(ctx, keycloakRealm)).Should(Succeed())
58126
Eventually(func() bool {
@@ -66,7 +134,7 @@ var _ = Describe("ClusterKeycloakRealm controller", func() {
66134
By("By creating a ClusterKeycloakRealm")
67135
keycloakRealm := &keycloakAlpha.ClusterKeycloakRealm{
68136
ObjectMeta: metav1.ObjectMeta{
69-
Name: "test-cluster-keycloak-realm",
137+
Name: "test-cluster-keycloak-realm-preserve-resources",
70138
Annotations: map[string]string{
71139
objectmeta.PreserveResourcesOnDeletionAnnotation: "true",
72140
},

0 commit comments

Comments
 (0)