@scality/data-browser-library 1.0.0-preview.8 → 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.d.ts +1 -0
- package/dist/components/__tests__/BucketCreate.test.js +574 -0
- 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 +14 -0
- package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
- package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
- package/dist/components/__tests__/BucketList.test.js +495 -81
- 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 +484 -179
- package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
- package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +16 -0
- package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
- package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
- package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
- package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
- package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
- package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
- package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
- package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
- 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 +50 -0
- package/dist/components/buckets/BucketCreate.js +279 -0
- package/dist/components/buckets/BucketDetails.d.ts +42 -0
- package/dist/components/buckets/BucketDetails.js +256 -40
- package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
- package/dist/components/buckets/BucketLifecycleFormPage.js +1086 -0
- package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
- package/dist/components/buckets/BucketLifecycleList.js +270 -0
- package/dist/components/buckets/BucketList.d.ts +6 -4
- package/dist/components/buckets/BucketList.js +161 -94
- package/dist/components/buckets/BucketLocation.js +4 -4
- package/dist/components/buckets/BucketOverview.d.ts +86 -5
- package/dist/components/buckets/BucketOverview.js +481 -192
- package/dist/components/buckets/BucketPage.js +44 -22
- package/dist/components/buckets/BucketPolicyPage.js +155 -127
- package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
- package/dist/components/buckets/BucketReplicationFormPage.js +835 -0
- package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
- package/dist/components/buckets/BucketReplicationList.js +189 -0
- 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 +18 -0
- package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
- package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
- package/dist/components/buckets/EmptyBucketButton.js +232 -0
- package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
- package/dist/components/buckets/EmptyBucketSummary.js +60 -0
- package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
- package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
- 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 -13
- package/dist/components/index.js +20 -6
- 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.d.ts +4 -0
- package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettings.js +159 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
- 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.d.ts +36 -0
- package/dist/components/ui/ArrayFieldActions.js +43 -0
- package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
- package/dist/components/ui/ConfirmDeleteRuleModal.js +48 -0
- package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
- package/dist/components/ui/DeleteObjectModalContent.js +12 -12
- package/dist/components/ui/FilterFormSection.d.ts +44 -0
- package/dist/components/ui/FilterFormSection.js +159 -0
- 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 +14 -49
- package/dist/config/factory.js +23 -68
- 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.d.ts +1 -0
- package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
- 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 +95 -52
- 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 +29 -3
- package/dist/hooks/index.d.ts +19 -8
- package/dist/hooks/index.js +16 -5
- 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 +26 -0
- package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
- package/dist/hooks/useEmptyBucket.d.ts +27 -0
- package/dist/hooks/useEmptyBucket.js +116 -0
- package/dist/hooks/useFeatures.d.ts +7 -0
- package/dist/hooks/useFeatures.js +8 -0
- package/dist/hooks/useISVBucketDetection.d.ts +15 -0
- package/dist/hooks/useISVBucketDetection.js +27 -0
- 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/hooks/useTableRowSelection.d.ts +9 -0
- package/dist/hooks/useTableRowSelection.js +45 -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 +170 -36
- package/dist/test/testUtils.js +229 -116
- package/dist/test/utils/errorHandling.test.js +146 -108
- 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 +22 -0
- package/dist/utils/constants.js +19 -0
- 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 +12 -3
- package/dist/utils/errorHandling.js +12 -7
- package/dist/utils/hooks.js +8 -8
- package/dist/utils/index.d.ts +5 -2
- package/dist/utils/index.js +5 -1
- 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 +53 -0
- package/dist/utils/s3RuleUtils.js +101 -0
- 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 { 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 { useCreateS3InfiniteQueryHook } from "../useCreateS3InfiniteQueryHook.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,82 +16,82 @@ class MockCommand {
|
|
|
16
16
|
const mockS3Client = {
|
|
17
17
|
send: jest.fn()
|
|
18
18
|
};
|
|
19
|
-
describe(
|
|
19
|
+
describe('useCreateS3InfiniteQueryHook - Pagination Logic', ()=>{
|
|
20
20
|
beforeEach(()=>{
|
|
21
21
|
jest.clearAllMocks();
|
|
22
22
|
mockUseS3Client.mockReturnValue(mockS3Client);
|
|
23
23
|
});
|
|
24
|
-
it(
|
|
25
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
26
|
-
validateFactoryHook(useInfiniteQuery,
|
|
24
|
+
it('should create a functioning infinite query hook', ()=>{
|
|
25
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
26
|
+
validateFactoryHook(useInfiniteQuery, 'ListObjects');
|
|
27
27
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
28
|
-
Bucket:
|
|
28
|
+
Bucket: 'test-bucket'
|
|
29
29
|
}), {
|
|
30
|
-
wrapper:
|
|
30
|
+
wrapper: createTestWrapper()
|
|
31
31
|
});
|
|
32
|
-
validateHookResult(result.current,
|
|
32
|
+
validateHookResult(result.current, 'infiniteQuery');
|
|
33
33
|
});
|
|
34
|
-
it(
|
|
34
|
+
it('should handle getPaginationParams for different operations', async ()=>{
|
|
35
35
|
const mockResponse = {
|
|
36
36
|
IsTruncated: false
|
|
37
37
|
};
|
|
38
38
|
mockS3Client.send.mockResolvedValue(mockResponse);
|
|
39
|
-
const useListObjects = useCreateS3InfiniteQueryHook(MockCommand,
|
|
39
|
+
const useListObjects = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
40
40
|
const { result: listResult } = renderHook(()=>useListObjects({
|
|
41
|
-
Bucket:
|
|
41
|
+
Bucket: 'test-bucket'
|
|
42
42
|
}), {
|
|
43
|
-
wrapper:
|
|
43
|
+
wrapper: createTestWrapper()
|
|
44
44
|
});
|
|
45
|
-
const useListVersions = useCreateS3InfiniteQueryHook(MockCommand,
|
|
45
|
+
const useListVersions = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjectVersions');
|
|
46
46
|
const { result: versionsResult } = renderHook(()=>useListVersions({
|
|
47
|
-
Bucket:
|
|
47
|
+
Bucket: 'test-bucket'
|
|
48
48
|
}), {
|
|
49
|
-
wrapper:
|
|
49
|
+
wrapper: createTestWrapper()
|
|
50
50
|
});
|
|
51
51
|
await waitFor(()=>{
|
|
52
|
-
expect(listResult.current.fetchStatus).not.toBe(
|
|
53
|
-
expect(versionsResult.current.fetchStatus).not.toBe(
|
|
52
|
+
expect(listResult.current.fetchStatus).not.toBe('idle');
|
|
53
|
+
expect(versionsResult.current.fetchStatus).not.toBe('idle');
|
|
54
54
|
});
|
|
55
|
-
expect(typeof listResult.current.fetchNextPage).toBe(
|
|
56
|
-
expect(typeof versionsResult.current.fetchNextPage).toBe(
|
|
55
|
+
expect(typeof listResult.current.fetchNextPage).toBe('function');
|
|
56
|
+
expect(typeof versionsResult.current.fetchNextPage).toBe('function');
|
|
57
57
|
});
|
|
58
|
-
it(
|
|
59
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
58
|
+
it('should handle Prefix parameter in enabled logic correctly', ()=>{
|
|
59
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
60
60
|
const { result: undefinedResult } = renderHook(()=>useInfiniteQuery({
|
|
61
|
-
Bucket:
|
|
61
|
+
Bucket: 'test-bucket',
|
|
62
62
|
Prefix: void 0
|
|
63
63
|
}), {
|
|
64
|
-
wrapper:
|
|
64
|
+
wrapper: createTestWrapper()
|
|
65
65
|
});
|
|
66
|
-
expect(undefinedResult.current.fetchStatus).toBe(
|
|
66
|
+
expect(undefinedResult.current.fetchStatus).toBe('idle');
|
|
67
67
|
const { result: definedResult } = renderHook(()=>useInfiniteQuery({
|
|
68
|
-
Bucket:
|
|
69
|
-
Prefix:
|
|
68
|
+
Bucket: 'test-bucket',
|
|
69
|
+
Prefix: 'folder/'
|
|
70
70
|
}), {
|
|
71
|
-
wrapper:
|
|
71
|
+
wrapper: createTestWrapper()
|
|
72
72
|
});
|
|
73
|
-
expect(definedResult.current.fetchStatus).not.toBe(
|
|
73
|
+
expect(definedResult.current.fetchStatus).not.toBe('idle');
|
|
74
74
|
});
|
|
75
|
-
it(
|
|
75
|
+
it('should handle pagination data correctly', async ()=>{
|
|
76
76
|
const mockFirstPage = {
|
|
77
77
|
Contents: [
|
|
78
78
|
{
|
|
79
|
-
Key:
|
|
79
|
+
Key: 'file1.txt'
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
|
-
Key:
|
|
82
|
+
Key: 'file2.txt'
|
|
83
83
|
}
|
|
84
84
|
],
|
|
85
85
|
IsTruncated: true,
|
|
86
|
-
NextContinuationToken:
|
|
86
|
+
NextContinuationToken: 'token123'
|
|
87
87
|
};
|
|
88
88
|
const mockSecondPage = {
|
|
89
89
|
Contents: [
|
|
90
90
|
{
|
|
91
|
-
Key:
|
|
91
|
+
Key: 'file3.txt'
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
|
-
Key:
|
|
94
|
+
Key: 'file4.txt'
|
|
95
95
|
}
|
|
96
96
|
],
|
|
97
97
|
IsTruncated: false
|
|
@@ -101,11 +101,11 @@ describe("useCreateS3InfiniteQueryHook - Pagination Logic", ()=>{
|
|
|
101
101
|
callCount++;
|
|
102
102
|
return Promise.resolve(1 === callCount ? mockFirstPage : mockSecondPage);
|
|
103
103
|
});
|
|
104
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
104
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
105
105
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
106
|
-
Bucket:
|
|
106
|
+
Bucket: 'test-bucket'
|
|
107
107
|
}), {
|
|
108
|
-
wrapper:
|
|
108
|
+
wrapper: createTestWrapper()
|
|
109
109
|
});
|
|
110
110
|
await waitFor(()=>{
|
|
111
111
|
expect(result.current.isSuccess).toBe(true);
|
|
@@ -123,30 +123,30 @@ describe("useCreateS3InfiniteQueryHook - Pagination Logic", ()=>{
|
|
|
123
123
|
expect(finalData?.pages?.[1]).toEqual(mockSecondPage);
|
|
124
124
|
expect(result.current.hasNextPage).toBe(false);
|
|
125
125
|
});
|
|
126
|
-
it(
|
|
126
|
+
it('should handle ListObjectVersions pagination patterns', async ()=>{
|
|
127
127
|
const mockVersionsResponse = {
|
|
128
128
|
Versions: [
|
|
129
129
|
{
|
|
130
|
-
Key:
|
|
131
|
-
VersionId:
|
|
130
|
+
Key: 'file1.txt',
|
|
131
|
+
VersionId: 'v1'
|
|
132
132
|
}
|
|
133
133
|
],
|
|
134
134
|
DeleteMarkers: [
|
|
135
135
|
{
|
|
136
|
-
Key:
|
|
137
|
-
VersionId:
|
|
136
|
+
Key: 'file2.txt',
|
|
137
|
+
VersionId: 'v2'
|
|
138
138
|
}
|
|
139
139
|
],
|
|
140
140
|
IsTruncated: true,
|
|
141
|
-
NextKeyMarker:
|
|
142
|
-
NextVersionIdMarker:
|
|
141
|
+
NextKeyMarker: 'file1.txt',
|
|
142
|
+
NextVersionIdMarker: 'v1'
|
|
143
143
|
};
|
|
144
144
|
mockS3Client.send.mockResolvedValue(mockVersionsResponse);
|
|
145
|
-
const useVersionsQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
145
|
+
const useVersionsQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjectVersions');
|
|
146
146
|
const { result } = renderHook(()=>useVersionsQuery({
|
|
147
|
-
Bucket:
|
|
147
|
+
Bucket: 'test-bucket'
|
|
148
148
|
}), {
|
|
149
|
-
wrapper:
|
|
149
|
+
wrapper: createTestWrapper()
|
|
150
150
|
});
|
|
151
151
|
await waitFor(()=>{
|
|
152
152
|
expect(result.current.isSuccess).toBe(true);
|
|
@@ -155,67 +155,67 @@ describe("useCreateS3InfiniteQueryHook - Pagination Logic", ()=>{
|
|
|
155
155
|
expect(data?.pages).toHaveLength(1);
|
|
156
156
|
expect(data?.pages?.[0]).toEqual(mockVersionsResponse);
|
|
157
157
|
expect(result.current.hasNextPage).toBe(true);
|
|
158
|
-
expect(mockVersionsResponse.NextKeyMarker).toBe(
|
|
159
|
-
expect(mockVersionsResponse.NextVersionIdMarker).toBe(
|
|
158
|
+
expect(mockVersionsResponse.NextKeyMarker).toBe('file1.txt');
|
|
159
|
+
expect(mockVersionsResponse.NextVersionIdMarker).toBe('v1');
|
|
160
160
|
});
|
|
161
|
-
it(
|
|
162
|
-
const mockError = new Error(
|
|
163
|
-
const enhancedError = new Error(
|
|
161
|
+
it('should handle infinite query errors with context', async ()=>{
|
|
162
|
+
const mockError = new Error('S3 List Error');
|
|
163
|
+
const enhancedError = new Error('Enhanced S3 List Error');
|
|
164
164
|
mockS3Client.send.mockRejectedValue(mockError);
|
|
165
165
|
mockCreateS3OperationError.mockReturnValue(enhancedError);
|
|
166
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
166
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
167
167
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
168
|
-
Bucket:
|
|
168
|
+
Bucket: 'test-bucket'
|
|
169
169
|
}), {
|
|
170
|
-
wrapper:
|
|
170
|
+
wrapper: createTestWrapper()
|
|
171
171
|
});
|
|
172
172
|
await waitFor(()=>{
|
|
173
173
|
expect(result.current.isError).toBe(true);
|
|
174
174
|
});
|
|
175
175
|
expect(result.current.error).toBe(enhancedError);
|
|
176
|
-
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError,
|
|
176
|
+
expect(mockCreateS3OperationError).toHaveBeenCalledWith(mockError, 'ListObjects', 'test-bucket');
|
|
177
177
|
});
|
|
178
|
-
it(
|
|
178
|
+
it('should handle fetchNextPage correctly', async ()=>{
|
|
179
179
|
const mockFirstPage = {
|
|
180
180
|
Contents: [
|
|
181
181
|
{
|
|
182
|
-
Key:
|
|
182
|
+
Key: 'file1.txt'
|
|
183
183
|
}
|
|
184
184
|
],
|
|
185
185
|
IsTruncated: true,
|
|
186
|
-
NextContinuationToken:
|
|
186
|
+
NextContinuationToken: 'token123'
|
|
187
187
|
};
|
|
188
188
|
mockS3Client.send.mockResolvedValue(mockFirstPage);
|
|
189
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
189
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
190
190
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
191
|
-
Bucket:
|
|
191
|
+
Bucket: 'test-bucket'
|
|
192
192
|
}), {
|
|
193
|
-
wrapper:
|
|
193
|
+
wrapper: createTestWrapper()
|
|
194
194
|
});
|
|
195
195
|
await waitFor(()=>{
|
|
196
196
|
expect(result.current.isSuccess).toBe(true);
|
|
197
197
|
});
|
|
198
|
-
expect(typeof result.current.fetchNextPage).toBe(
|
|
198
|
+
expect(typeof result.current.fetchNextPage).toBe('function');
|
|
199
199
|
expect(result.current.isFetchingNextPage).toBe(false);
|
|
200
200
|
expect(result.current.hasNextPage).toBe(true);
|
|
201
201
|
expect(()=>result.current.fetchNextPage()).not.toThrow();
|
|
202
202
|
});
|
|
203
|
-
it(
|
|
204
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
203
|
+
it('should handle infinite query options correctly', ()=>{
|
|
204
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
205
205
|
const customOptions = {
|
|
206
206
|
enabled: false,
|
|
207
207
|
staleTime: 10000,
|
|
208
208
|
refetchOnWindowFocus: false
|
|
209
209
|
};
|
|
210
210
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
211
|
-
Bucket:
|
|
211
|
+
Bucket: 'test-bucket'
|
|
212
212
|
}, customOptions), {
|
|
213
|
-
wrapper:
|
|
213
|
+
wrapper: createTestWrapper()
|
|
214
214
|
});
|
|
215
|
-
expect(result.current.fetchStatus).toBe(
|
|
215
|
+
expect(result.current.fetchStatus).toBe('idle');
|
|
216
216
|
expect(result.current.isLoading).toBe(false);
|
|
217
217
|
});
|
|
218
|
-
it(
|
|
218
|
+
it('should pass AbortSignal correctly for infinite queries', async ()=>{
|
|
219
219
|
let capturedAbortSignal;
|
|
220
220
|
mockS3Client.send.mockImplementation((_command, options)=>{
|
|
221
221
|
capturedAbortSignal = options?.abortSignal;
|
|
@@ -224,11 +224,11 @@ describe("useCreateS3InfiniteQueryHook - Pagination Logic", ()=>{
|
|
|
224
224
|
IsTruncated: false
|
|
225
225
|
});
|
|
226
226
|
});
|
|
227
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
227
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
228
228
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
229
|
-
Bucket:
|
|
229
|
+
Bucket: 'test-bucket'
|
|
230
230
|
}), {
|
|
231
|
-
wrapper:
|
|
231
|
+
wrapper: createTestWrapper()
|
|
232
232
|
});
|
|
233
233
|
await waitFor(()=>{
|
|
234
234
|
expect(result.current.isSuccess).toBe(true);
|
|
@@ -236,17 +236,17 @@ describe("useCreateS3InfiniteQueryHook - Pagination Logic", ()=>{
|
|
|
236
236
|
expect(capturedAbortSignal).toBeInstanceOf(AbortSignal);
|
|
237
237
|
expect(capturedAbortSignal?.aborted).toBe(false);
|
|
238
238
|
});
|
|
239
|
-
it(
|
|
239
|
+
it('should handle empty result sets correctly', async ()=>{
|
|
240
240
|
const mockEmptyResponse = {
|
|
241
241
|
Contents: [],
|
|
242
242
|
IsTruncated: false
|
|
243
243
|
};
|
|
244
244
|
mockS3Client.send.mockResolvedValue(mockEmptyResponse);
|
|
245
|
-
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand,
|
|
245
|
+
const useInfiniteQuery = useCreateS3InfiniteQueryHook(MockCommand, 'ListObjects');
|
|
246
246
|
const { result } = renderHook(()=>useInfiniteQuery({
|
|
247
|
-
Bucket:
|
|
247
|
+
Bucket: 'test-bucket'
|
|
248
248
|
}), {
|
|
249
|
-
wrapper:
|
|
249
|
+
wrapper: createTestWrapper()
|
|
250
250
|
});
|
|
251
251
|
await waitFor(()=>{
|
|
252
252
|
expect(result.current.isSuccess).toBe(true);
|
|
@@ -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(()=>{
|