NIFI-15941: Allow verification to be re-attempted even if there are A…#11251
Merged
Conversation
…PI errors present.
rfellows
approved these changes
May 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…PI errors present.
Summary
NIFI-15941
Allow users to re-submit a Verify request in the Connector wizard after a prior backend (API) verification failure without first having to modify form values.
Problem
The
SharedConnectorConfigurationStep"Verify" button is gated bystepForm.valid. When a previous Verify call returned per-field errors, the wizard store projected those errors onto the corresponding form controls under averificationErrorkey viaverificationErrorValidator. That madestepForm.valid === false, which permanently blocked the Verify button — even though the failures are typically caused by external conditions (network, permissions, mis-provisioned external resource, etc.) that the user cannot resolve by editing the form. The only workaround was to mutate an unrelated value to trigger an error clear, which is a poor user experience.Change
VERIFICATION_ERROR_KEY = 'verificationError'and routeverificationErrorValidator's error key through it, so the contract between this validator and the verify gate is named in one place. The matching template literal inconnector-property-input.component.htmlis documented next to the constant.isClientValid()predicate that walks the form controls and treats a control as "valid for verify" if it is disabled (mirrorsFormGroup.validbehavior for dependency-hidden properties), valid, or carries only theverificationErrorkey.canVerifyandonVerify()now consultisClientValid()instead ofstepForm.valid, so prior API verification errors no longer block Verify while genuine client-side errors (required,pattern, etc.) still do.updateFormValidityForVerificationErrors()to iterate every form control rather than only the keys in the current error signal. Previously, when the signal cleared (successful verify, verify start), controls still carrying a staleverificationErrorfrom a prior subscription emission were never re-validated, so the error key lingered visually. The new version handles both directions: new errors and stale errors.Tests
Added a
verify gatedescribe block toconnector-configuration-step.component.spec.tswith 10 cases covering:canVerify === true.canVerify === true,stepForm.valid === false, control reportsverificationError.canVerify === false.canVerify === true(disabled control bypassed, mirroringFormGroup.valid).canVerify === false(client error wins).canVerify === false.onVerify()dispatchesverifyStepwhen only API errors remain.onVerify()does not dispatch when a client error exists.verificationErroris cleared when the store signal empties (successful verify path).{host: ...}to{port: ...}.