serverless/lib/plugins/aws/utils/credentials.test.js
2019-06-28 13:32:52 +02:00

92 lines
2.5 KiB
JavaScript

'use strict';
const expect = require('chai').expect;
const BbPromise = require('bluebird');
const os = require('os');
const path = require('path');
const { outputFile } = require('fs-extra');
const overrideEnv = require('process-utils/override-env');
const credentials = require('./credentials');
describe('#credentials', () => {
const credentialsFilePath = path.join(os.homedir(), '.aws', 'credentials');
it('should resolve file profiles', () => {
const profiles = new Map([
[
'my-profile1',
{
accessKeyId: 'my-old-profile-key1',
secretAccessKey: 'my-old-profile-secret1',
},
],
[
'my-profile2',
{
accessKeyId: 'my-old-profile-key2',
secretAccessKey: 'my-old-profile-secret2',
},
],
]);
const [[profile1Name, profile1], [profile2Name, profile2]] = Array.from(profiles);
const credentialsFileContent = `${[
`[${[profile1Name]}]`,
`aws_access_key_id = ${profile1.accessKeyId}`,
`aws_secret_access_key = ${profile1.secretAccessKey}`,
'',
`[${[profile2Name]}]`,
`aws_access_key_id = ${profile2.accessKeyId}`,
`aws_secret_access_key = ${profile2.secretAccessKey}`,
].join('\n')}\n`;
return new BbPromise((resolve, reject) => {
outputFile(credentialsFilePath, credentialsFileContent, error => {
if (error) reject(error);
else resolve();
});
}).then(() =>
credentials
.resolveFileProfiles()
.then(resolvedProfiles => expect(resolvedProfiles).to.deep.equal(profiles))
);
});
it('should resolve env credentials', () =>
overrideEnv(() => {
process.env.AWS_ACCESS_KEY_ID = 'foo';
process.env.AWS_SECRET_ACCESS_KEY = 'bar';
expect(credentials.resolveEnvCredentials()).to.deep.equal({
accessKeyId: 'foo',
secretAccessKey: 'bar',
});
}));
it('should save file profiles', () => {
const profiles = new Map([
[
'my-profileA',
{
accessKeyId: 'my-old-profile-key1',
secretAccessKey: 'my-old-profile-secret1',
},
],
[
'my-profileB',
{
accessKeyId: 'my-old-profile-key2',
secretAccessKey: 'my-old-profile-secret2',
},
],
]);
return credentials
.saveFileProfiles(profiles)
.then(() =>
credentials
.resolveFileProfiles()
.then(resolvedProfiles => expect(resolvedProfiles).to.deep.equal(profiles))
);
});
});