Use AJV to validate User
JSON when getting a User
by ID
#1464
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.
This PR introduces the AJV library, which we can use to validate JSON objects, i.e., confirm that they have all the right fields. At the moment, for example, the server could send any kind of weird stuff back when we request a
User
, and the Angular code never really checks that or generates a meaningful error.This PR should be considered the start of a process, only checking one specific case, namely checking that the object
UserService#getUserById
receives from the HTTP request is actually an instance of theUser
type. If we merge this in, we would then want to do create issues for additional validation.The "important" parts of this PR are:
ajv
"strictNullChecks": true
intsconfig.json
ajv
to work; without it AJV can't tell properly distinguish between required and optional fields (I think).user.ts
_id
field to optional since there are number places where we have aUser
without an ID. Themain one is when someone enters a new
User
in a form, that won't (yet) have an ID. It's also an issue insome of the tests, where we don't provide a ID.
user-role.ts
UserRole
out into its own file while we were here