mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	UI: adding skip import rotation field when creating static roles (#29633)
* adding skip import rotation field to ui * changing labels and subtext * removing readonly, user input on edit would not affect value * changelog * fix test * fix test2
This commit is contained in:
		
							
								
								
									
										3
									
								
								changelog/29633.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								changelog/29633.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | ```release-note:bug | ||||||
|  | ui/database: Added input field for setting 'skip_import_rotation' when creating a static role  | ||||||
|  | ``` | ||||||
| @@ -54,6 +54,12 @@ export default Model.extend({ | |||||||
|       'Specifies the amount of time Vault should wait before rotating the password. The minimum is 5 seconds. Default is 24 hours.', |       'Specifies the amount of time Vault should wait before rotating the password. The minimum is 5 seconds. Default is 24 hours.', | ||||||
|     helperTextEnabled: 'Vault will rotate password after', |     helperTextEnabled: 'Vault will rotate password after', | ||||||
|   }), |   }), | ||||||
|  |   skip_import_rotation: attr({ | ||||||
|  |     label: 'Skip initial rotation', | ||||||
|  |     editType: 'boolean', | ||||||
|  |     defaultValue: false, | ||||||
|  |     subText: 'When unchecked, Vault automatically rotates the password upon creation', | ||||||
|  |   }), | ||||||
|   creation_statements: attr('array', { |   creation_statements: attr('array', { | ||||||
|     editType: 'stringArray', |     editType: 'stringArray', | ||||||
|   }), |   }), | ||||||
| @@ -110,6 +116,7 @@ export default Model.extend({ | |||||||
|       'max_ttl', |       'max_ttl', | ||||||
|       'username', |       'username', | ||||||
|       'rotation_period', |       'rotation_period', | ||||||
|  |       'skip_import_rotation', | ||||||
|       'creation_statements', |       'creation_statements', | ||||||
|       'creation_statement', // for editType: JSON |       'creation_statement', // for editType: JSON | ||||||
|       'revocation_statements', |       'revocation_statements', | ||||||
|   | |||||||
| @@ -188,7 +188,7 @@ export const AVAILABLE_PLUGIN_TYPES = [ | |||||||
| ]; | ]; | ||||||
|  |  | ||||||
| export const ROLE_FIELDS = { | export const ROLE_FIELDS = { | ||||||
|   static: ['username', 'rotation_period'], |   static: ['username', 'rotation_period', 'skip_import_rotation'], | ||||||
|   dynamic: ['default_ttl', 'max_ttl'], |   dynamic: ['default_ttl', 'max_ttl'], | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,6 +22,7 @@ module('Integration | Component | database-role-edit', function (hooks) { | |||||||
|       database: ['my-mongodb-database'], |       database: ['my-mongodb-database'], | ||||||
|       backend: 'database', |       backend: 'database', | ||||||
|       username: 'staticTestUser', |       username: 'staticTestUser', | ||||||
|  |       skip_import_rotation: false, | ||||||
|       type: 'static', |       type: 'static', | ||||||
|       name: 'my-static-role', |       name: 'my-static-role', | ||||||
|       id: 'my-static-role', |       id: 'my-static-role', | ||||||
| @@ -58,6 +59,31 @@ module('Integration | Component | database-role-edit', function (hooks) { | |||||||
|     await click('[data-test-secret-save]'); |     await click('[data-test-secret-save]'); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  |   test('it should successfully create user with skip import rotation', async function (assert) { | ||||||
|  |     this.server.post('/sys/capabilities-self', capabilitiesStub('database/static-creds/my-role', ['create'])); | ||||||
|  |     this.server.post(`/database/static-roles/my-static-role`, (schema, req) => { | ||||||
|  |       assert.true(true, 'request made to create static role'); | ||||||
|  |       assert.propEqual( | ||||||
|  |         JSON.parse(req.requestBody), | ||||||
|  |         { | ||||||
|  |           path: 'static-roles', | ||||||
|  |           username: 'staticTestUser', | ||||||
|  |           rotation_period: '172800s', // 2 days in seconds | ||||||
|  |           skip_import_rotation: true, | ||||||
|  |         }, | ||||||
|  |         'it creates a static role with correct payload' | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     await render(hbs`<DatabaseRoleEdit @model={{this.modelStatic}} @mode="create"/>`); | ||||||
|  |     await fillIn('[data-test-ttl-value="Rotation period"]', '2'); | ||||||
|  |     await click('[data-test-input="skip_import_rotation"]'); | ||||||
|  |     await click('[data-test-secret-save]'); | ||||||
|  |  | ||||||
|  |     await render(hbs`<DatabaseRoleEdit @model={{this.modelStatic}} @mode="show"/>`); | ||||||
|  |     assert.dom('[data-test-value-div="Skip initial rotation"]').containsText('Yes'); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|   test('it should show Get credentials button when a user has the correct policy', async function (assert) { |   test('it should show Get credentials button when a user has the correct policy', async function (assert) { | ||||||
|     this.server.post('/sys/capabilities-self', capabilitiesStub('database/static-creds/my-role', ['read'])); |     this.server.post('/sys/capabilities-self', capabilitiesStub('database/static-creds/my-role', ['read'])); | ||||||
|     await render(hbs`<DatabaseRoleEdit @model={{this.modelStatic}} @mode="show"/>`); |     await render(hbs`<DatabaseRoleEdit @model={{this.modelStatic}} @mode="show"/>`); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Dan Rivera
					Dan Rivera