From 81efb64d0fd8f8e7646cdfa50975564ff7cb1111 Mon Sep 17 00:00:00 2001 From: YanJin Date: Mon, 6 May 2024 14:48:27 +0200 Subject: [PATCH] ARTESCA-12108: Disable the version toogle for Veeam bucket and adding a tooltip of explaination --- src/js/mock/S3Client.ts | 16 ++++++++++++++ .../databrowser/buckets/details/Overview.tsx | 22 ++++++++++++++++--- .../details/__tests__/Overview.test.tsx | 21 ++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/js/mock/S3Client.ts b/src/js/mock/S3Client.ts index 0aae044e9..ca91745e1 100644 --- a/src/js/mock/S3Client.ts +++ b/src/js/mock/S3Client.ts @@ -174,6 +174,22 @@ export const bucketInfoResponseVersioningDisabled: BucketInfo = { ObjectLockEnabled: 'Disabled', }, }; + +export const VeeamBucketWithObjectLockDisabled: BucketInfo = { + name: bucketName, + policy: false, + owner: ownerName, + aclGrantees: 0, + cors: false, + versioning: 'Disabled', + isVersioning: false, + public: false, + locationConstraint: '', + objectLockConfiguration: { + ObjectLockEnabled: 'Disabled', + }, +}; + export class MockS3Client implements S3ClientInterface { listBucketsWithLocation() { return Promise.resolve({ diff --git a/src/react/databrowser/buckets/details/Overview.tsx b/src/react/databrowser/buckets/details/Overview.tsx index 0982335ed..d8dd50c02 100644 --- a/src/react/databrowser/buckets/details/Overview.tsx +++ b/src/react/databrowser/buckets/details/Overview.tsx @@ -93,7 +93,13 @@ const workflowAttachedError = (count: number, bucketName: string) => ( ); -function VersionningValue({ bucketInfo }: { bucketInfo: BucketInfo }) { +function VersionningValue({ + bucketInfo, + isVeeamBucket, +}: { + bucketInfo: BucketInfo; + isVeeamBucket: boolean; +}) { const dispatch = useDispatch(); const accountsLocationsEndpointsAdapter = useAccountsLocationsEndpointsAdapter(); @@ -130,14 +136,21 @@ function VersionningValue({ bucketInfo }: { bucketInfo: BucketInfo }) { Enabling versioning is not possible due to the bucket being hosted on Google Cloud. + ) : isVeeamBucket ? ( + <> + Enabling versioning is not possible due to the bucket being + managed by Veeam. + ) : null } > Versioning - + Location diff --git a/src/react/databrowser/buckets/details/__tests__/Overview.test.tsx b/src/react/databrowser/buckets/details/__tests__/Overview.test.tsx index 9f54b4ef0..cebc8013b 100644 --- a/src/react/databrowser/buckets/details/__tests__/Overview.test.tsx +++ b/src/react/databrowser/buckets/details/__tests__/Overview.test.tsx @@ -9,6 +9,7 @@ import { import userEvent from '@testing-library/user-event'; import Immutable from 'immutable'; import { + VeeamBucketWithObjectLockDisabled, bucketInfoResponseNoVersioning, bucketInfoResponseObjectLockDefaultRetention, bucketInfoResponseObjectLockNoDefaultRetention, @@ -302,6 +303,7 @@ const selectors = { screen.getByRole('generic', { name: /indicate if object lock is enabled/i, }), + inactionVersioningToggle: () => screen.getByLabelText('versioningToggle'), }; describe('Overview', () => { @@ -411,4 +413,23 @@ describe('Overview', () => { expect(selectors.bucketTaggingErorToastQuery()).toBe(null); }); }); + + it('should disable the versioning toggle for Veeam bucket', async () => { + //Setup + server.use(mockGetBucketTagging(bucketName)); + //Exercise + render( + , + { + wrapper: NewWrapper('/', { + s3: { bucketInfo: VeeamBucketWithObjectLockDisabled }, + }), + }, + ); + //Verify + expect(selectors.inactionVersioningToggle()).toBeDisabled(); + }); });