@@ -12,6 +12,7 @@ const {
1212 mockGetSession,
1313 mockIsOrganizationOnEnterprisePlan,
1414 mockUpdateSSOProvider,
15+ mockWithSSOProviderMutationLock,
1516 ssoProviderTable,
1617} = vi . hoisted ( ( ) => ( {
1718 accountTable : {
@@ -32,6 +33,7 @@ const {
3233 mockGetSession : vi . fn ( ) ,
3334 mockIsOrganizationOnEnterprisePlan : vi . fn ( ) ,
3435 mockUpdateSSOProvider : vi . fn ( ) ,
36+ mockWithSSOProviderMutationLock : vi . fn ( ( callback : ( ) => Promise < unknown > ) => callback ( ) ) ,
3537 ssoProviderTable : {
3638 id : 'sso.id' ,
3739 issuer : 'sso.issuer' ,
@@ -74,6 +76,7 @@ vi.mock('@sim/db', () => ({
7476 account : accountTable ,
7577 member : memberTable ,
7678 ssoProvider : ssoProviderTable ,
79+ withSSOProviderMutationLock : mockWithSSOProviderMutationLock ,
7780} ) )
7881
7982vi . mock ( '@/lib/auth' , ( ) => ( {
@@ -167,6 +170,33 @@ describe('/api/auth/sso/providers/[id]', () => {
167170 )
168171 } )
169172
173+ it ( 're-checks domain overlap inside the mutation lock before updating' , async ( ) => {
174+ mockWithSSOProviderMutationLock . mockImplementationOnce (
175+ async ( callback : ( ) => Promise < unknown > ) => {
176+ dbState . providers = [
177+ PROVIDER ,
178+ {
179+ id : 'concurrent' ,
180+ issuer : 'https://other-idp.example.com' ,
181+ domain : 'login.new.example.com' ,
182+ oidcConfig : '{}' ,
183+ samlConfig : null ,
184+ userId : 'creator-2' ,
185+ providerId : 'concurrent-provider' ,
186+ organizationId : 'org-2' ,
187+ } ,
188+ ]
189+ return callback ( )
190+ }
191+ )
192+
193+ const response = await PATCH ( createMockRequest ( 'PATCH' , SAML_UPDATE ) , context )
194+
195+ expect ( response . status ) . toBe ( 409 )
196+ expect ( mockWithSSOProviderMutationLock ) . toHaveBeenCalledOnce ( )
197+ expect ( mockUpdateSSOProvider ) . not . toHaveBeenCalled ( )
198+ } )
199+
170200 it ( 'reports the compatibility-active state while verification enforcement is disabled' , async ( ) => {
171201 const previousValue = env . SSO_DOMAIN_VERIFICATION_ENABLED
172202 env . SSO_DOMAIN_VERIFICATION_ENABLED = undefined
0 commit comments