@@ -6,11 +6,10 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
66
77const mocks = vi . hoisted ( ( ) => ( {
88 getWorkspaceOwnerSubscriptionAccess : vi . fn ( ) ,
9- isCredentialGroupsAvailable : vi . fn ( ) ,
10- isCredentialGroupsEnterprisePlanRequired : vi . fn ( ) ,
119 listCredentials : vi . fn ( ) ,
1210 loadGroup : vi . fn ( ) ,
1311 loadWorkspace : vi . fn ( ) ,
12+ resolveCredentialGroupsAvailability : vi . fn ( ) ,
1413 resolvePermission : vi . fn ( ) ,
1514} ) )
1615
@@ -19,8 +18,7 @@ vi.mock('@/lib/billing/core/workspace-access', () => ({
1918} ) )
2019
2120vi . mock ( '@/lib/credential-groups/availability' , ( ) => ( {
22- isCredentialGroupsAvailable : mocks . isCredentialGroupsAvailable ,
23- isCredentialGroupsEnterprisePlanRequired : mocks . isCredentialGroupsEnterprisePlanRequired ,
21+ resolveCredentialGroupsAvailability : mocks . resolveCredentialGroupsAvailability ,
2422} ) )
2523
2624vi . mock ( '@/lib/credential-groups/credentials' , ( ) => ( {
@@ -106,8 +104,7 @@ describe('listCredentialGroupCredentials', () => {
106104 mocks . loadWorkspace . mockResolvedValue ( workspaceContext )
107105 mocks . resolvePermission . mockResolvedValue ( 'read' )
108106 mocks . getWorkspaceOwnerSubscriptionAccess . mockResolvedValue ( { isEnterprise : true } )
109- mocks . isCredentialGroupsAvailable . mockResolvedValue ( true )
110- mocks . isCredentialGroupsEnterprisePlanRequired . mockReturnValue ( false )
107+ mocks . resolveCredentialGroupsAvailability . mockResolvedValue ( { available : true } )
111108 mocks . listCredentials . mockResolvedValue ( {
112109 credentials : [
113110 {
@@ -225,18 +222,26 @@ describe('listCredentialGroupCredentials', () => {
225222 } )
226223
227224 it ( 'fails before listing when Credential Groups are unavailable' , async ( ) => {
228- mocks . isCredentialGroupsAvailable . mockResolvedValue ( false )
225+ mocks . resolveCredentialGroupsAvailability . mockResolvedValue ( {
226+ available : false ,
227+ reason : 'feature_disabled' ,
228+ } )
229229
230230 await expect (
231231 listCredentialGroupCredentials . execute ( { principal : executorPrincipal ( ) , input } )
232- ) . rejects . toMatchObject ( { code : 'forbidden' } )
232+ ) . rejects . toMatchObject ( {
233+ code : 'forbidden' ,
234+ message : 'Credential Groups are not available' ,
235+ } )
233236 expect ( mocks . listCredentials ) . not . toHaveBeenCalled ( )
234237 } )
235238
236239 it ( 'identifies the Enterprise requirement for unavailable hosted workspaces' , async ( ) => {
237240 mocks . getWorkspaceOwnerSubscriptionAccess . mockResolvedValue ( { isEnterprise : false } )
238- mocks . isCredentialGroupsAvailable . mockResolvedValue ( false )
239- mocks . isCredentialGroupsEnterprisePlanRequired . mockReturnValue ( true )
241+ mocks . resolveCredentialGroupsAvailability . mockResolvedValue ( {
242+ available : false ,
243+ reason : 'enterprise_plan_required' ,
244+ } )
240245
241246 await expect (
242247 listCredentialGroupCredentials . execute ( { principal : executorPrincipal ( ) , input } )
0 commit comments