Fixed the required field validation error - #565
Conversation
Signed-off-by: ase-101 <sunkadaeanusha@gmail.com>
Signed-off-by: ase-101 <sunkadaeanusha@gmail.com>
Signed-off-by: ase-101 <sunkadaeanusha@gmail.com>
WalkthroughThe pull request removes the explicit non-mandatory fields configuration from the mock identity system and refactors validation logic to dynamically derive error codes from validation messages instead of using a predefined configuration field. Documentation is updated to clarify that non-mandatory fields are validated only when present during updates. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
mock-identity-system/README.md (1)
77-83:⚠️ Potential issue | 🟡 MinorRemove the stale reference to the deleted update config property.
Line 82 still references
mosip.mock.ida.update-identity.non-mandatory.fields, but that property was removed. This makes the update-validation behavior unclear for users configuring the service.Suggested README wording update
How It Works * For create operations: 1. The system validates all fields present in the identity data against the schema defined in mock-identity-schema.json. * For update operations: - 1. The system first validates all mandatory fields against the main schema. - 2. Non-mandatory fields specified in mosip.mock.ida.update-identity.non-mandatory.fields are ignored during validation. - 3. If the non-mandatory fields are present, they are validated against the schema. + 1. The system validates update payload fields against the main schema. + 2. Missing optional fields are not treated as update errors. + 3. Optional fields, when present in the payload, must satisfy schema constraints.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@mock-identity-system/README.md` around lines 77 - 83, Remove the stale reference to the deleted config property mosip.mock.ida.update-identity.non-mandatory.fields in the "For update operations" section and update the wording to reflect current behavior: state that the system validates mandatory fields against mock-identity-schema.json and that any optional/non-mandatory fields present in the payload are also validated against the schema (no config toggle required); ensure the step list under "For update operations" mentions validation of mandatory fields and validation of present optional fields against mock-identity-schema.json, removing any mention of the removed property.
🧹 Nitpick comments (1)
mock-identity-system/src/main/java/io/mosip/esignet/mock/identitysystem/validator/IdentitySchemaValidator.java (1)
68-68: Update the inline comment to match current logic.Line 68 still says errors are ignored “for exempted fields,” but the field-based exemption path is no longer present. Keeping this comment will cause maintenance confusion.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@mock-identity-system/src/main/java/io/mosip/esignet/mock/identitysystem/validator/IdentitySchemaValidator.java` at line 68, Update the misleading inline comment in IdentitySchemaValidator (near the validation branch that ignores error code 1028) so it reflects the current logic: state that validation errors with code 1028 (null value) are ignored only when validating updateIdentity, and remove any mention of "exempted fields" or field-based exemptions; update the comment text adjacent to the code handling error code 1028 in the class to clearly describe this behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@mock-identity-system/src/main/java/io/mosip/esignet/mock/identitysystem/validator/IdentitySchemaValidator.java`:
- Around line 83-87: The method getErrorCodeFromValidationMessage currently
returns the literal "unknown_field" which isn't defined in the message/catalog;
replace that literal with the canonical fallback constant from ErrorConstants
(use the appropriate constant such as the project’s UNKNOWN_FIELD or
GENERIC_UNKNOWN_FIELD constant) so the validator returns a message key that
exists in messages.properties; update the return in
getErrorCodeFromValidationMessage to return ErrorConstants.<canonical_fallback>
(add the import if needed) and ensure messages.properties contains that key.
- Around line 67-71: The current UPDATE branch in IdentitySchemaValidator
unconditionally removes all errors with code "1028" (required-field violations);
change this to only ignore "1028" when the violation targets an exempted field
for updates: remove the broad filter on error.getCode().equals("1028") and
instead filter by both code and the specific field/path (e.g., inspect
error.getPath() or error.getMessage()) against your exemptedFields set so only
those required-field errors are suppressed; update the inline comment to
accurately state that 1028 represents missing required properties and that only
exemptions for specific fields during UPDATE are skipped.
---
Outside diff comments:
In `@mock-identity-system/README.md`:
- Around line 77-83: Remove the stale reference to the deleted config property
mosip.mock.ida.update-identity.non-mandatory.fields in the "For update
operations" section and update the wording to reflect current behavior: state
that the system validates mandatory fields against mock-identity-schema.json and
that any optional/non-mandatory fields present in the payload are also validated
against the schema (no config toggle required); ensure the step list under "For
update operations" mentions validation of mandatory fields and validation of
present optional fields against mock-identity-schema.json, removing any mention
of the removed property.
---
Nitpick comments:
In
`@mock-identity-system/src/main/java/io/mosip/esignet/mock/identitysystem/validator/IdentitySchemaValidator.java`:
- Line 68: Update the misleading inline comment in IdentitySchemaValidator (near
the validation branch that ignores error code 1028) so it reflects the current
logic: state that validation errors with code 1028 (null value) are ignored only
when validating updateIdentity, and remove any mention of "exempted fields" or
field-based exemptions; update the comment text adjacent to the code handling
error code 1028 in the class to clearly describe this behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 05e812fa-3217-4f7f-9ff0-20895e93a936
📒 Files selected for processing (3)
mock-identity-system/README.mdmock-identity-system/src/main/java/io/mosip/esignet/mock/identitysystem/validator/IdentitySchemaValidator.javamock-identity-system/src/main/resources/application-default.properties
💤 Files with no reviewable changes (1)
- mock-identity-system/src/main/resources/application-default.properties
* Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed required fields validation error Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com>
* Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed required fields validation error Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com>
* [ES-2881] Merge pull request #555 from Infosys/ES-2881 [ES-2881] Added PKCE implementation in mock relying party. Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> * Added endpoint to fetch identity schema (#564) * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed testcase Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> * Fixed the required field validation error (#565) * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed required fields validation error Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> * ES-2799 Merge pull request #557 from ase-101/develop ES-2799 Corrected the logic to full dynamic identity schema Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> * updated readme Signed-off-by: sajid.mannikeri <sajid.mannikeri@infosys.com> Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> * readme update Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> --------- Signed-off-by: SajidMannikeri17 <sajid.mannikeri@infosys.com> Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> Signed-off-by: sajid.mannikeri <sajid.mannikeri@infosys.com> Co-authored-by: ase-101 <sunkadaeanusha@gmail.com> Co-authored-by: Zeeshan Mehboob <82993262+zesu22@users.noreply.github.com>
* Added PKCE implementation Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * fixed coderabbit comment Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * Corrected the logic to full dynamic identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed review comments Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * added proxy pass for par and dpop (#554) Signed-off-by: Harsh Kashiwal <harsh.kashiwal@infosys.com> * resolved comments Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * resolved review comment Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * resolve review comments Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * set active_profile_env to "default" in deployment (#558) (#560) Signed-off-by: Sachin Rana <sacrana324@gmail.com> * docs: fix typos, remove duplicate overview, and improve README formatting (#561) (#563) Signed-off-by: Nandhukumar <nandhukumare@gmail.com> * Added endpoint to fetch identity schema (#564) * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed testcase Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed the required field validation error (#565) * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Added endpoint to fetch identity schema Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Fixed required fields validation error Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> --------- Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> * Snapshot updates 0.13.0 -> 0.13.1 Signed-off-by: Harsh Kashiwal <kashiwalharsh1234@gmail.com> * [ES-2962] Added error messages for login_required and request_not_supported error. Signed-off-by: GurukiranP <talk2gurukiran@gmail.com> * [ES-1616] Added new error message. Signed-off-by: GurukiranP <talk2gurukiran@gmail.com> * [MOSIP-37808] Updated DB attributes of MOSIP esignet-mock Signed-off-by: Abhi <abhishek.shankarcs@gmail.com> * [MOSIP-37808] Updated DB attributes of MOSIP esignet-mock (#579) Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> * Updating sign-in-with-esignet, removing optional parameter from config (#590) * [MODIFIED] used npm library for sign-in-with-esignet Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [MODIFIED] ignore optional parameter in sign-in-with-esignet Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [MODIFIED] readme file Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [MODIFIED] coderabbit comment resolved Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [MODIFIED] review comment addressed Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [MODIFIED] readme updated Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> --------- Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [1996] added configurable token and userinfo endpoint (#591) * [1996] added configurable token and userinfo endpoint Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [1996] add kid only, if private key has it Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [1996] default value of token & userinfo endpoint Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> --------- Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [1966] bypass for json userInfoResponse (#592) * [1966] bypass for json userInfoResponse Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [1966] bypass for json userInfoResponse Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> --------- Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> * [mosip/mosip-infra#1890] Added domainConfig support in helm charts (#589) * [mosip/mosip-infra#1890] Removed esignet-global, added domainConfig support in helm charts Signed-off-by: bhumi46 <thisisbn46@gmail.com> * [mosip/mosip-infra#1890] Set chart versions to 0.0.1-develop Signed-off-by: bhumi46 <thisisbn46@gmail.com> * migrate to domainConfig helm values #1890 Signed-off-by: bhumi46 <thisisbn46@gmail.com> --------- Signed-off-by: bhumi46 <thisisbn46@gmail.com> Co-authored-by: bhumi46 <bhumi11111a@gmail.com> * Gpg update Test (#596) * ci: point kattu maven workflows at @develop to test kattu#353 Repoints maven-build / maven-publish-to-nexus / maven-sonar-analysis(-new) reusable-workflow references to mosip/kattu@develop so the GPG-key-import migration (mosip/kattu#353) is exercised by this repo's CI once it merges. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> * ci: pass GPG_PRIVATE_KEY secret from caller workflows (kattu#353) kattu#353 imports the signing key from the GPG_PRIVATE_KEY secret (now required: true in maven-build / maven-publish-to-nexus workflow_call), so the caller must forward it. Added GPG_PRIVATE_KEY to the maven-build and maven-publish-to-nexus caller jobs only (sonar workflows don't declare it). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> * ci: point maven workflows at Mahesh-Binayak/kattu@gpgupdate-masterj21 gpgupdate-masterj21 = master-java21 + the GPG-secret-import / key-age / simplify4u-pgpverify changes, keeping master-java21's interface intact. Repoints maven-build / maven-publish-to-nexus / maven-sonar-analysis to it, restores MAVEN_NON_EXEC_ARTIFACTS, and forwards GPG_PRIVATE_KEY to the build/publish jobs. Other workflows (docker-build, npm-*, sonar-new@develop) and commented refs are left unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> * ci: point maven workflows at mosip/kattu@gpgupdate-masterj21 The gpgupdate-masterj21 branch now lives on mosip/kattu; reference it there instead of the fork. Interface unchanged; GPG_PRIVATE_KEY forwarded. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> --------- Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * [issue:1963] Updated helm for thunder deployment (#593) Signed-off-by: Prafulrakhade <prafulrakhade02@gmail.com> * [issue:597] Add PKCS12 keystore support to mock-identity-system as an alternative to SoftHSM (#599) install.sh now prompts to opt into a PKCS12 mounted-volume keystore instead of SoftHSM; SoftHSM provisioning only runs when PKCS12 isn't selected. The chart gained a PersistentVolumeClaim template, a fixed volume-permissions init container (was a literal unfilled placeholder), persistence volume wiring in the deployment, and additive extraEnvVarsAdditional support. Signed-off-by: Swapnil <swapnil.mohanty@technoforte.co.in> * Fix default prompt value (#600) Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> Co-authored-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> * #10670: Add AGENTS.md tree for AI coding assistant guidance Adds a root AGENTS.md hub covering the repository as a whole, plus per-module AGENTS.md guides for mock-identity-system, mock-relying-party-service, mock-relying-party-ui, mock-relying-party-ui-esim, and partner-onboarder — the independently buildable modules in this repo. Each guide documents purpose, layout, how to run/build/test, configuration, and explicit agent do/do-not rules, verified against the actual READMEs, pom.xml/package.json files, and GitHub Actions workflows in this repo. Addresses mosip/mosip-config#10670 Signed-off-by: Chetan Kumar Hirematha <chetankumar.h.239@gmail.com> * #10670: Address CodeRabbit review feedback on AGENTS.md - Stop prescribing npm test for every Node/React module; point to each module's own AGENTS.md/README.md since scripts differ (mock-relying-party-service has no test script at all). - Fix docker-compose path in mock-identity-system/AGENTS.md: from the repo root it's docker-compose/, not ../docker-compose/. - Use MOCK_RELYING_PARTY_SERVER_URL in the mock-relying-party-ui-esim Docker example, matching the variable the Dockerfile/UI actually read (MOCK_RELYING_PARTY_BASE_URL has no effect). - Note that partner-onboarder targets a non-production eSignet deployment only, per the root README's repo-wide scope. Addresses review comments on #601 Signed-off-by: Chetan Kumar Hirematha <chetankumar.h.239@gmail.com> * fix: 602 convert extraEnvVars/extraEnvVarsAdditional to maps (#603) * fix: 602 convert extraEnvVars/extraEnvVarsAdditional to maps Helm merges map keys across values layers but replaces lists wholesale, so any downstream override of extraEnvVars/extraEnvVarsAdditional had to re-declare the whole list just to change one entry. Convert both to maps keyed by env var name in mock-identity-system, mock-relying-party-service, and mock-relying-party-ui, and render them with a range loop that auto-detects plain scalars vs. valueFrom, matching the existing domainConfig pattern already used in these charts. Same fix already applied to mosip/esignet (issue #2380). Signed-off-by: bhumi46 <thisisbn46@gmail.com> * fix: 602 update mock-identity-system installer for extraEnvVarsAdditional map contract deploy/mock-identity-system/install.sh generated extraEnvVarsAdditional as a list in two places (PKCS12 and softhsm branches), which produced broken index-keyed env entries against the chart's map-shaped default introduced in this PR. Convert both to the map contract (KEY: value / KEY: {valueFrom: ...}), matching the fix already applied to esignet's legacy installer scripts. Signed-off-by: bhumi46 <thisisbn46@gmail.com> --------- Signed-off-by: bhumi46 <thisisbn46@gmail.com> * Change image tag from release-0.10.x to develop Signed-off-by: Praful Rakhade <prafulrakhade02@gmail.com> * Change image tag from release-0.10.x to develop Signed-off-by: Praful Rakhade <prafulrakhade02@gmail.com> * Change image tag from release-0.10.x to develop Signed-off-by: Praful Rakhade <prafulrakhade02@gmail.com> * #2347 Update database host and clean up configuration (#610) Updated the host to include the namespace and removed unused service configurations. Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> * #2347 Update database username in postgres config (#611) * #2347 Update database username in postgres config Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> * #2347 Update database username in deploy.properties Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> --------- Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> * updated version 0.13.0 to 0.14.0 Signed-off-by: Sachin Rana <sacrana324@gmail.com> * updated helm chart version Signed-off-by: Sachin Rana <sacrana324@gmail.com> --------- Signed-off-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> Signed-off-by: ase-101 <sunkadaeanusha@gmail.com> Signed-off-by: Harsh Kashiwal <harsh.kashiwal@infosys.com> Signed-off-by: Sachin Rana <sacrana324@gmail.com> Signed-off-by: Nandhukumar <nandhukumare@gmail.com> Signed-off-by: Harsh Kashiwal <kashiwalharsh1234@gmail.com> Signed-off-by: GurukiranP <talk2gurukiran@gmail.com> Signed-off-by: Abhi <abhishek.shankarcs@gmail.com> Signed-off-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> Signed-off-by: Zeeshan Mehboob <zeeshan.mehboob@infosys.com> Signed-off-by: bhumi46 <thisisbn46@gmail.com> Signed-off-by: Mahesh.Binayak <mahesh.binayak@technoforte.co.in> Signed-off-by: Prafulrakhade <prafulrakhade02@gmail.com> Signed-off-by: Swapnil <swapnil.mohanty@technoforte.co.in> Signed-off-by: Chetan Kumar Hirematha <chetankumar.h.239@gmail.com> Signed-off-by: Praful Rakhade <prafulrakhade02@gmail.com> Co-authored-by: Sajid Mannikeri <sajid.mannikeri@ad.infosys.com> Co-authored-by: ase-101 <sunkadaeanusha@gmail.com> Co-authored-by: Zeeshan Mehboob <82993262+zesu22@users.noreply.github.com> Co-authored-by: Harsh Kashiwal <77677724+KashiwalHarsh@users.noreply.github.com> Co-authored-by: Nandhukumar <nandhukumare@gmail.com> Co-authored-by: Harsh Kashiwal <kashiwalharsh1234@gmail.com> Co-authored-by: GurukiranP <talk2gurukiran@gmail.com> Co-authored-by: Abhi <abhishek.shankarcs@gmail.com> Co-authored-by: Chandra Keshav Mishra <chandrakeshavmishra@gmail.com> Co-authored-by: Abhishek S <127825992+abhishek8shankar@users.noreply.github.com> Co-authored-by: bhumi46 <111699703+bhumi46@users.noreply.github.com> Co-authored-by: bhumi46 <bhumi11111a@gmail.com> Co-authored-by: Mahesh-Binayak <76687012+Mahesh-Binayak@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Praful Rakhade <prafulrakhade02@gmail.com> Co-authored-by: Swapnil <swapnil.mohanty@technoforte.co.in> Co-authored-by: Sajid Mannikeri <sajid.mannikeri@infosys.com> Co-authored-by: Chetan Kumar Hirematha <chetankumar.h.239@gmail.com>



Summary by CodeRabbit
Documentation
Refactor