E5F6 fix: handle infinite values and fail validation · adonisjs/validator@d1b41ae · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit d1b41ae

Browse files
authored
fix: handle infinite values and fail validation
1 parent aded920 commit d1b41ae

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/Validations/primitives/number.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ export const number: SyncValidation = {
4242
return
4343
}
4444

45+
if (castedValue === Infinity || castedValue === -Infinity) {
46+
errorReporter.report(pointer, RULE_NAME, DEFAULT_MESSAGE, arrayExpressionPointer)
47+
return
48+
}
49+
4550
/**
4651
* Mutate the value
4752
*/

test/validations/number.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,33 @@ function compile() {
2121
test.group('Number', () => {
2222
validate(number, test, 'helloworld', 10, compile())
2323

24+
test('report error when value is near Infinity', ({ assert }) => {
25+
const reporter = new ApiErrorReporter(new MessagesBag({}), false)
26+
number.validate(
27+
'-3177777777777777777777777777777777777777777777777777777777777777777777777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
28+
compile().compiledOptions,
29+
{
30+
errorReporter: reporter,
31+
field: 'age',
32+
pointer: 'age',
33+
tip: {},
34+
root: {},
35+
refs: {},
36+
mutate: () => {},
37+
}
38+
)
39+
40+
assert.deepEqual(reporter.toJSON(), {
41+
errors: [
42+
{
43+
field: 'age',
44+
rule: 'number',
45+
message: 'number validation failed',
46+
},
47+
],
48+
})
49+
})
50+
2451
test('report error when value is not a valid number', ({ assert }) => {
2552
const reporter = new ApiErrorReporter(new MessagesBag({}), false)
2653
number.validate(null, compile().compiledOptions, {

0 commit comments

Comments
 (0)
0