Plugins: Disable install controls for provisioned plugin in cloud (#90479)

This commit is contained in:
Hugo Kiyodi Oshiro 2024-07-24 08:36:15 +02:00 committed by GitHub
parent 8fd2245ce6
commit 5e3a5b355e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 11 additions and 1 deletions

View File

@ -34,7 +34,8 @@ export const PluginActions = ({ plugin }: Props) => {
? PluginStatus.UPDATE
: PluginStatus.UNINSTALL
: PluginStatus.INSTALL;
const isInstallControlsDisabled = plugin.isCore || plugin.isDisabled || !isInstallControlsEnabled();
const isInstallControlsDisabled =
plugin.isCore || plugin.isDisabled || plugin.isProvisioned || !isInstallControlsEnabled();
return (
<Stack direction="column">

View File

@ -81,6 +81,7 @@ export function mergeLocalsAndRemotes({
}
catalogPlugin.isUninstallingFromInstance = Boolean(localCounterpart) && !instancesMap.has(remotePlugin.slug);
catalogPlugin.isProvisioned = provisionedSet.has(remotePlugin.slug);
}
catalogPlugins.push(catalogPlugin);

View File

@ -355,6 +355,13 @@ describe('Plugin details page', () => {
expect(await queryByRole('button', { name: /(un)?install/i })).not.toBeInTheDocument();
});
it('should not display install / uninstall buttons for provisioned plugins', async () => {
const { queryByRole } = renderPluginDetails({ id, isProvisioned: true });
expect(await queryByRole('button', { name: /update/i })).not.toBeInTheDocument();
expect(await queryByRole('button', { name: /(un)?install/i })).not.toBeInTheDocument();
});
it('should display install link with `config.pluginAdminExternalManageEnabled` set to true', async () => {
config.pluginAdminExternalManageEnabled = true;

View File

@ -65,6 +65,7 @@ export interface CatalogPlugin extends WithAccessControlMetadata {
isUninstallingFromInstance?: boolean;
isUpdatingFromInstance?: boolean;
iam?: IdentityAccessManagement;
isProvisioned?: boolean;
}
export interface CatalogPluginDetails {