diff --git a/awx/ui_next/src/components/AdHocCommands/AdHocCommands.test.jsx b/awx/ui_next/src/components/AdHocCommands/AdHocCommands.test.jsx index e9879a84fa..3e279a92d7 100644 --- a/awx/ui_next/src/components/AdHocCommands/AdHocCommands.test.jsx +++ b/awx/ui_next/src/components/AdHocCommands/AdHocCommands.test.jsx @@ -153,6 +153,10 @@ describe('', () => { count: 5, }, }); + CredentialsAPI.readOptions.mockResolvedValue({ + data: { actions: { GET: {} } }, + }); + ExecutionEnvironmentsAPI.read.mockResolvedValue({ data: { results: [ @@ -310,6 +314,10 @@ describe('', () => { count: 5, }, }); + CredentialsAPI.readOptions.mockResolvedValue({ + data: { actions: { GET: {} } }, + }); + ExecutionEnvironmentsAPI.read.mockResolvedValue({ data: { results: [ diff --git a/awx/ui_next/src/components/AdHocCommands/AdHocCommandsWizard.test.jsx b/awx/ui_next/src/components/AdHocCommands/AdHocCommandsWizard.test.jsx index d2866e7965..c415df1104 100644 --- a/awx/ui_next/src/components/AdHocCommands/AdHocCommandsWizard.test.jsx +++ b/awx/ui_next/src/components/AdHocCommands/AdHocCommandsWizard.test.jsx @@ -126,6 +126,9 @@ describe('', () => { count: 2, }, }); + CredentialsAPI.readOptions.mockResolvedValue({ + data: { actions: { GET: {} } }, + }); await waitForElement(wrapper, 'WizardNavItem', el => el.length > 0); await act(async () => { @@ -245,6 +248,9 @@ describe('', () => { }, }) ); + CredentialsAPI.readOptions.mockResolvedValue({ + data: { actions: { GET: {} } }, + }); await waitForElement(wrapper, 'WizardNavItem', el => el.length > 0); await act(async () => { diff --git a/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.jsx b/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.jsx index 29ae4e6827..0246bf444d 100644 --- a/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.jsx +++ b/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.jsx @@ -27,23 +27,45 @@ function AdHocCredentialStep({ credentialTypeId, onEnableLaunch }) { error, isLoading, request: fetchCredentials, - result: { credentials, credentialCount }, + result: { + credentials, + credentialCount, + relatedSearchableKeys, + searchableKeys, + }, } = useRequest( useCallback(async () => { const params = parseQueryString(QS_CONFIG, history.location.search); - const { - data: { results, count }, - } = await CredentialsAPI.read( - mergeParams(params, { credential_type: credentialTypeId }) - ); + const [ + { + data: { results, count }, + }, + actionsResponse, + ] = await Promise.all([ + CredentialsAPI.read( + mergeParams(params, { credential_type: credentialTypeId }) + ), + CredentialsAPI.readOptions(), + ]); return { credentials: results, credentialCount: count, + relatedSearchableKeys: ( + actionsResponse?.data?.related_search_fields || [] + ).map(val => val.slice(0, -8)), + searchableKeys: Object.keys( + actionsResponse.data.actions?.GET || {} + ).filter(key => actionsResponse.data.actions?.GET[key].filterable), }; }, [credentialTypeId, history.location.search]), - { credentials: [], credentialCount: 0 } + { + credentials: [], + credentialCount: 0, + relatedSearchableKeys: [], + searchableKeys: [], + } ); useEffect(() => { @@ -84,6 +106,8 @@ function AdHocCredentialStep({ credentialTypeId, onEnableLaunch }) { header={t`Machine Credential`} readOnly qsConfig={QS_CONFIG} + relatedSearchableKeys={relatedSearchableKeys} + searchableKeys={searchableKeys} searchColumns={[ { name: t`Name`, diff --git a/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.test.jsx b/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.test.jsx index f0cc546241..9513632834 100644 --- a/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.test.jsx +++ b/awx/ui_next/src/components/AdHocCommands/AdHocCredentialStep.test.jsx @@ -23,6 +23,9 @@ describe('', () => { count: 2, }, }); + CredentialsAPI.readOptions.mockResolvedValue({ + data: { actions: { GET: {} } }, + }); await act(async () => { wrapper = mountWithContexts(