fix(providers): aws credentials (#18812)

This commit is contained in:
Christian 2023-11-17 12:17:25 +01:00 committed by GitHub
parent 3ba8a83b4a
commit b77b41cda4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 7 deletions

View File

@ -16,7 +16,7 @@ const defaultOptions = {
describe('Utils', () => { describe('Utils', () => {
describe('Extract credentials for V4 different aws provider configurations', () => { describe('Extract credentials for V4 different aws provider configurations', () => {
test('[Legacy] Credentials directly in the options', async () => { test('[Legacy] Credentials directly in the options', () => {
const options: InitOptions = { const options: InitOptions = {
accessKeyId, accessKeyId,
secretAccessKey, secretAccessKey,
@ -30,7 +30,7 @@ describe('Utils', () => {
}); });
}); });
test('[Legacy] credentials directly in s3Options', async () => { test('[Legacy] credentials directly in s3Options', () => {
const options: InitOptions = { const options: InitOptions = {
s3Options: { s3Options: {
accessKeyId, accessKeyId,
@ -46,7 +46,7 @@ describe('Utils', () => {
}); });
}); });
test('Credentials in credentials object inside s3Options', async () => { test('Credentials in credentials object inside s3Options', () => {
const options: InitOptions = { const options: InitOptions = {
s3Options: { s3Options: {
credentials: { credentials: {
@ -63,5 +63,15 @@ describe('Utils', () => {
secretAccessKey, secretAccessKey,
}); });
}); });
test('Does not throw an error when credentials are not present', () => {
const options: InitOptions = {
s3Options: {
...defaultOptions,
},
};
const credentials = extractCredentials(options);
expect(credentials).toEqual(null);
});
}); });
}); });

View File

@ -76,11 +76,11 @@ const getConfig = ({ baseUrl, rootPath, s3Options, ...legacyS3Options }: InitOpt
"S3 configuration options passed at root level of the plugin's providerOptions is deprecated and will be removed in a future release. Please wrap them inside the 's3Options:{}' property." "S3 configuration options passed at root level of the plugin's providerOptions is deprecated and will be removed in a future release. Please wrap them inside the 's3Options:{}' property."
); );
} }
const credentials = extractCredentials({ s3Options, ...legacyS3Options });
const config = { const config = {
...s3Options, ...s3Options,
...legacyS3Options, ...legacyS3Options,
credentials: extractCredentials({ s3Options, ...legacyS3Options }), ...(credentials ? { credentials } : {}),
}; };
config.params.ACL = getOr(ObjectCannedACL.public_read, ['params', 'ACL'], config); config.params.ACL = getOr(ObjectCannedACL.public_read, ['params', 'ACL'], config);

View File

@ -89,7 +89,7 @@ function getBucketFromAwsUrl(fileUrl: string): BucketInfo {
} }
// TODO Remove this in V5 since we will only support the new config structure // TODO Remove this in V5 since we will only support the new config structure
export const extractCredentials = (options: InitOptions): AwsCredentialIdentity => { export const extractCredentials = (options: InitOptions): AwsCredentialIdentity | null => {
// legacy // legacy
if (options.accessKeyId && options.secretAccessKey) { if (options.accessKeyId && options.secretAccessKey) {
return { return {
@ -115,5 +115,5 @@ export const extractCredentials = (options: InitOptions): AwsCredentialIdentity
}; };
} }
throw new Error("Couldn't find AWS credentials."); return null;
}; };