| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { module, test } from 'qunit'; |
| import { setupTest } from 'ember-qunit'; |
| |
| const CHACHA = { |
| request_id: 'a5695685-584c-6b25-fada-35304d3d583d', |
| lease_id: '', |
| renewable: false, |
| lease_duration: 0, |
| data: { |
| allow_plaintext_backup: false, |
| deletion_allowed: false, |
| derived: false, |
| exportable: false, |
| keys: { |
| 1: 1559598610, |
| }, |
| latest_version: 1, |
| min_available_version: 0, |
| min_decryption_version: 1, |
| min_encryption_version: 0, |
| name: 'anewone', |
| supports_decryption: true, |
| supports_derivation: true, |
| supports_encryption: true, |
| supports_signing: false, |
| type: 'chacha20-poly1305', |
| }, |
| wrap_info: null, |
| warnings: null, |
| auth: null, |
| backend: 'its-a-transit', |
| }; |
| |
| const AES = { |
| request_id: '90c327a8-9a68-6fab-13a1-f51b68cb24d7', |
| lease_id: '', |
| renewable: false, |
| lease_duration: 0, |
| data: { |
| allow_plaintext_backup: false, |
| deletion_allowed: false, |
| derived: false, |
| exportable: false, |
| keys: { |
| 1: 1559577523, |
| }, |
| latest_version: 1, |
| min_available_version: 0, |
| min_decryption_version: 1, |
| min_encryption_version: 0, |
| name: 'new', |
| supports_decryption: true, |
| supports_derivation: true, |
| supports_encryption: true, |
| supports_signing: false, |
| type: 'aes256-gcm96', |
| }, |
| wrap_info: null, |
| warnings: null, |
| auth: null, |
| backend: 'its-a-transit', |
| }; |
| |
| module('Unit | Serializer | transit-key', function (hooks) { |
| setupTest(hooks); |
| test('it expands the timestamp for aes and chacha-poly keys', function (assert) { |
| const serializer = this.owner.lookup('serializer:transit-key'); |
| const aesExpected = AES.data.keys[1] * 1000; |
| const chachaExpected = CHACHA.data.keys[1] * 1000; |
| const aesData = serializer.normalizeSecrets({ ...AES }); |
| assert.strictEqual(aesData.firstObject.keys[1], aesExpected, 'converts seconds to millis for aes keys'); |
| |
| const chachaData = serializer.normalizeSecrets({ ...CHACHA }); |
| assert.strictEqual( |
| chachaData.firstObject.keys[1], |
| chachaExpected, |
| 'converts seconds to millis for chacha keys' |
| ); |
| }); |
| |
| test('it includes backend from the payload on the normalized data', function (assert) { |
| const serializer = this.owner.lookup('serializer:transit-key'); |
| const data = serializer.normalizeSecrets({ ...AES }); |
| assert.strictEqual( |
| data.firstObject.backend, |
| 'its-a-transit', |
| 'pulls backend from the payload onto the data' |
| ); |
| }); |
| }); |