/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; import apiStub from 'vault/tests/helpers/noop-all-api-requests'; module('Unit | Adapter | aws credential', function (hooks) { setupTest(hooks); hooks.beforeEach(function () { this.server = apiStub(); }); hooks.afterEach(function () { this.server.shutdown(); }); const storeStub = { pushPayload() {}, serializerFor() { return { serializeIntoHash() {}, }; }, }; const makeSnapshot = (obj) => { obj.role = { backend: 'aws', name: 'foo', }; obj.attr = (attr) => obj[attr]; return obj; }; const type = { modelName: 'aws-credential', }; const cases = [ ['iam_user type', [storeStub, type, makeSnapshot({ credentialType: 'iam_user', ttl: '3h' })], 'GET'], [ 'federation_token type with ttl', [storeStub, type, makeSnapshot({ credentialType: 'federation_token', ttl: '3h', roleArn: 'arn' })], 'POST', { ttl: '3h' }, ], [ 'federation_token type no ttl', [storeStub, type, makeSnapshot({ credentialType: 'federation_token', roleArn: 'arn' })], 'POST', ], [ 'assumed_role type no arn, no ttl', [storeStub, type, makeSnapshot({ credentialType: 'assumed_role' })], 'POST', ], [ 'assumed_role type no arn', [storeStub, type, makeSnapshot({ credentialType: 'assumed_role', ttl: '3h' })], 'POST', { ttl: '3h' }, ], [ 'assumed_role type', [storeStub, type, makeSnapshot({ credentialType: 'assumed_role', roleArn: 'arn', ttl: '3h' })], 'POST', { ttl: '3h', role_arn: 'arn' }, ], ]; cases.forEach(([description, args, expectedMethod, expectedRequestBody]) => { test(`aws-credential: ${description}`, function (assert) { assert.expect(3); const adapter = this.owner.lookup('adapter:aws-credential'); adapter.createRecord(...args); const { method, url, requestBody } = this.server.handledRequests[0]; assert.strictEqual(url, '/v1/aws/creds/foo', `calls the correct url`); assert.strictEqual( method, expectedMethod, `${description} uses the correct http verb: ${expectedMethod}` ); assert.strictEqual(requestBody, expectedRequestBody ? JSON.stringify(expectedRequestBody) : null); }); }); });