mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) HashiCorp, Inc.
 | |
|  * SPDX-License-Identifier: BUSL-1.1
 | |
|  */
 | |
| 
 | |
| import { module, test } from 'qunit';
 | |
| import { setupTest } from 'ember-qunit';
 | |
| import { v4 as uuidv4 } from 'uuid';
 | |
| 
 | |
| module('Unit | Serializer | database/connection', function (hooks) {
 | |
|   setupTest(hooks);
 | |
| 
 | |
|   hooks.beforeEach(function () {
 | |
|     this.uid = uuidv4();
 | |
|     this.store = this.owner.lookup('service:store');
 | |
|   });
 | |
|   test('it should serialize only keys that are valid for the database type (elasticsearch)', function (assert) {
 | |
|     const backend = `db-serializer-test-${this.uid}`;
 | |
|     const name = `elastic-test-${this.uid}`;
 | |
|     const record = this.store.createRecord('database/connection', {
 | |
|       plugin_name: 'elasticsearch-database-plugin',
 | |
|       backend,
 | |
|       name,
 | |
|       allowed_roles: ['readonly'],
 | |
|       connection_url: 'http://localhost:9200',
 | |
|       url: 'http://localhost:9200',
 | |
|       username: 'elastic',
 | |
|       password: 'changeme',
 | |
|       tls_ca: 'some-value',
 | |
|       ca_cert: undefined, // does not send undefined values
 | |
|     });
 | |
|     const expectedResult = {
 | |
|       plugin_name: 'elasticsearch-database-plugin',
 | |
|       backend,
 | |
|       name,
 | |
|       verify_connection: true,
 | |
|       allowed_roles: ['readonly'],
 | |
|       url: 'http://localhost:9200',
 | |
|       username: 'elastic',
 | |
|       password: 'changeme',
 | |
|       insecure: false,
 | |
|     };
 | |
| 
 | |
|     const serializedRecord = record.serialize();
 | |
|     assert.deepEqual(
 | |
|       serializedRecord,
 | |
|       expectedResult,
 | |
|       'invalid elasticsearch options were not added to the payload'
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   test('it should normalize values for the database type (elasticsearch)', function (assert) {
 | |
|     const serializer = this.owner.lookup('serializer:database/connection');
 | |
|     const normalized = serializer.normalizeSecrets({
 | |
|       request_id: 'request-id',
 | |
|       lease_id: '',
 | |
|       renewable: false,
 | |
|       lease_duration: 0,
 | |
|       data: {
 | |
|         allowed_roles: ['readonly'],
 | |
|         connection_details: {
 | |
|           backend: 'database',
 | |
|           insecure: false,
 | |
|           url: 'https://localhost:9200',
 | |
|           username: 'root',
 | |
|         },
 | |
|         password_policy: '',
 | |
|         plugin_name: 'elasticsearch-database-plugin',
 | |
|         plugin_version: '',
 | |
|         root_credentials_rotate_statements: [],
 | |
|       },
 | |
|       wrap_info: null,
 | |
|       warnings: null,
 | |
|       auth: null,
 | |
|       mount_type: 'database',
 | |
|       backend: 'database',
 | |
|       id: 'elastic-test',
 | |
|     });
 | |
|     const expectedResult = {
 | |
|       allowed_roles: ['readonly'],
 | |
|       backend: 'database',
 | |
|       connection_details: {
 | |
|         backend: 'database',
 | |
|         insecure: false,
 | |
|         url: 'https://localhost:9200',
 | |
|         username: 'root',
 | |
|       },
 | |
|       id: 'elastic-test',
 | |
|       insecure: false,
 | |
|       name: 'elastic-test',
 | |
|       password_policy: '',
 | |
|       plugin_name: 'elasticsearch-database-plugin',
 | |
|       plugin_version: '',
 | |
|       root_credentials_rotate_statements: [],
 | |
|       root_rotation_statements: [],
 | |
|       url: 'https://localhost:9200',
 | |
|       username: 'root',
 | |
|     };
 | |
|     assert.deepEqual(normalized, expectedResult, `Normalizes and flattens database response`);
 | |
|   });
 | |
| });
 | 
