| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { module, test } from 'qunit'; |
| import { setupTest } from 'vault/tests/helpers'; |
| import { rootPem } from 'vault/tests/helpers/pki/values'; |
| |
| module('Unit | Serializer | pki/action', function (hooks) { |
| setupTest(hooks); |
| |
| test('it exists', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const serializer = store.serializerFor('pki/action'); |
| |
| assert.ok(serializer); |
| }); |
| |
| module('actionType import', function (hooks) { |
| hooks.beforeEach(function () { |
| this.actionType = 'import'; |
| this.pemBundle = rootPem; |
| }); |
| |
| test('it serializes only valid params', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| pemBundle: this.pemBundle, |
| issuerRef: 'do-not-send', |
| keyType: 'do-not-send', |
| }); |
| const expectedResult = { |
| pem_bundle: this.pemBundle, |
| }; |
| |
| const serializedRecord = record.serialize(this.actionType); |
| assert.deepEqual( |
| serializedRecord, |
| expectedResult, |
| 'Serializes only parameters valid for import action' |
| ); |
| }); |
| }); |
| |
| module('actionType generate-root', function (hooks) { |
| hooks.beforeEach(function () { |
| this.actionType = 'generate-root'; |
| this.allKeyFields = { |
| keyName: 'key name', |
| keyType: 'rsa', |
| keyBits: '0', |
| keyRef: 'key ref', |
| managedKeyName: 'managed name', |
| managedKeyId: 'managed id', |
| }; |
| this.withDefaults = { |
| exclude_cn_from_sans: false, |
| format: 'pem', |
| max_path_length: -1, |
| not_before_duration: '30s', |
| private_key_format: 'der', |
| }; |
| }); |
| |
| test('it serializes only params with values', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| excludeCnFromSans: false, |
| format: 'pem', |
| maxPathLength: -1, |
| notBeforeDuration: '30s', |
| privateKeyFormat: 'der', |
| type: 'external', // only used for endpoint in adapter |
| customTtl: '40m', // UI-only value |
| issuerName: 'my issuer', |
| commonName: undefined, |
| foo: 'bar', |
| }); |
| const expectedResult = { |
| ...this.withDefaults, |
| key_bits: '0', |
| key_ref: 'default', |
| key_type: 'rsa', |
| issuer_name: 'my issuer', |
| }; |
| |
| // without passing `actionType` it will not compare against an allowlist |
| const serializedRecord = record.serialize(); |
| assert.deepEqual(serializedRecord, expectedResult); |
| }); |
| |
| test('it serializes only valid params for type = external', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| ...this.allKeyFields, |
| type: 'external', |
| customTtl: '40m', |
| issuerName: 'my issuer', |
| commonName: 'my common name', |
| }); |
| const expectedResult = { |
| ...this.withDefaults, |
| issuer_name: 'my issuer', |
| common_name: 'my common name', |
| key_name: 'key name', |
| key_type: 'rsa', |
| key_bits: '0', |
| }; |
| |
| const serializedRecord = record.serialize(this.actionType); |
| assert.deepEqual(serializedRecord, expectedResult); |
| }); |
| |
| test('it serializes only valid params for type = internal', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| ...this.allKeyFields, |
| type: 'internal', |
| customTtl: '40m', |
| issuerName: 'my issuer', |
| commonName: 'my common name', |
| }); |
| const expectedResult = { |
| ...this.withDefaults, |
| issuer_name: 'my issuer', |
| common_name: 'my common name', |
| key_name: 'key name', |
| key_type: 'rsa', |
| key_bits: '0', |
| }; |
| |
| const serializedRecord = record.serialize(this.actionType); |
| assert.deepEqual(serializedRecord, expectedResult); |
| }); |
| |
| test('it serializes only valid params for type = existing', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| ...this.allKeyFields, |
| type: 'existing', |
| customTtl: '40m', |
| issuerName: 'my issuer', |
| commonName: 'my common name', |
| }); |
| const expectedResult = { |
| ...this.withDefaults, |
| issuer_name: 'my issuer', |
| common_name: 'my common name', |
| key_ref: 'key ref', |
| }; |
| |
| const serializedRecord = record.serialize(this.actionType); |
| assert.deepEqual(serializedRecord, expectedResult); |
| }); |
| |
| test('it serializes only valid params for type = kms', function (assert) { |
| const store = this.owner.lookup('service:store'); |
| const record = store.createRecord('pki/action', { |
| ...this.allKeyFields, |
| type: 'kms', |
| customTtl: '40m', |
| issuerName: 'my issuer', |
| commonName: 'my common name', |
| }); |
| const expectedResult = { |
| ...this.withDefaults, |
| issuer_name: 'my issuer', |
| common_name: 'my common name', |
| key_name: 'key name', |
| managed_key_name: 'managed name', |
| managed_key_id: 'managed id', |
| }; |
| |
| const serializedRecord = record.serialize(this.actionType); |
| assert.deepEqual(serializedRecord, expectedResult); |
| }); |
| }); |
| }); |