@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,17 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const headObjectHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
const objectKey = url.pathname.substring(url.pathname.indexOf(
|
|
7
|
-
const versionId = url.searchParams.get(
|
|
8
|
-
if (
|
|
9
|
-
if (bucketName.includes(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
3
|
+
const headObjectHandler = http.head(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
|
|
7
|
+
const versionId = url.searchParams.get('versionId');
|
|
8
|
+
if ('string' == typeof bucketName) {
|
|
9
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
10
|
+
status: 404
|
|
11
|
+
});
|
|
12
|
+
if (objectKey.includes('non-existent-object')) return HttpResponse.xml(createS3ErrorXml('NotFound', 'The specified key does not exist.', bucketName, objectKey), {
|
|
13
|
+
status: 404
|
|
14
|
+
});
|
|
15
|
+
if (bucketName.includes('restricted-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
16
|
+
status: 403
|
|
17
|
+
});
|
|
18
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
19
|
+
return new Response(null, {
|
|
20
|
+
status: 200,
|
|
21
|
+
headers: {
|
|
22
|
+
'x-amz-meta-custom-key': 'custom-value',
|
|
23
|
+
'Content-Length': '12345',
|
|
24
|
+
'Content-Type': 'application/octet-stream',
|
|
25
|
+
ETag: '"some-etag"',
|
|
26
|
+
'Last-Modified': new Date().toUTCString(),
|
|
27
|
+
'x-amz-version-id': versionId || 'some-version-id'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
14
30
|
}
|
|
15
|
-
return
|
|
31
|
+
return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
|
|
32
|
+
status: 400
|
|
33
|
+
});
|
|
16
34
|
});
|
|
17
35
|
export { headObjectHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const listBucketsHandler: import("msw").
|
|
1
|
+
export declare const listBucketsHandler: import("msw").HttpHandler;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const listBucketsHandler =
|
|
3
|
+
const listBucketsHandler = http.get(`${getS3BaseUrl()}/`, async ()=>HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
4
4
|
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
5
5
|
<Owner>
|
|
6
6
|
<ID>owner-id-123</ID>
|
|
@@ -20,5 +20,7 @@ const listBucketsHandler = rest.get(`${getS3BaseUrl()}/`, (_req, res, ctx)=>res(
|
|
|
20
20
|
<CreationDate>2023-10-10T17:50:00.000Z</CreationDate>
|
|
21
21
|
</Bucket>
|
|
22
22
|
</Buckets>
|
|
23
|
-
</ListAllMyBucketsResult
|
|
23
|
+
</ListAllMyBucketsResult>`, {
|
|
24
|
+
status: 200
|
|
25
|
+
}));
|
|
24
26
|
export { listBucketsHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const listObjectVersionsHandler: import("msw").
|
|
1
|
+
export declare const listObjectVersionsHandler: import("msw").HttpHandler;
|
|
@@ -1,28 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const listObjectVersionsHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
if (!url.searchParams.has(
|
|
7
|
-
const prefix = url.searchParams.get(
|
|
8
|
-
const delimiter = url.searchParams.get(
|
|
9
|
-
const maxKeys = parseInt(url.searchParams.get(
|
|
10
|
-
const keyMarker = url.searchParams.get(
|
|
11
|
-
if (
|
|
12
|
-
if (bucketName.includes(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (bucketName.includes(
|
|
3
|
+
const listObjectVersionsHandler = http.get(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
if (!url.searchParams.has('versions')) return;
|
|
7
|
+
const prefix = url.searchParams.get('prefix') || '';
|
|
8
|
+
const delimiter = url.searchParams.get('delimiter') || '';
|
|
9
|
+
const maxKeys = parseInt(url.searchParams.get('max-keys') || '1000', 10);
|
|
10
|
+
const keyMarker = url.searchParams.get('key-marker');
|
|
11
|
+
if ('string' == typeof bucketName) {
|
|
12
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
13
|
+
status: 404
|
|
14
|
+
});
|
|
15
|
+
if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
16
|
+
status: 403
|
|
17
|
+
});
|
|
18
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
19
|
+
if (bucketName.includes('empty-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
16
20
|
<ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
17
21
|
<Name>${bucketName}</Name>
|
|
18
22
|
<Prefix>${prefix}</Prefix>
|
|
19
23
|
<Delimiter>${delimiter}</Delimiter>
|
|
20
24
|
<MaxKeys>${maxKeys}</MaxKeys>
|
|
21
25
|
<IsTruncated>false</IsTruncated>
|
|
22
|
-
</ListVersionsResult
|
|
26
|
+
</ListVersionsResult>`, {
|
|
27
|
+
status: 200
|
|
28
|
+
});
|
|
23
29
|
if (keyMarker) {
|
|
24
|
-
const pageKey = prefix &&
|
|
25
|
-
return
|
|
30
|
+
const pageKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-v3.txt` : 'file-v3.txt';
|
|
31
|
+
return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
26
32
|
<ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
27
33
|
<Name>${bucketName}</Name>
|
|
28
34
|
<Prefix>${prefix}</Prefix>
|
|
@@ -38,20 +44,22 @@ const listObjectVersionsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req
|
|
|
38
44
|
<Size>1024</Size>
|
|
39
45
|
<StorageClass>STANDARD</StorageClass>
|
|
40
46
|
</Version>
|
|
41
|
-
</ListVersionsResult
|
|
47
|
+
</ListVersionsResult>`, {
|
|
48
|
+
status: 200
|
|
49
|
+
});
|
|
42
50
|
}
|
|
43
|
-
const hasMorePages = bucketName.includes(
|
|
44
|
-
const baseKey = prefix &&
|
|
45
|
-
const deletedKey = prefix &&
|
|
46
|
-
const nextKey = prefix &&
|
|
47
|
-
return
|
|
51
|
+
const hasMorePages = bucketName.includes('paginated-bucket');
|
|
52
|
+
const baseKey = prefix && 'file.txt' !== prefix ? prefix : 'file.txt';
|
|
53
|
+
const deletedKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-deleted.txt` : 'deleted-file.txt';
|
|
54
|
+
const nextKey = prefix && 'file.txt' !== prefix ? `${prefix.replace(/\/$/, '')}-v2.txt` : 'file-v2.txt';
|
|
55
|
+
return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
48
56
|
<ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
49
57
|
<Name>${bucketName}</Name>
|
|
50
58
|
<Prefix>${prefix}</Prefix>
|
|
51
59
|
<Delimiter>${delimiter}</Delimiter>
|
|
52
60
|
<MaxKeys>${maxKeys}</MaxKeys>
|
|
53
61
|
<IsTruncated>${hasMorePages}</IsTruncated>
|
|
54
|
-
${hasMorePages ? `<NextKeyMarker>${nextKey}</NextKeyMarker><NextVersionIdMarker>version-id-2</NextVersionIdMarker>` :
|
|
62
|
+
${hasMorePages ? `<NextKeyMarker>${nextKey}</NextKeyMarker><NextVersionIdMarker>version-id-2</NextVersionIdMarker>` : ''}
|
|
55
63
|
<Version>
|
|
56
64
|
<Key>${baseKey}</Key>
|
|
57
65
|
<VersionId>version-id-1</VersionId>
|
|
@@ -76,8 +84,12 @@ const listObjectVersionsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req
|
|
|
76
84
|
<IsLatest>true</IsLatest>
|
|
77
85
|
<LastModified>2023-10-10T17:50:00.000Z</LastModified>
|
|
78
86
|
</DeleteMarker>
|
|
79
|
-
</ListVersionsResult
|
|
87
|
+
</ListVersionsResult>`, {
|
|
88
|
+
status: 200
|
|
89
|
+
});
|
|
80
90
|
}
|
|
81
|
-
return
|
|
91
|
+
return new Response(null, {
|
|
92
|
+
status: 200
|
|
93
|
+
});
|
|
82
94
|
});
|
|
83
95
|
export { listObjectVersionsHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const listObjectsHandler: import("msw").
|
|
1
|
+
export declare const listObjectsHandler: import("msw").HttpHandler;
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const listObjectsHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
if (
|
|
7
|
-
const prefix = url.searchParams.get(
|
|
8
|
-
const delimiter = url.searchParams.get(
|
|
9
|
-
const maxKeys = parseInt(url.searchParams.get(
|
|
10
|
-
const continuationToken = url.searchParams.get(
|
|
11
|
-
if (
|
|
12
|
-
if (bucketName.includes(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (bucketName.includes(
|
|
3
|
+
const listObjectsHandler = http.get(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
if ('2' !== url.searchParams.get('list-type')) return;
|
|
7
|
+
const prefix = url.searchParams.get('prefix') || '';
|
|
8
|
+
const delimiter = url.searchParams.get('delimiter') || '';
|
|
9
|
+
const maxKeys = parseInt(url.searchParams.get('max-keys') || '1000', 10);
|
|
10
|
+
const continuationToken = url.searchParams.get('continuation-token');
|
|
11
|
+
if ('string' == typeof bucketName) {
|
|
12
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
13
|
+
status: 404
|
|
14
|
+
});
|
|
15
|
+
if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
16
|
+
status: 403
|
|
17
|
+
});
|
|
18
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
19
|
+
if (bucketName.includes('empty-bucket')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
16
20
|
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
17
21
|
<Name>${bucketName}</Name>
|
|
18
22
|
<Prefix>${prefix}</Prefix>
|
|
19
23
|
<Delimiter>${delimiter}</Delimiter>
|
|
20
24
|
<MaxKeys>${maxKeys}</MaxKeys>
|
|
21
25
|
<IsTruncated>false</IsTruncated>
|
|
22
|
-
</ListBucketResult
|
|
23
|
-
|
|
26
|
+
</ListBucketResult>`, {
|
|
27
|
+
status: 200
|
|
28
|
+
});
|
|
29
|
+
if (continuationToken) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
24
30
|
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
25
31
|
<Name>${bucketName}</Name>
|
|
26
32
|
<Prefix>${prefix}</Prefix>
|
|
@@ -34,16 +40,18 @@ const listObjectsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res,
|
|
|
34
40
|
<Size>2048</Size>
|
|
35
41
|
<StorageClass>STANDARD</StorageClass>
|
|
36
42
|
</Contents>
|
|
37
|
-
</ListBucketResult
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
</ListBucketResult>`, {
|
|
44
|
+
status: 200
|
|
45
|
+
});
|
|
46
|
+
const hasMorePages = bucketName.includes('paginated-bucket');
|
|
47
|
+
return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
40
48
|
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
41
49
|
<Name>${bucketName}</Name>
|
|
42
50
|
<Prefix>${prefix}</Prefix>
|
|
43
51
|
<Delimiter>${delimiter}</Delimiter>
|
|
44
52
|
<MaxKeys>${maxKeys}</MaxKeys>
|
|
45
53
|
<IsTruncated>${hasMorePages}</IsTruncated>
|
|
46
|
-
${hasMorePages ?
|
|
54
|
+
${hasMorePages ? '<NextContinuationToken>token-123</NextContinuationToken>' : ''}
|
|
47
55
|
<Contents>
|
|
48
56
|
<Key>${prefix}file1.txt</Key>
|
|
49
57
|
<LastModified>2023-10-12T17:50:00.000Z</LastModified>
|
|
@@ -58,9 +66,13 @@ const listObjectsHandler = rest.get(`${getS3BaseUrl()}/:bucketName`, (req, res,
|
|
|
58
66
|
<Size>512</Size>
|
|
59
67
|
<StorageClass>STANDARD</StorageClass>
|
|
60
68
|
</Contents>
|
|
61
|
-
${delimiter ? `<CommonPrefixes><Prefix>${prefix}folder1/</Prefix></CommonPrefixes>` :
|
|
62
|
-
</ListBucketResult
|
|
69
|
+
${delimiter ? `<CommonPrefixes><Prefix>${prefix}folder1/</Prefix></CommonPrefixes>` : ''}
|
|
70
|
+
</ListBucketResult>`, {
|
|
71
|
+
status: 200
|
|
72
|
+
});
|
|
63
73
|
}
|
|
64
|
-
return
|
|
74
|
+
return new Response(null, {
|
|
75
|
+
status: 200
|
|
76
|
+
});
|
|
65
77
|
});
|
|
66
78
|
export { listObjectsHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getObjectLegalHoldHandler: import("msw").
|
|
1
|
+
export declare const getObjectLegalHoldHandler: import("msw").HttpHandler;
|
|
@@ -1,24 +1,39 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
1
|
import { ObjectLockLegalHoldStatus } from "@aws-sdk/client-s3";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
import { HttpResponse, http } from "msw";
|
|
3
|
+
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
4
|
+
const getObjectLegalHoldHandler = http.get(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
|
|
5
|
+
const { bucketName } = params;
|
|
6
|
+
const url = new URL(request.url);
|
|
7
|
+
const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
|
|
8
|
+
if (!url.searchParams.has('legal-hold')) return;
|
|
9
|
+
if ('string' == typeof bucketName) {
|
|
10
|
+
if ('no-such-bucket' === bucketName || 'non-existent-bucket' === bucketName) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
11
|
+
status: 404
|
|
12
|
+
});
|
|
13
|
+
if ('access-denied-bucket' === bucketName || 'restricted-bucket' === bucketName) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied', bucketName, objectKey), {
|
|
14
|
+
status: 403
|
|
15
|
+
});
|
|
16
|
+
if ('network-error-bucket' === bucketName) return HttpResponse.error();
|
|
17
|
+
if ('non-existent-object.txt' === objectKey) return HttpResponse.xml(createS3ErrorXml('NoSuchKey', 'The specified key does not exist.', bucketName, objectKey), {
|
|
18
|
+
status: 404
|
|
19
|
+
});
|
|
20
|
+
if ('no-legal-hold-object.txt' === objectKey) return HttpResponse.xml(createS3ErrorXml('NoSuchObjectLockConfiguration', 'The specified object does not have a ObjectLock configuration', bucketName, objectKey), {
|
|
21
|
+
status: 404
|
|
22
|
+
});
|
|
15
23
|
let status = ObjectLockLegalHoldStatus.ON;
|
|
16
|
-
if (
|
|
17
|
-
return
|
|
24
|
+
if ('legal-hold-off-object.txt' === objectKey) status = ObjectLockLegalHoldStatus.OFF;
|
|
25
|
+
return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
18
26
|
<LegalHold xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
19
27
|
<Status>${status}</Status>
|
|
20
|
-
</LegalHold
|
|
28
|
+
</LegalHold>`, {
|
|
29
|
+
status: 200,
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/xml'
|
|
32
|
+
}
|
|
33
|
+
});
|
|
21
34
|
}
|
|
22
|
-
return
|
|
35
|
+
return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
|
|
36
|
+
status: 400
|
|
37
|
+
});
|
|
23
38
|
});
|
|
24
39
|
export { getObjectLegalHoldHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getObjectRetentionHandler: import("msw").
|
|
1
|
+
export declare const getObjectRetentionHandler: import("msw").HttpHandler;
|
|
@@ -1,27 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const getObjectRetentionHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
const objectKey = url.pathname.substring(url.pathname.indexOf(
|
|
7
|
-
if (!url.searchParams.has(
|
|
8
|
-
if (
|
|
9
|
-
if (bucketName.includes(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (objectKey.includes(
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
const getObjectRetentionHandler = http.get(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
|
|
7
|
+
if (!url.searchParams.has('retention')) return;
|
|
8
|
+
if ('string' == typeof bucketName) {
|
|
9
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
10
|
+
status: 404
|
|
11
|
+
});
|
|
12
|
+
if (objectKey.includes('non-existent-object')) return HttpResponse.xml(createS3ErrorXml('NoSuchKey', 'The specified key does not exist.', bucketName, objectKey), {
|
|
13
|
+
status: 404
|
|
14
|
+
});
|
|
15
|
+
if (bucketName.includes('restricted-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
16
|
+
status: 403
|
|
17
|
+
});
|
|
18
|
+
if (objectKey.includes('no-retention-object')) return HttpResponse.xml(createS3ErrorXml('NoSuchObjectLockConfiguration', 'The specified object does not have a ObjectLock configuration', bucketName, objectKey), {
|
|
19
|
+
status: 404
|
|
20
|
+
});
|
|
21
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
22
|
+
if (objectKey.includes('compliance-retention')) return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
15
23
|
<Retention xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
16
24
|
<Mode>COMPLIANCE</Mode>
|
|
17
25
|
<RetainUntilDate>2024-12-31T23:59:59.000Z</RetainUntilDate>
|
|
18
|
-
</Retention
|
|
19
|
-
|
|
26
|
+
</Retention>`, {
|
|
27
|
+
status: 200
|
|
28
|
+
});
|
|
29
|
+
return HttpResponse.xml(`<?xml version="1.0" encoding="UTF-8"?>
|
|
20
30
|
<Retention xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
21
31
|
<Mode>GOVERNANCE</Mode>
|
|
22
32
|
<RetainUntilDate>2024-06-30T23:59:59.000Z</RetainUntilDate>
|
|
23
|
-
</Retention
|
|
33
|
+
</Retention>`, {
|
|
34
|
+
status: 200
|
|
35
|
+
});
|
|
24
36
|
}
|
|
25
|
-
return
|
|
37
|
+
return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
|
|
38
|
+
status: 400
|
|
39
|
+
});
|
|
26
40
|
});
|
|
27
41
|
export { getObjectRetentionHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const putBucketAclHandler: import("msw").
|
|
1
|
+
export declare const putBucketAclHandler: import("msw").HttpHandler;
|
|
@@ -1,18 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const putBucketAclHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
if (!url.searchParams.has(
|
|
7
|
-
if (
|
|
8
|
-
if (bucketName.includes(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (bucketName.includes(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (
|
|
3
|
+
const putBucketAclHandler = http.put(`${getS3BaseUrl()}/:bucketName`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
if (!url.searchParams.has('acl')) return;
|
|
7
|
+
if ('string' == typeof bucketName) {
|
|
8
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
9
|
+
status: 404
|
|
10
|
+
});
|
|
11
|
+
if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
12
|
+
status: 403
|
|
13
|
+
});
|
|
14
|
+
if (bucketName.includes('invalid-acl-bucket')) return HttpResponse.xml(createS3ErrorXml('InvalidRequest', 'The ACL configuration is invalid'), {
|
|
15
|
+
status: 400
|
|
16
|
+
});
|
|
17
|
+
if (bucketName.includes('malformed-acl-bucket')) return HttpResponse.xml(createS3ErrorXml('MalformedACLError', 'The XML provided does not match the expected format'), {
|
|
18
|
+
status: 400
|
|
19
|
+
});
|
|
20
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
21
|
+
const aclParam = url.searchParams.get('acl');
|
|
22
|
+
if ('invalid-acl-type' === aclParam) return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid canned ACL value'), {
|
|
23
|
+
status: 400
|
|
24
|
+
});
|
|
15
25
|
}
|
|
16
|
-
return
|
|
26
|
+
return new Response('', {
|
|
27
|
+
status: 200,
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-Type': 'application/xml'
|
|
30
|
+
}
|
|
31
|
+
});
|
|
17
32
|
});
|
|
18
33
|
export { putBucketAclHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const putObjectHandler: import("msw").
|
|
1
|
+
export declare const putObjectHandler: import("msw").HttpHandler;
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpResponse, http } from "msw";
|
|
2
2
|
import { createS3ErrorXml, getS3BaseUrl } from "../utils.js";
|
|
3
|
-
const putObjectHandler =
|
|
4
|
-
const { bucketName } =
|
|
5
|
-
const url = new URL(
|
|
6
|
-
const objectKey = url.pathname.substring(url.pathname.indexOf(
|
|
7
|
-
if (
|
|
8
|
-
if (bucketName.includes(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (
|
|
12
|
-
|
|
3
|
+
const putObjectHandler = http.put(`${getS3BaseUrl()}/:bucketName/*`, async ({ request, params })=>{
|
|
4
|
+
const { bucketName } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
const objectKey = url.pathname.substring(url.pathname.indexOf('/', 1) + 1);
|
|
7
|
+
if ('string' == typeof bucketName) {
|
|
8
|
+
if (bucketName.includes('non-existent-bucket')) return HttpResponse.xml(createS3ErrorXml('NoSuchBucket', 'The specified bucket does not exist', bucketName), {
|
|
9
|
+
status: 404
|
|
10
|
+
});
|
|
11
|
+
if (bucketName.includes('access-denied-bucket')) return HttpResponse.xml(createS3ErrorXml('AccessDenied', 'Access Denied'), {
|
|
12
|
+
status: 403
|
|
13
|
+
});
|
|
14
|
+
if (bucketName.includes('network-error-bucket')) return HttpResponse.error();
|
|
15
|
+
if (objectKey.includes('invalid-key')) return HttpResponse.xml(createS3ErrorXml('InvalidRequest', 'The specified key is not valid'), {
|
|
16
|
+
status: 400
|
|
17
|
+
});
|
|
18
|
+
return new Response('', {
|
|
19
|
+
status: 200,
|
|
20
|
+
headers: {
|
|
21
|
+
ETag: '"mock-etag-123"',
|
|
22
|
+
'x-amz-version-id': 'mock-version-id',
|
|
23
|
+
'x-amz-server-side-encryption': 'AES256'
|
|
24
|
+
}
|
|
25
|
+
});
|
|
13
26
|
}
|
|
14
|
-
return
|
|
27
|
+
return HttpResponse.xml(createS3ErrorXml('InvalidArgument', 'Invalid request parameters'), {
|
|
28
|
+
status: 400
|
|
29
|
+
});
|
|
15
30
|
});
|
|
16
31
|
export { putObjectHandler };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const createBucketHandler: import("msw").
|
|
2
|
-
export declare const getBucketVersioningHandler: import("msw").
|
|
3
|
-
export declare const s3Handlers: import("msw").
|
|
1
|
+
export declare const createBucketHandler: import("msw").HttpHandler;
|
|
2
|
+
export declare const getBucketVersioningHandler: import("msw").HttpHandler;
|
|
3
|
+
export declare const s3Handlers: import("msw").HttpHandler[];
|
|
4
4
|
export default s3Handlers;
|