@@ -221,3 +221,52 @@ func TestCanOverwriteS256(t *testing.T) {
221221
222222 g.Expect(method).To(Equal(CodeChallengeMethodPlain))
223223}
224+
225+func TestEmailClaimCorrectlySet(t *testing.T) {
226+ g := NewWithT(t)
227+
228+ testCases := []struct {
229+ name string
230+ userIDClaim string
231+ emailClaim string
232+ expectedEmailClaim string
233+ }{
234+ {
235+ name: "do not override EmailClaim if UserIDClaim is empty",
236+ userIDClaim: "",
237+ emailClaim: "email",
238+ expectedEmailClaim: "email",
239+ },
240+ {
241+ name: "set EmailClaim to UserIDClaim",
242+ userIDClaim: "user_id_claim",
243+ emailClaim: "email",
244+ expectedEmailClaim: "user_id_claim",
245+ },
246+ }
247+
248+ for _, tc := range testCases {
249+ t.Run(tc.name, func(t *testing.T) {
250+ providerConfig := options.Provider{
251+ ID: providerID,
252+ Type: "oidc",
253+ ClientID: clientID,
254+ ClientSecretFile: clientSecret,
255+ LoginURL: msAuthURL,
256+ RedeemURL: msTokenURL,
257+ OIDCConfig: options.OIDCOptions{
258+ IssuerURL: msIssuerURL,
259+ SkipDiscovery: true,
260+ JwksURL: msKeysURL,
261+ UserIDClaim: tc.userIDClaim,
262+ EmailClaim: tc.emailClaim,
263+ },
264+ }
265+
266+ pd, err := newProviderDataFromConfig(providerConfig)
267+ g.Expect(err).ToNot(HaveOccurred())
268+
269+ g.Expect(pd.EmailClaim).To(Equal(tc.expectedEmailClaim))
270+ })
271+ }
272+}