From efe4d626eee6b9251244cddb6909891d5c4e42b8 Mon Sep 17 00:00:00 2001 From: claire bontempo <68122737+hellobontempo@users.noreply.github.com> Date: Wed, 22 Feb 2023 07:07:29 -0800 Subject: [PATCH] UI: fixes validation bug in sign certificate form (#19280) * move validations to base certificate * add test --- ui/app/models/pki/certificate/generate.js | 6 ----- .../pki/addon/components/pki-role-generate.ts | 12 +++------ .../components/pki-role-generate-test.js | 25 +------------------ .../models/pki/certificate/generate.d.ts | 8 ++---- .../vault/models/pki/certificate/sign.d.ts | 3 +++ 5 files changed, 9 insertions(+), 45 deletions(-) create mode 100644 ui/types/vault/models/pki/certificate/sign.d.ts diff --git a/ui/app/models/pki/certificate/generate.js b/ui/app/models/pki/certificate/generate.js index dafefde4057c..d508e7eb52ac 100644 --- a/ui/app/models/pki/certificate/generate.js +++ b/ui/app/models/pki/certificate/generate.js @@ -1,6 +1,5 @@ import { attr } from '@ember-data/model'; import { withFormFields } from 'vault/decorators/model-form-fields'; -import { withModelValidations } from 'vault/decorators/model-validations'; import PkiCertificateBaseModel from './base'; const generateFromRole = [ @@ -21,11 +20,6 @@ const generateFromRole = [ ], }, ]; -const validations = { - commonName: [{ type: 'presence', message: 'Common name is required.' }], -}; - -@withModelValidations(validations) @withFormFields(null, generateFromRole) export default class PkiCertificateGenerateModel extends PkiCertificateBaseModel { getHelpUrl(backend) { diff --git a/ui/lib/pki/addon/components/pki-role-generate.ts b/ui/lib/pki/addon/components/pki-role-generate.ts index d8928bdc4c70..99cc3e1649f3 100644 --- a/ui/lib/pki/addon/components/pki-role-generate.ts +++ b/ui/lib/pki/addon/components/pki-role-generate.ts @@ -9,10 +9,11 @@ import errorMessage from 'vault/utils/error-message'; import FlashMessageService from 'vault/services/flash-messages'; import DownloadService from 'vault/services/download'; import PkiCertificateGenerateModel from 'vault/models/pki/certificate/generate'; +import PkiCertificateSignModel from 'vault/models/pki/certificate/sign'; interface Args { onSuccess: CallableFunction; - model: PkiCertificateGenerateModel; + model: PkiCertificateGenerateModel | PkiCertificateSignModel; type: string; } @@ -24,7 +25,6 @@ export default class PkiRoleGenerate extends Component { @tracked errorBanner = ''; @tracked invalidFormAlert = ''; - @tracked modelValidations = null; get verb() { return this.args.type === 'sign' ? 'sign' : 'generate'; @@ -35,18 +35,12 @@ export default class PkiRoleGenerate extends Component { evt.preventDefault(); this.errorBanner = ''; const { model, onSuccess } = this.args; - const { isValid, state, invalidFormMessage } = model.validate(); - - this.modelValidations = isValid ? null : state; - this.invalidFormAlert = invalidFormMessage; - - if (!isValid) return; - try { yield model.save(); onSuccess(); } catch (err) { this.errorBanner = errorMessage(err, `Could not ${this.verb} certificate. See Vault logs for details.`); + this.invalidFormAlert = 'There was an error submitting this form.'; } } diff --git a/ui/tests/integration/components/pki-role-generate-test.js b/ui/tests/integration/components/pki-role-generate-test.js index 35b90507a8c2..216a0b275efe 100644 --- a/ui/tests/integration/components/pki-role-generate-test.js +++ b/ui/tests/integration/components/pki-role-generate-test.js @@ -1,6 +1,6 @@ import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; -import { render, fillIn, click } from '@ember/test-helpers'; +import { render, fillIn } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; import { setupMirage } from 'ember-cli-mirage/test-support'; import { setupEngine } from 'ember-engines/test-support'; @@ -69,27 +69,4 @@ module('Integration | Component | pki-role-generate', function (hooks) { assert.dom(SELECTORS.certificate).exists({ count: 1 }, 'shows certificate info row'); assert.dom(SELECTORS.serialNumber).hasText('abcd-efgh-ijkl', 'shows serial number info row'); }); - - test('it should display validation errors', async function (assert) { - assert.expect(3); - - await render( - hbs` -
- -
- `, - { owner: this.engine } - ); - await click(SELECTORS.generateButton); - - assert - .dom(SELECTORS.commonNameInlineError) - .hasText('Common name is required.', 'Common name validation error renders'); - assert.dom(SELECTORS.inlineAlert).hasText('There is an error with this form.', 'Alert renders'); - assert.dom(SELECTORS.commonNameErrorBorder).hasClass('has-error-border'); - }); }); diff --git a/ui/types/vault/models/pki/certificate/generate.d.ts b/ui/types/vault/models/pki/certificate/generate.d.ts index 089261a09a82..ab7c9d983ad4 100644 --- a/ui/types/vault/models/pki/certificate/generate.d.ts +++ b/ui/types/vault/models/pki/certificate/generate.d.ts @@ -1,14 +1,10 @@ -import Model from '@ember-data/model'; import { FormField } from 'vault/app-types'; +import PkiCertificateBaseModel from './base'; -export default class PkiCertificateGenerateModel extends Model { +export default class PkiCertificateGenerateModel extends PkiCertificateBaseModel { name: string; - backend: string; - serialNumber: string; - certificate: string; formFields: FormField[]; formFieldsGroup: { [k: string]: FormField[]; }[]; - validate(): ModelValidations; } diff --git a/ui/types/vault/models/pki/certificate/sign.d.ts b/ui/types/vault/models/pki/certificate/sign.d.ts new file mode 100644 index 000000000000..27d4b166d4a8 --- /dev/null +++ b/ui/types/vault/models/pki/certificate/sign.d.ts @@ -0,0 +1,3 @@ +import PkiCertificateBaseModel from './base'; + +export default class PkiCertificateGenerateModel extends PkiCertificateBaseModel {}