diff --git a/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.test.tsx b/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.test.tsx index 40e7b09d8f..3c01ffda94 100644 --- a/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.test.tsx @@ -43,7 +43,7 @@ const mockIdentityApi: IdentityApi = { id: 'Bob', idToken: 'token', type: 'user', - userEntityRef: 'user:default/Bob', + userEntityRef: 'user:default/bob', ownershipEntityRefs: ['group:default/group1', 'group:default/group2'], }), getCredentials: () => Promise.resolve({ token: 'token' }), @@ -57,7 +57,7 @@ describe('', () => { const required = false; const catalogApi: jest.Mocked = { - getEntitiesByRefs: jest.fn(async () => ({ items: entities })), + getEntities: jest.fn(async () => ({ items: entities })), } as any; const mockErrorApi: jest.Mocked = { @@ -88,7 +88,7 @@ describe('', () => { ]; onChange.mockClear(); - catalogApi.getEntitiesByRefs.mockClear(); + catalogApi.getEntities.mockClear(); }); afterEach(() => { @@ -103,7 +103,7 @@ describe('', () => { entity.spec.members.includes('Bob'), ); - catalogApi.getEntitiesByRefs.mockResolvedValue({ items: userGroups }); + catalogApi.getEntities.mockResolvedValue({ items: userGroups }); const props = { onChange, @@ -124,35 +124,38 @@ describe('', () => { ); await waitFor(() => - expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledTimes(1), + expect(catalogApi.getEntities).toHaveBeenCalledTimes(1), ); - expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledWith({ - entityRefs: ['group:default/group1', 'group:default/group2'], + expect(catalogApi.getEntities).toHaveBeenCalledWith({ + filter: { + type: 'Group', + 'relations.hasMember': ['user:default/bob'], + }, }); // Check that getEntities was set up to return the correct data - await expect( - catalogApi.getEntitiesByRefs.mock.results[0].value, - ).resolves.toEqual({ - items: [ - { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Group', - metadata: { name: 'group1' }, - spec: { members: ['Bob'] }, - }, - { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Group', - metadata: { name: 'group2' }, - spec: { members: ['Bob'] }, - }, - ], - }); + await expect(catalogApi.getEntities.mock.results[0].value).resolves.toEqual( + { + items: [ + { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { name: 'group1' }, + spec: { members: ['Bob'] }, + }, + { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { name: 'group2' }, + spec: { members: ['Bob'] }, + }, + ], + }, + ); await expect( - catalogApi.getEntitiesByRefs.mock.results[0].value, + catalogApi.getEntities.mock.results[0].value, ).resolves.not.toEqual( expect.objectContaining({ items: expect.arrayContaining([ @@ -171,7 +174,8 @@ describe('', () => { Array.isArray(entity.spec.members) && entity.spec.members.includes('Bob'), ); - catalogApi.getEntitiesByRefs.mockResolvedValue({ items: userGroups }); + + catalogApi.getEntities.mockResolvedValue({ items: userGroups }); const props = { onChange, @@ -192,7 +196,7 @@ describe('', () => { ); await waitFor(() => - expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledTimes(1), + expect(catalogApi.getEntities).toHaveBeenCalledTimes(1), ); // Simulate user input @@ -228,7 +232,7 @@ describe('', () => { }, ]; - catalogApi.getEntitiesByRefs.mockResolvedValue({ items: userGroups }); + catalogApi.getEntities.mockResolvedValue({ items: userGroups }); const props = { onChange, @@ -249,7 +253,7 @@ describe('', () => { ); await waitFor(() => - expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledTimes(1), + expect(catalogApi.getEntities).toHaveBeenCalledTimes(1), ); const inputField = getByRole('combobox'); @@ -257,8 +261,9 @@ describe('', () => { userEvent.type(inputField, 'group'); await waitFor(() => { - const option = getByRole('option', { name: 'My First Group' }); - expect(option).toBeInTheDocument(); + expect( + getByRole('option', { name: 'My First Group' }), + ).toBeInTheDocument(); }); const option = getByRole('option', { name: 'My First Group' }); diff --git a/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.tsx b/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.tsx index 299e8e66d7..fe3cc96c0a 100644 --- a/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnershipEntityRefPicker/OwnershipEntityRefPicker.tsx @@ -58,15 +58,18 @@ export const OwnershipEntityRefPicker = ( }>(null); useAsync(async () => { - const { ownershipEntityRefs } = await identityApi.getBackstageIdentity(); + const { userEntityRef } = await identityApi.getBackstageIdentity(); - if (!ownershipEntityRefs || !ownershipEntityRefs.length) { - errorApi.post(new NotFoundError('No ownership entity refs found')); + if (!userEntityRef) { + errorApi.post(new NotFoundError('No user entity ref found')); return; } - const { items } = await catalogApi.getEntitiesByRefs({ - entityRefs: ownershipEntityRefs, + const { items } = await catalogApi.getEntities({ + filter: { + type: 'Group', + ['relations.hasMember']: [userEntityRef], + }, }); const groupValues = items