Skip to content

Commit 80332ad

Browse files
Merge pull request #164 from secvisogram/chore/dependency-updates
Chore/dependency updates
2 parents df37747 + 06b8932 commit 80332ad

File tree

11 files changed

+216
-157
lines changed

11 files changed

+216
-157
lines changed

backend/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

csaf-validator-lib/README.md

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -311,17 +311,17 @@ The following tests are not yet implemented and therefore missing:
311311
312312
**Mandatory Tests**
313313
314+
- Mandatory Test 6.1.6
314315
- Mandatory Test 6.1.14
315316
- Mandatory Test 6.1.16
317+
- Mandatory Test 6.1.26
316318
- Mandatory Test 6.1.27.12
317319
- Mandatory Test 6.1.27.13
318-
- Mandatory Test 6.1.27.14
319320
- Mandatory Test 6.1.27.15
320321
- Mandatory Test 6.1.27.16
321322
- Mandatory Test 6.1.27.17
322323
- Mandatory Test 6.1.27.18
323324
- Mandatory Test 6.1.27.19
324-
- Mandatory Test 6.1.36
325325
- Mandatory Test 6.1.42
326326
- Mandatory Test 6.1.43
327327
- Mandatory Test 6.1.44
@@ -339,32 +339,34 @@ The following tests are not yet implemented and therefore missing:
339339
340340
**Recommended Tests**
341341
342-
- Recommeded Test 6.2.21
343-
- Recommeded Test 6.2.22
344-
- Recommeded Test 6.2.23
345-
- Recommeded Test 6.2.24
346-
- Recommeded Test 6.2.25
347-
- Recommeded Test 6.2.26
348-
- Recommeded Test 6.2.27
349-
- Recommeded Test 6.2.28
350-
- Recommeded Test 6.2.29
351-
- Recommeded Test 6.2.30
352-
- Recommeded Test 6.2.31
353-
- Recommeded Test 6.2.32
354-
- Recommeded Test 6.2.33
355-
- Recommeded Test 6.2.34
356-
- Recommeded Test 6.2.35
357-
- Recommeded Test 6.2.36
358-
- Recommeded Test 6.2.37
359-
- Recommeded Test 6.2.38
360-
- Recommeded Test 6.2.39
361-
- Recommeded Test 6.2.40
362-
- Recommeded Test 6.2.41
363-
- Recommeded Test 6.2.42
364-
- Recommeded Test 6.2.43
365-
- Recommeded Test 6.2.44
366-
- Recommeded Test 6.2.45
367-
- Recommeded Test 6.2.46
342+
- Recommended Test 6.2.11
343+
- Recommended Test 6.2.19
344+
- Recommended Test 6.2.20
345+
- Recommended Test 6.2.21
346+
- Recommended Test 6.2.23
347+
- Recommended Test 6.2.24
348+
- Recommended Test 6.2.25
349+
- Recommended Test 6.2.26
350+
- Recommended Test 6.2.27
351+
- Recommended Test 6.2.28
352+
- Recommended Test 6.2.29
353+
- Recommended Test 6.2.30
354+
- Recommended Test 6.2.31
355+
- Recommended Test 6.2.32
356+
- Recommended Test 6.2.33
357+
- Recommended Test 6.2.34
358+
- Recommended Test 6.2.35
359+
- Recommended Test 6.2.36
360+
- Recommended Test 6.2.37
361+
- Recommended Test 6.2.38
362+
- Recommended Test 6.2.39
363+
- Recommended Test 6.2.40
364+
- Recommended Test 6.2.41
365+
- Recommended Test 6.2.42
366+
- Recommended Test 6.2.43
367+
- Recommended Test 6.2.44
368+
- Recommended Test 6.2.45
369+
- Recommended Test 6.2.46
368370
369371
**Informative Tests**
370372
@@ -392,7 +394,6 @@ export const mandatoryTest_6_1_2: DocumentTest
392394
export const mandatoryTest_6_1_3: DocumentTest
393395
export const mandatoryTest_6_1_4: DocumentTest
394396
export const mandatoryTest_6_1_5: DocumentTest
395-
export const mandatoryTest_6_1_6: DocumentTest
396397
export const mandatoryTest_6_1_7: DocumentTest
397398
export const mandatoryTest_6_1_8: DocumentTest
398399
export const mandatoryTest_6_1_9: DocumentTest
@@ -410,7 +411,6 @@ export const mandatoryTest_6_1_22: DocumentTest
410411
export const mandatoryTest_6_1_23: DocumentTest
411412
export const mandatoryTest_6_1_24: DocumentTest
412413
export const mandatoryTest_6_1_25: DocumentTest
413-
export const mandatoryTest_6_1_26: DocumentTest
414414
export const mandatoryTest_6_1_27_1: DocumentTest
415415
export const mandatoryTest_6_1_27_2: DocumentTest
416416
export const mandatoryTest_6_1_27_3: DocumentTest
@@ -422,6 +422,7 @@ export const mandatoryTest_6_1_27_8: DocumentTest
422422
export const mandatoryTest_6_1_27_9: DocumentTest
423423
export const mandatoryTest_6_1_27_10: DocumentTest
424424
export const mandatoryTest_6_1_27_11: DocumentTest
425+
export const mandatoryTest_6_1_27_14: DocumentTest
425426
export const mandatoryTest_6_1_28: DocumentTest
426427
export const mandatoryTest_6_1_29: DocumentTest
427428
export const mandatoryTest_6_1_30: DocumentTest
@@ -430,6 +431,7 @@ export const mandatoryTest_6_1_32: DocumentTest
430431
export const mandatoryTest_6_1_33: DocumentTest
431432
export const mandatoryTest_6_1_34: DocumentTest
432433
export const mandatoryTest_6_1_35: DocumentTest
434+
export const mandatoryTest_6_1_36: DocumentTest
433435
export const mandatoryTest_6_1_37: DocumentTest
434436
export const mandatoryTest_6_1_38: DocumentTest
435437
export const mandatoryTest_6_1_39: DocumentTest
@@ -452,16 +454,13 @@ export const recommendedTest_6_2_7: DocumentTest
452454
export const recommendedTest_6_2_8: DocumentTest
453455
export const recommendedTest_6_2_9: DocumentTest
454456
export const recommendedTest_6_2_10: DocumentTest
455-
export const recommendedTest_6_2_11: DocumentTest
456457
export const recommendedTest_6_2_12: DocumentTest
457458
export const recommendedTest_6_2_13: DocumentTest
458459
export const recommendedTest_6_2_14: DocumentTest
459460
export const recommendedTest_6_2_15: DocumentTest
460461
export const recommendedTest_6_2_16: DocumentTest
461462
export const recommendedTest_6_2_17: DocumentTest
462463
export const recommendedTest_6_2_18: DocumentTest
463-
export const recommendedTest_6_2_19: DocumentTest
464-
export const recommendedTest_6_2_20: DocumentTest
465464
export const recommendedTest_6_2_22: DocumentTest
466465
```
467466

csaf-validator-lib/csaf_2_1/informativeTests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ export {
99
informativeTest_6_3_11,
1010
} from '../informativeTests.js'
1111
export { informativeTest_6_3_1 } from './informativeTests/informativeTest_6_3_1.js'
12-
export { informativeTest_6_3_4 } from './informativeTests/informativeTest_6_3_4.js'
1312
export { informativeTest_6_3_2 } from './informativeTests/informativeTest_6_3_2.js'
13+
export { informativeTest_6_3_4 } from './informativeTests/informativeTest_6_3_4.js'

csaf-validator-lib/csaf_2_1/mandatoryTests.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,13 @@ export {
3737
export { mandatoryTest_6_1_1 } from './mandatoryTests/mandatoryTest_6_1_1.js'
3838
export { mandatoryTest_6_1_7 } from './mandatoryTests/mandatoryTest_6_1_7.js'
3939
export { mandatoryTest_6_1_8 } from './mandatoryTests/mandatoryTest_6_1_8.js'
40+
export { mandatoryTest_6_1_9 } from './mandatoryTests/mandatoryTest_6_1_9.js'
41+
export { mandatoryTest_6_1_10 } from './mandatoryTests/mandatoryTest_6_1_10.js'
4042
export { mandatoryTest_6_1_11 } from './mandatoryTests/mandatoryTest_6_1_11.js'
4143
export { mandatoryTest_6_1_13 } from './mandatoryTests/mandatoryTest_6_1_13.js'
42-
export { mandatoryTest_6_1_10 } from './mandatoryTests/mandatoryTest_6_1_10.js'
44+
export { mandatoryTest_6_1_27_14 } from './mandatoryTests/mandatoryTest_6_1_27_14.js'
4345
export { mandatoryTest_6_1_34 } from './mandatoryTests/mandatoryTest_6_1_34.js'
4446
export { mandatoryTest_6_1_35 } from './mandatoryTests/mandatoryTest_6_1_35.js'
45-
export { mandatoryTest_6_1_9 } from './mandatoryTests/mandatoryTest_6_1_9.js'
4647
export { mandatoryTest_6_1_36 } from './mandatoryTests/mandatoryTest_6_1_36.js'
4748
export { mandatoryTest_6_1_37 } from './mandatoryTests/mandatoryTest_6_1_37.js'
4849
export { mandatoryTest_6_1_38 } from './mandatoryTests/mandatoryTests_6_1_38.js'
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import Ajv from 'ajv/dist/jtd.js'
2+
3+
const ajv = new Ajv()
4+
5+
/*
6+
This is the jtd schema that needs to match the input document so that the
7+
test is activated. If this schema doesn't match it normally means that the input
8+
document does not validate against the csaf json schema or optional fields that
9+
the test checks are not present.
10+
*/
11+
const inputSchema = /** @type {const} */ ({
12+
additionalProperties: true,
13+
properties: {
14+
document: {
15+
additionalProperties: true,
16+
properties: {
17+
category: {
18+
type: 'string',
19+
},
20+
},
21+
optionalProperties: {
22+
notes: {
23+
elements: {
24+
additionalProperties: true,
25+
optionalProperties: {
26+
category: {
27+
type: 'string',
28+
},
29+
},
30+
},
31+
},
32+
},
33+
},
34+
},
35+
})
36+
37+
const validate = ajv.compile(inputSchema)
38+
39+
/**
40+
* This implements the mandatory test 6.1.27.14 of the CSAF 2.1 standard.
41+
*
42+
* @param {unknown} doc
43+
*/
44+
export function mandatoryTest_6_1_27_14(doc) {
45+
/*
46+
The `ctx` variable holds the state that is accumulated during the test ran and is
47+
finally returned by the function.
48+
*/
49+
const ctx = {
50+
errors:
51+
/** @type {Array<{ instancePath: string; message: string }>} */ ([]),
52+
isValid: true,
53+
}
54+
55+
if (
56+
!validate(doc) ||
57+
!['csaf_withdrawn', 'csaf_superseded'].includes(doc.document.category)
58+
)
59+
return ctx
60+
61+
if (!doc.document.notes?.find((n) => n.category === 'description')) {
62+
ctx.isValid = false
63+
ctx.errors.push({
64+
instancePath: '/document/notes',
65+
message: 'needs at least one note with the category "description"',
66+
})
67+
}
68+
69+
return ctx
70+
}

csaf-validator-lib/csaf_2_1/recommendedTests.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77
*/
88

99
export { recommendedTest_6_2_1 } from './recommendedTests/recommendedTest_6_2_1.js'
10+
export { recommendedTest_6_2_2 } from './recommendedTests/recommendedTest_6_2_2.js'
11+
export { recommendedTest_6_2_3 } from './recommendedTests/recommendedTest_6_2_3.js'
12+
export { recommendedTest_6_2_4 } from './recommendedTests/recommendedTest_6_2_4.js'
13+
export { recommendedTest_6_2_5 } from './recommendedTests/recommendedTest_6_2_5.js'
14+
export { recommendedTest_6_2_6 } from './recommendedTests/recommendedTest_6_2_6.js'
15+
export { recommendedTest_6_2_7 } from './recommendedTests/recommendedTest_6_2_7.js'
16+
export { recommendedTest_6_2_8 } from './recommendedTests/recommendedTest_6_2_8.js'
17+
export { recommendedTest_6_2_9 } from './recommendedTests/recommendedTest_6_2_9.js'
1018
export { recommendedTest_6_2_10 } from './recommendedTests/recommendedTest_6_2_10.js'
1119
export { recommendedTest_6_2_11 } from './recommendedTests/recommendedTest_6_2_11.js'
1220
export { recommendedTest_6_2_12 } from './recommendedTests/recommendedTest_6_2_12.js'
@@ -17,15 +25,7 @@ export { recommendedTest_6_2_16 } from './recommendedTests/recommendedTest_6_2_1
1725
export { recommendedTest_6_2_17 } from './recommendedTests/recommendedTest_6_2_17.js'
1826
export { recommendedTest_6_2_18 } from './recommendedTests/recommendedTest_6_2_18.js'
1927
export { recommendedTest_6_2_19 } from './recommendedTests/recommendedTest_6_2_19.js'
20-
export { recommendedTest_6_2_2 } from './recommendedTests/recommendedTest_6_2_2.js'
2128
export { recommendedTest_6_2_20 } from './recommendedTests/recommendedTest_6_2_20.js'
22-
export { recommendedTest_6_2_4 } from './recommendedTests/recommendedTest_6_2_4.js'
23-
export { recommendedTest_6_2_5 } from './recommendedTests/recommendedTest_6_2_5.js'
24-
export { recommendedTest_6_2_6 } from './recommendedTests/recommendedTest_6_2_6.js'
25-
export { recommendedTest_6_2_7 } from './recommendedTests/recommendedTest_6_2_7.js'
26-
export { recommendedTest_6_2_8 } from './recommendedTests/recommendedTest_6_2_8.js'
27-
export { recommendedTest_6_2_9 } from './recommendedTests/recommendedTest_6_2_9.js'
28-
export { recommendedTest_6_2_3 } from './recommendedTests/recommendedTest_6_2_3.js'
2929
export { recommendedTest_6_2_22 } from './recommendedTests/recommendedTest_6_2_22.js'
3030
export { recommendedTest_6_2_27 } from './recommendedTests/recommendedTest_6_2_27.js'
3131
export { recommendedTest_6_2_28 } from './recommendedTests/recommendedTest_6_2_28.js'

csaf-validator-lib/package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

csaf-validator-lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,5 @@
4848
"typescript": "^5.7.3",
4949
"xml2js": "^0.5.0"
5050
},
51-
"version": "2.0.5"
51+
"version": "2.0.6"
5252
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import assert from 'node:assert/strict'
2+
import { mandatoryTest_6_1_27_14 } from '../../csaf_2_1/mandatoryTests/mandatoryTest_6_1_27_14.js'
3+
4+
describe('mandatoryTest_6_1_27_14', function () {
5+
it('only runs on documents matching the input schema', function () {
6+
assert.equal(
7+
mandatoryTest_6_1_27_14({
8+
document: 'invalid json',
9+
}).isValid,
10+
true
11+
)
12+
})
13+
14+
it('only runs on csaf_withdrawn and csaf_superseded documents', function () {
15+
assert.equal(
16+
mandatoryTest_6_1_27_14({
17+
document: {
18+
category: 'unknown category',
19+
},
20+
}).isValid,
21+
true
22+
)
23+
})
24+
})

csaf-validator-lib/tests/csaf_2_1/oasis.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ const excluded = [
2020
'6.1.27.11',
2121
'6.1.27.12',
2222
'6.1.27.13',
23-
'6.1.27.14',
2423
'6.1.27.15',
2524
'6.1.27.16',
2625
'6.1.27.17',
@@ -68,10 +67,10 @@ const excluded = [
6867
'6.2.44',
6968
'6.2.45',
7069
'6.2.46',
71-
'6.3.14',
72-
'6.3.15',
7370
'6.3.12',
7471
'6.3.13',
72+
'6.3.14',
73+
'6.3.15',
7574
'6.3.16',
7675
'6.3.17',
7776
]

0 commit comments

Comments
 (0)