@scality/data-browser-library 1.0.0-preview.9 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DataBrowserUI.d.ts +12 -0
- package/dist/components/DataBrowserUI.js +99 -0
- package/dist/components/Editor.d.ts +1 -1
- package/dist/components/Editor.js +3 -3
- package/dist/components/__tests__/BucketAccessor.test.js +214 -0
- package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
- package/dist/components/__tests__/BucketCreate.test.js +271 -105
- package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
- package/dist/components/__tests__/BucketDetails.test.js +421 -0
- package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
- package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
- package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
- package/dist/components/__tests__/BucketList.test.js +463 -239
- package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
- package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
- package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
- package/dist/components/__tests__/BucketOverview.test.js +281 -266
- package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
- package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
- package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
- package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
- package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
- package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
- package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
- package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
- package/dist/components/__tests__/MetadataSearch.test.js +65 -65
- package/dist/components/__tests__/ObjectList.test.js +741 -240
- package/dist/components/__tests__/UploadButton.test.js +45 -45
- package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
- package/dist/components/breadcrumb/Breadcrumb.js +37 -0
- package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
- package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
- package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
- package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
- package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
- package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
- package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
- package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
- package/dist/components/breadcrumb/index.d.ts +8 -0
- package/dist/components/breadcrumb/index.js +4 -0
- package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
- package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
- package/dist/components/buckets/BucketAccessor.d.ts +2 -0
- package/dist/components/buckets/BucketAccessor.js +125 -0
- package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
- package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
- package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
- package/dist/components/buckets/BucketCorsPage.js +234 -0
- package/dist/components/buckets/BucketCreate.d.ts +3 -2
- package/dist/components/buckets/BucketCreate.js +89 -47
- package/dist/components/buckets/BucketDetails.d.ts +42 -0
- package/dist/components/buckets/BucketDetails.js +249 -85
- package/dist/components/buckets/BucketLifecycleFormPage.js +206 -190
- package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
- package/dist/components/buckets/BucketLifecycleList.js +47 -47
- package/dist/components/buckets/BucketList.d.ts +7 -8
- package/dist/components/buckets/BucketList.js +158 -101
- package/dist/components/buckets/BucketLocation.js +4 -4
- package/dist/components/buckets/BucketOverview.d.ts +22 -2
- package/dist/components/buckets/BucketOverview.js +394 -187
- package/dist/components/buckets/BucketPage.js +43 -21
- package/dist/components/buckets/BucketPolicyPage.js +155 -127
- package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
- package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
- package/dist/components/buckets/BucketReplicationList.js +42 -42
- package/dist/components/buckets/BucketVersioning.d.ts +4 -0
- package/dist/components/buckets/BucketVersioning.js +76 -0
- package/dist/components/buckets/DeleteBucketButton.js +8 -8
- package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
- package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
- package/dist/components/buckets/EmptyBucketButton.js +24 -24
- package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
- package/dist/components/buckets/EmptyBucketSummary.js +1 -1
- package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
- package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
- package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
- package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
- package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
- package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
- package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
- package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
- package/dist/components/buckets/notifications/EventsSection.js +145 -29
- package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
- package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
- package/dist/components/buckets/notifications/events.d.ts +71 -7
- package/dist/components/buckets/notifications/events.js +98 -16
- package/dist/components/index.d.ts +27 -20
- package/dist/components/index.js +17 -10
- package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
- package/dist/components/layouts/ArrowNavigation.js +28 -0
- package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
- package/dist/components/layouts/BrowserPageLayout.js +10 -5
- package/dist/components/objects/CreateFolderButton.d.ts +2 -2
- package/dist/components/objects/CreateFolderButton.js +12 -12
- package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
- package/dist/components/objects/DeleteObjectButton.js +19 -21
- package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
- package/dist/components/objects/GetPresignedUrlButton.js +255 -0
- package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
- package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
- package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
- package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
- package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
- package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
- package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
- package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
- package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
- package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
- package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
- package/dist/components/objects/ObjectDetails/index.js +152 -40
- package/dist/components/objects/ObjectList.d.ts +12 -10
- package/dist/components/objects/ObjectList.js +590 -263
- package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
- package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
- package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
- package/dist/components/objects/ObjectPage.js +12 -8
- package/dist/components/objects/UploadButton.d.ts +3 -3
- package/dist/components/objects/UploadButton.js +10 -10
- package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
- package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
- package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
- package/dist/components/providers/DataBrowserProvider.js +60 -38
- package/dist/components/providers/QueryProvider.d.ts +9 -0
- package/dist/components/providers/QueryProvider.js +21 -0
- package/dist/components/search/MetadataSearch.js +29 -28
- package/dist/components/search/SearchHints.js +1 -1
- package/dist/components/ui/ArrayFieldActions.js +12 -7
- package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
- package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
- package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
- package/dist/components/ui/DeleteObjectModalContent.js +12 -12
- package/dist/components/ui/FilterFormSection.d.ts +2 -2
- package/dist/components/ui/FilterFormSection.js +29 -29
- package/dist/components/ui/Search.elements.d.ts +2 -2
- package/dist/components/ui/Search.elements.js +7 -7
- package/dist/components/ui/Table.elements.d.ts +2 -1
- package/dist/components/ui/Table.elements.js +18 -12
- package/dist/config/__tests__/factory.test.d.ts +1 -0
- package/dist/config/__tests__/factory.test.js +311 -0
- package/dist/config/factory.d.ts +10 -56
- package/dist/config/factory.js +23 -71
- package/dist/config/types.d.ts +212 -34
- package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
- package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
- package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
- package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
- package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
- package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
- package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
- package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
- package/dist/hooks/bucketConfiguration.d.ts +8 -1
- package/dist/hooks/bucketConfiguration.js +52 -51
- package/dist/hooks/bucketOperations.d.ts +10 -1
- package/dist/hooks/bucketOperations.js +10 -9
- package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
- package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
- package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
- package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
- package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
- package/dist/hooks/factories/index.d.ts +4 -4
- package/dist/hooks/factories/index.js +2 -2
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
- package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
- package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
- package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
- package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
- package/dist/hooks/index.d.ts +19 -12
- package/dist/hooks/index.js +16 -9
- package/dist/hooks/loginOperations.d.ts +1 -1
- package/dist/hooks/loginOperations.js +1 -1
- package/dist/hooks/objectOperations.d.ts +2 -2
- package/dist/hooks/objectOperations.js +50 -49
- package/dist/hooks/presignedOperations.d.ts +4 -4
- package/dist/hooks/presignedOperations.js +5 -5
- package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
- package/dist/hooks/useAccessibleBuckets.js +115 -0
- package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
- package/dist/hooks/useBatchObjectLegalHold.js +48 -0
- package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
- package/dist/hooks/useBucketConfigEditor.js +82 -0
- package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
- package/dist/hooks/useDataBrowserNavigate.js +24 -0
- package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
- package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
- package/dist/hooks/useEmptyBucket.js +11 -11
- package/dist/hooks/useFeatures.d.ts +7 -0
- package/dist/hooks/useFeatures.js +8 -0
- package/dist/hooks/useISVBucketDetection.js +6 -6
- package/dist/hooks/useIsBucketEmpty.js +4 -4
- package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
- package/dist/hooks/useLimitedAccessFlow.js +23 -0
- package/dist/hooks/useS3Client.d.ts +6 -0
- package/dist/hooks/useS3Client.js +3 -2
- package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
- package/dist/hooks/useS3ConfigSwitch.js +37 -0
- package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
- package/dist/hooks/useSupportedNotificationEvents.js +8 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +2 -2
- package/dist/schemas/bucketPolicySchema.json +3 -13
- package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
- package/dist/test/msw/handlers/deleteBucket.js +20 -10
- package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketAcl.js +29 -17
- package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketLocation.js +29 -15
- package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
- package/dist/test/msw/handlers/headObject.d.ts +1 -1
- package/dist/test/msw/handlers/headObject.js +31 -13
- package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
- package/dist/test/msw/handlers/listBuckets.js +5 -3
- package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
- package/dist/test/msw/handlers/listObjectVersions.js +38 -26
- package/dist/test/msw/handlers/listObjects.d.ts +1 -1
- package/dist/test/msw/handlers/listObjects.js +35 -23
- package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
- package/dist/test/msw/handlers/objectLegalHold.js +32 -17
- package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
- package/dist/test/msw/handlers/objectRetention.js +31 -17
- package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
- package/dist/test/msw/handlers/putBucketAcl.js +29 -14
- package/dist/test/msw/handlers/putObject.d.ts +1 -1
- package/dist/test/msw/handlers/putObject.js +27 -12
- package/dist/test/msw/handlers.d.ts +3 -3
- package/dist/test/msw/handlers.js +77 -54
- package/dist/test/msw/index.d.ts +2 -2
- package/dist/test/msw/index.js +1 -1
- package/dist/test/msw/server.d.ts +1 -1
- package/dist/test/msw/server.js +1 -1
- package/dist/test/msw/utils.js +2 -2
- package/dist/test/setup.d.ts +1 -1
- package/dist/test/setup.js +13 -30
- package/dist/test/testUtils.d.ts +85 -33
- package/dist/test/testUtils.js +176 -111
- package/dist/test/utils/errorHandling.test.js +119 -119
- package/dist/types/index.d.ts +49 -36
- package/dist/types/monaco.d.ts +13 -0
- package/dist/types/monaco.js +0 -0
- package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
- package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
- package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
- package/dist/utils/__tests__/s3Client.test.js +340 -0
- package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
- package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
- package/dist/utils/constants.d.ts +10 -0
- package/dist/utils/constants.js +19 -9
- package/dist/utils/deletion/index.d.ts +2 -2
- package/dist/utils/deletion/index.js +1 -1
- package/dist/utils/deletion/messages.d.ts +1 -1
- package/dist/utils/deletion/messages.js +4 -4
- package/dist/utils/errorHandling.d.ts +3 -3
- package/dist/utils/errorHandling.js +6 -6
- package/dist/utils/hooks.js +8 -8
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.js +4 -2
- package/dist/utils/proxyMiddleware.d.ts +32 -13
- package/dist/utils/proxyMiddleware.js +90 -36
- package/dist/utils/s3Client.d.ts +14 -4
- package/dist/utils/s3Client.js +5 -26
- package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
- package/dist/utils/s3ConfigIdentifier.js +57 -0
- package/dist/utils/s3RuleUtils.d.ts +5 -5
- package/dist/utils/s3RuleUtils.js +17 -17
- package/package.json +10 -8
- package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
- package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
- package/dist/hooks/useLoginMutation.d.ts +0 -21
- package/dist/hooks/useLoginMutation.js +0 -9
- package/dist/utils/useFeatures.d.ts +0 -1
- package/dist/utils/useFeatures.js +0 -7
- /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { renderHook, waitFor } from "@testing-library/react";
|
|
2
|
-
import {
|
|
3
|
-
import { createS3Client } from "../../../utils/s3Client.js";
|
|
2
|
+
import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
|
|
4
3
|
import { createS3OperationError } from "../../../utils/errorHandling.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
jest.mock(
|
|
4
|
+
import { createS3Client } from "../../../utils/s3Client.js";
|
|
5
|
+
import { useCreateS3LoginHook } from "../useCreateS3LoginHook.js";
|
|
6
|
+
jest.mock('../../../utils/s3Client');
|
|
7
|
+
jest.mock('../../../utils/errorHandling');
|
|
8
8
|
const mockCreateS3Client = createS3Client;
|
|
9
9
|
const mockCreateS3OperationError = createS3OperationError;
|
|
10
10
|
class MockLoginCommand {
|
|
@@ -16,33 +16,33 @@ class MockLoginCommand {
|
|
|
16
16
|
const mockS3Client = {
|
|
17
17
|
send: jest.fn()
|
|
18
18
|
};
|
|
19
|
-
describe(
|
|
19
|
+
describe('useCreateS3LoginHook - Login Factory Specific', ()=>{
|
|
20
20
|
const mockLoginConfig = {
|
|
21
|
-
endpoint:
|
|
22
|
-
region:
|
|
21
|
+
endpoint: 'https://s3.amazonaws.com',
|
|
22
|
+
region: 'us-east-1',
|
|
23
23
|
forcePathStyle: false,
|
|
24
24
|
credentials: {
|
|
25
|
-
accessKeyId:
|
|
26
|
-
secretAccessKey:
|
|
25
|
+
accessKeyId: 'test-access-key',
|
|
26
|
+
secretAccessKey: 'test-secret-key'
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
beforeEach(()=>{
|
|
30
30
|
jest.clearAllMocks();
|
|
31
31
|
mockCreateS3Client.mockReturnValue(mockS3Client);
|
|
32
32
|
});
|
|
33
|
-
it(
|
|
34
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
35
|
-
validateFactoryHook(useLoginMutation,
|
|
33
|
+
it('should create a functioning login mutation hook', ()=>{
|
|
34
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
35
|
+
validateFactoryHook(useLoginMutation, 'S3 Authentication');
|
|
36
36
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
37
|
-
wrapper:
|
|
37
|
+
wrapper: createTestWrapper()
|
|
38
38
|
});
|
|
39
|
-
validateHookResult(result.current,
|
|
39
|
+
validateHookResult(result.current, 'mutation');
|
|
40
40
|
});
|
|
41
|
-
it(
|
|
41
|
+
it('should authenticate successfully with valid credentials', async ()=>{
|
|
42
42
|
mockS3Client.send.mockResolvedValueOnce({});
|
|
43
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
43
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
44
44
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
45
|
-
wrapper:
|
|
45
|
+
wrapper: createTestWrapper()
|
|
46
46
|
});
|
|
47
47
|
result.current.mutate(mockLoginConfig);
|
|
48
48
|
await waitFor(()=>{
|
|
@@ -54,27 +54,27 @@ describe("useCreateS3LoginHook - Login Factory Specific", ()=>{
|
|
|
54
54
|
});
|
|
55
55
|
expect(mockCreateS3Client).toHaveBeenCalledWith(mockLoginConfig);
|
|
56
56
|
});
|
|
57
|
-
it(
|
|
58
|
-
const mockError = new Error(
|
|
59
|
-
const enhancedError = new Error(
|
|
57
|
+
it('should handle authentication failure', async ()=>{
|
|
58
|
+
const mockError = new Error('Access Denied');
|
|
59
|
+
const enhancedError = new Error('Enhanced S3 Authentication Error');
|
|
60
60
|
mockS3Client.send.mockRejectedValueOnce(mockError);
|
|
61
61
|
mockCreateS3OperationError.mockReturnValueOnce(enhancedError);
|
|
62
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
62
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
63
63
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
64
|
-
wrapper:
|
|
64
|
+
wrapper: createTestWrapper()
|
|
65
65
|
});
|
|
66
66
|
result.current.mutate(mockLoginConfig);
|
|
67
67
|
await waitFor(()=>{
|
|
68
68
|
expect(result.current.isError).toBe(true);
|
|
69
69
|
});
|
|
70
70
|
expect(result.current.error).toBe(enhancedError);
|
|
71
|
-
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError,
|
|
71
|
+
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'S3 Authentication');
|
|
72
72
|
});
|
|
73
|
-
it(
|
|
73
|
+
it('should create its own S3 client instead of using context client', async ()=>{
|
|
74
74
|
mockS3Client.send.mockResolvedValueOnce({});
|
|
75
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
75
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
76
76
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
77
|
-
wrapper:
|
|
77
|
+
wrapper: createTestWrapper()
|
|
78
78
|
});
|
|
79
79
|
result.current.mutate(mockLoginConfig);
|
|
80
80
|
await waitFor(()=>{
|
|
@@ -83,18 +83,18 @@ describe("useCreateS3LoginHook - Login Factory Specific", ()=>{
|
|
|
83
83
|
expect(mockCreateS3Client).toHaveBeenCalledWith(mockLoginConfig);
|
|
84
84
|
expect(mockCreateS3Client).toHaveBeenCalledTimes(1);
|
|
85
85
|
});
|
|
86
|
-
it(
|
|
86
|
+
it('should handle mutation callbacks correctly', async ()=>{
|
|
87
87
|
const onSuccess = jest.fn();
|
|
88
88
|
const onError = jest.fn();
|
|
89
89
|
const onSettled = jest.fn();
|
|
90
90
|
mockS3Client.send.mockResolvedValueOnce({});
|
|
91
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
91
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
92
92
|
const { result } = renderHook(()=>useLoginMutation({
|
|
93
93
|
onSuccess,
|
|
94
94
|
onError,
|
|
95
95
|
onSettled
|
|
96
96
|
}), {
|
|
97
|
-
wrapper:
|
|
97
|
+
wrapper: createTestWrapper()
|
|
98
98
|
});
|
|
99
99
|
result.current.mutate(mockLoginConfig);
|
|
100
100
|
await waitFor(()=>{
|
|
@@ -108,34 +108,34 @@ describe("useCreateS3LoginHook - Login Factory Specific", ()=>{
|
|
|
108
108
|
expect(onError).not.toHaveBeenCalled();
|
|
109
109
|
expect(onSettled).toHaveBeenCalledWith(expectedResult, null, mockLoginConfig, void 0, expect.any(Object));
|
|
110
110
|
});
|
|
111
|
-
it(
|
|
112
|
-
const networkError = new Error(
|
|
113
|
-
const enhancedError = new Error(
|
|
111
|
+
it('should handle network errors during authentication', async ()=>{
|
|
112
|
+
const networkError = new Error('Network timeout');
|
|
113
|
+
const enhancedError = new Error('Enhanced Network Error');
|
|
114
114
|
mockS3Client.send.mockRejectedValueOnce(networkError);
|
|
115
115
|
mockCreateS3OperationError.mockReturnValueOnce(enhancedError);
|
|
116
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
116
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
117
117
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
118
|
-
wrapper:
|
|
118
|
+
wrapper: createTestWrapper()
|
|
119
119
|
});
|
|
120
120
|
result.current.mutate(mockLoginConfig);
|
|
121
121
|
await waitFor(()=>{
|
|
122
122
|
expect(result.current.isError).toBe(true);
|
|
123
123
|
});
|
|
124
124
|
expect(result.current.error).toBe(enhancedError);
|
|
125
|
-
expect(mockCreateS3OperationError).toHaveBeenCalledWith(networkError,
|
|
125
|
+
expect(mockCreateS3OperationError).toHaveBeenCalledWith(networkError, 'S3 Authentication');
|
|
126
126
|
});
|
|
127
|
-
it(
|
|
127
|
+
it('should work with credentials containing session token', async ()=>{
|
|
128
128
|
const configWithToken = {
|
|
129
129
|
...mockLoginConfig,
|
|
130
130
|
credentials: {
|
|
131
131
|
...mockLoginConfig.credentials,
|
|
132
|
-
sessionToken:
|
|
132
|
+
sessionToken: 'test-session-token'
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
135
|
mockS3Client.send.mockResolvedValueOnce({});
|
|
136
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
136
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
137
137
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
138
|
-
wrapper:
|
|
138
|
+
wrapper: createTestWrapper()
|
|
139
139
|
});
|
|
140
140
|
result.current.mutate(configWithToken);
|
|
141
141
|
await waitFor(()=>{
|
|
@@ -147,15 +147,15 @@ describe("useCreateS3LoginHook - Login Factory Specific", ()=>{
|
|
|
147
147
|
authenticated: true
|
|
148
148
|
});
|
|
149
149
|
});
|
|
150
|
-
it(
|
|
150
|
+
it('should handle custom endpoint configurations', async ()=>{
|
|
151
151
|
const customEndpointConfig = {
|
|
152
152
|
...mockLoginConfig,
|
|
153
|
-
endpoint:
|
|
153
|
+
endpoint: 'https://custom-s3.example.com'
|
|
154
154
|
};
|
|
155
155
|
mockS3Client.send.mockResolvedValueOnce({});
|
|
156
|
-
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand,
|
|
156
|
+
const useLoginMutation = useCreateS3LoginHook(MockLoginCommand, 'S3 Authentication');
|
|
157
157
|
const { result } = renderHook(()=>useLoginMutation(), {
|
|
158
|
-
wrapper:
|
|
158
|
+
wrapper: createTestWrapper()
|
|
159
159
|
});
|
|
160
160
|
result.current.mutate(customEndpointConfig);
|
|
161
161
|
await waitFor(()=>{
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { renderHook, waitFor } from "@testing-library/react";
|
|
2
|
-
import {
|
|
3
|
-
import { useS3Client } from "../../useS3Client.js";
|
|
2
|
+
import { createTestWrapper, validateFactoryHook, validateHookResult } from "../../../test/testUtils.js";
|
|
4
3
|
import { createS3OperationError } from "../../../utils/errorHandling.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
jest.mock(
|
|
4
|
+
import { useS3Client } from "../../useS3Client.js";
|
|
5
|
+
import { useCreateS3MutationHook } from "../useCreateS3MutationHook.js";
|
|
6
|
+
jest.mock('../../useS3Client');
|
|
7
|
+
jest.mock('../../../utils/errorHandling');
|
|
8
8
|
const mockUseS3Client = useS3Client;
|
|
9
9
|
const mockCreateS3OperationError = createS3OperationError;
|
|
10
10
|
class MockCommand {
|
|
@@ -16,44 +16,44 @@ class MockCommand {
|
|
|
16
16
|
const mockS3Client = {
|
|
17
17
|
send: jest.fn()
|
|
18
18
|
};
|
|
19
|
-
describe(
|
|
19
|
+
describe('useCreateS3MutationHook - Factory Specific', ()=>{
|
|
20
20
|
beforeEach(()=>{
|
|
21
21
|
jest.clearAllMocks();
|
|
22
22
|
mockUseS3Client.mockReturnValue(mockS3Client);
|
|
23
23
|
});
|
|
24
|
-
it(
|
|
25
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
26
|
-
validateFactoryHook(useMutation,
|
|
24
|
+
it('should create a functioning mutation hook', ()=>{
|
|
25
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation');
|
|
26
|
+
validateFactoryHook(useMutation, 'testMutation');
|
|
27
27
|
const { result } = renderHook(()=>useMutation(), {
|
|
28
|
-
wrapper:
|
|
28
|
+
wrapper: createTestWrapper()
|
|
29
29
|
});
|
|
30
|
-
validateHookResult(result.current,
|
|
30
|
+
validateHookResult(result.current, 'mutation');
|
|
31
31
|
});
|
|
32
|
-
it(
|
|
33
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
it('should accept invalidation keys parameter', ()=>{
|
|
33
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'testMutation', [
|
|
34
|
+
'ListObjects',
|
|
35
|
+
'TestQuery'
|
|
36
36
|
]);
|
|
37
|
-
validateFactoryHook(useMutation,
|
|
37
|
+
validateFactoryHook(useMutation, 'testMutation');
|
|
38
38
|
const { result } = renderHook(()=>useMutation(), {
|
|
39
|
-
wrapper:
|
|
39
|
+
wrapper: createTestWrapper()
|
|
40
40
|
});
|
|
41
|
-
validateHookResult(result.current,
|
|
41
|
+
validateHookResult(result.current, 'mutation');
|
|
42
42
|
});
|
|
43
|
-
it(
|
|
43
|
+
it('should execute mutation successfully', async ()=>{
|
|
44
44
|
const mockResponse = {
|
|
45
45
|
success: true,
|
|
46
|
-
key:
|
|
46
|
+
key: 'uploaded-file.txt'
|
|
47
47
|
};
|
|
48
48
|
mockS3Client.send.mockResolvedValue(mockResponse);
|
|
49
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
49
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
|
|
50
50
|
const { result } = renderHook(()=>useMutation(), {
|
|
51
|
-
wrapper:
|
|
51
|
+
wrapper: createTestWrapper()
|
|
52
52
|
});
|
|
53
53
|
result.current.mutate({
|
|
54
|
-
Bucket:
|
|
55
|
-
Key:
|
|
56
|
-
Body:
|
|
54
|
+
Bucket: 'test-bucket',
|
|
55
|
+
Key: 'test-file.txt',
|
|
56
|
+
Body: 'content'
|
|
57
57
|
});
|
|
58
58
|
await waitFor(()=>{
|
|
59
59
|
expect(result.current.isSuccess).toBe(true);
|
|
@@ -61,32 +61,32 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
61
61
|
expect(result.current.data).toEqual(mockResponse);
|
|
62
62
|
expect(mockS3Client.send).toHaveBeenCalledWith(expect.objectContaining({
|
|
63
63
|
input: {
|
|
64
|
-
Bucket:
|
|
65
|
-
Key:
|
|
66
|
-
Body:
|
|
64
|
+
Bucket: 'test-bucket',
|
|
65
|
+
Key: 'test-file.txt',
|
|
66
|
+
Body: 'content'
|
|
67
67
|
}
|
|
68
68
|
}));
|
|
69
69
|
});
|
|
70
|
-
it(
|
|
71
|
-
const mockError = new Error(
|
|
72
|
-
const enhancedError = new Error(
|
|
70
|
+
it('should handle mutation errors with proper context', async ()=>{
|
|
71
|
+
const mockError = new Error('Access Denied');
|
|
72
|
+
const enhancedError = new Error('Enhanced Access Denied');
|
|
73
73
|
mockS3Client.send.mockRejectedValue(mockError);
|
|
74
74
|
mockCreateS3OperationError.mockReturnValue(enhancedError);
|
|
75
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
75
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
|
|
76
76
|
const { result } = renderHook(()=>useMutation(), {
|
|
77
|
-
wrapper:
|
|
77
|
+
wrapper: createTestWrapper()
|
|
78
78
|
});
|
|
79
79
|
result.current.mutate({
|
|
80
|
-
Bucket:
|
|
81
|
-
Key:
|
|
80
|
+
Bucket: 'test-bucket',
|
|
81
|
+
Key: 'test-file.txt'
|
|
82
82
|
});
|
|
83
83
|
await waitFor(()=>{
|
|
84
84
|
expect(result.current.isError).toBe(true);
|
|
85
85
|
});
|
|
86
86
|
expect(result.current.error).toBe(enhancedError);
|
|
87
|
-
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError,
|
|
87
|
+
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'PutObject', 'test-bucket');
|
|
88
88
|
});
|
|
89
|
-
it(
|
|
89
|
+
it('should handle mutation callbacks correctly', async ()=>{
|
|
90
90
|
const mockResponse = {
|
|
91
91
|
success: true
|
|
92
92
|
};
|
|
@@ -94,17 +94,17 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
94
94
|
const onError = jest.fn();
|
|
95
95
|
const onSettled = jest.fn();
|
|
96
96
|
mockS3Client.send.mockResolvedValue(mockResponse);
|
|
97
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
97
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
|
|
98
98
|
const { result } = renderHook(()=>useMutation({
|
|
99
99
|
onSuccess,
|
|
100
100
|
onError,
|
|
101
101
|
onSettled
|
|
102
102
|
}), {
|
|
103
|
-
wrapper:
|
|
103
|
+
wrapper: createTestWrapper()
|
|
104
104
|
});
|
|
105
105
|
const variables = {
|
|
106
|
-
Bucket:
|
|
107
|
-
Key:
|
|
106
|
+
Bucket: 'test-bucket',
|
|
107
|
+
Key: 'test-file.txt'
|
|
108
108
|
};
|
|
109
109
|
result.current.mutate(variables);
|
|
110
110
|
await waitFor(()=>{
|
|
@@ -114,28 +114,28 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
114
114
|
expect(onError).not.toHaveBeenCalled();
|
|
115
115
|
expect(onSettled).toHaveBeenCalledWith(mockResponse, null, variables, void 0, expect.any(Object));
|
|
116
116
|
});
|
|
117
|
-
it(
|
|
117
|
+
it('should handle mutation with invalidation keys', async ()=>{
|
|
118
118
|
const mockResponse = {
|
|
119
119
|
success: true
|
|
120
120
|
};
|
|
121
121
|
mockS3Client.send.mockResolvedValue(mockResponse);
|
|
122
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject', [
|
|
123
|
+
'ListObjects',
|
|
124
|
+
'TestQuery'
|
|
125
125
|
]);
|
|
126
126
|
const { result } = renderHook(()=>useMutation(), {
|
|
127
|
-
wrapper:
|
|
127
|
+
wrapper: createTestWrapper()
|
|
128
128
|
});
|
|
129
129
|
result.current.mutate({
|
|
130
|
-
Bucket:
|
|
131
|
-
Key:
|
|
130
|
+
Bucket: 'test-bucket',
|
|
131
|
+
Key: 'test-file.txt'
|
|
132
132
|
});
|
|
133
133
|
await waitFor(()=>{
|
|
134
134
|
expect(result.current.isSuccess).toBe(true);
|
|
135
135
|
});
|
|
136
136
|
expect(result.current.data).toEqual(mockResponse);
|
|
137
137
|
});
|
|
138
|
-
it(
|
|
138
|
+
it('should handle concurrent mutations correctly', async ()=>{
|
|
139
139
|
const mockResponse1 = {
|
|
140
140
|
success: true,
|
|
141
141
|
id: 1
|
|
@@ -149,20 +149,20 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
149
149
|
callCount++;
|
|
150
150
|
return Promise.resolve(1 === callCount ? mockResponse1 : mockResponse2);
|
|
151
151
|
});
|
|
152
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
152
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
|
|
153
153
|
const { result: result1 } = renderHook(()=>useMutation(), {
|
|
154
|
-
wrapper:
|
|
154
|
+
wrapper: createTestWrapper()
|
|
155
155
|
});
|
|
156
156
|
const { result: result2 } = renderHook(()=>useMutation(), {
|
|
157
|
-
wrapper:
|
|
157
|
+
wrapper: createTestWrapper()
|
|
158
158
|
});
|
|
159
159
|
result1.current.mutate({
|
|
160
|
-
Bucket:
|
|
161
|
-
Key:
|
|
160
|
+
Bucket: 'test-bucket',
|
|
161
|
+
Key: 'file1.txt'
|
|
162
162
|
});
|
|
163
163
|
result2.current.mutate({
|
|
164
|
-
Bucket:
|
|
165
|
-
Key:
|
|
164
|
+
Bucket: 'test-bucket',
|
|
165
|
+
Key: 'file2.txt'
|
|
166
166
|
});
|
|
167
167
|
await waitFor(()=>{
|
|
168
168
|
expect(result1.current.isSuccess).toBe(true);
|
|
@@ -172,7 +172,7 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
172
172
|
expect(result2.current.data).toEqual(mockResponse2);
|
|
173
173
|
expect(mockS3Client.send).toHaveBeenCalledTimes(2);
|
|
174
174
|
});
|
|
175
|
-
it(
|
|
175
|
+
it('should pass command correctly for mutations', async ()=>{
|
|
176
176
|
let capturedCommand;
|
|
177
177
|
mockS3Client.send.mockImplementation((command)=>{
|
|
178
178
|
capturedCommand = command;
|
|
@@ -180,21 +180,21 @@ describe("useCreateS3MutationHook - Factory Specific", ()=>{
|
|
|
180
180
|
success: true
|
|
181
181
|
});
|
|
182
182
|
});
|
|
183
|
-
const useMutation = useCreateS3MutationHook(MockCommand,
|
|
183
|
+
const useMutation = useCreateS3MutationHook(MockCommand, 'PutObject');
|
|
184
184
|
const { result } = renderHook(()=>useMutation(), {
|
|
185
|
-
wrapper:
|
|
185
|
+
wrapper: createTestWrapper()
|
|
186
186
|
});
|
|
187
187
|
result.current.mutate({
|
|
188
|
-
Bucket:
|
|
189
|
-
Key:
|
|
188
|
+
Bucket: 'test-bucket',
|
|
189
|
+
Key: 'test-file.txt'
|
|
190
190
|
});
|
|
191
191
|
await waitFor(()=>{
|
|
192
192
|
expect(result.current.isSuccess).toBe(true);
|
|
193
193
|
});
|
|
194
194
|
expect(capturedCommand).toBeInstanceOf(MockCommand);
|
|
195
195
|
expect(capturedCommand.input).toEqual({
|
|
196
|
-
Bucket:
|
|
197
|
-
Key:
|
|
196
|
+
Bucket: 'test-bucket',
|
|
197
|
+
Key: 'test-file.txt'
|
|
198
198
|
});
|
|
199
199
|
});
|
|
200
200
|
});
|