@onlineapps/service-validator-core 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +127 -0
  2. package/coverage/clover.xml +468 -0
  3. package/coverage/coverage-final.json +8 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +146 -0
  8. package/coverage/lcov-report/prettify.css +1 -0
  9. package/coverage/lcov-report/prettify.js +2 -0
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +210 -0
  12. package/coverage/lcov-report/src/index.html +116 -0
  13. package/coverage/lcov-report/src/index.js.html +643 -0
  14. package/coverage/lcov-report/src/security/certificateManager.js.html +799 -0
  15. package/coverage/lcov-report/src/security/index.html +131 -0
  16. package/coverage/lcov-report/src/security/tokenManager.js.html +622 -0
  17. package/coverage/lcov-report/src/validators/connectorValidator.js.html +787 -0
  18. package/coverage/lcov-report/src/validators/endpointValidator.js.html +577 -0
  19. package/coverage/lcov-report/src/validators/healthValidator.js.html +655 -0
  20. package/coverage/lcov-report/src/validators/index.html +161 -0
  21. package/coverage/lcov-report/src/validators/openApiValidator.js.html +517 -0
  22. package/coverage/lcov.info +982 -0
  23. package/jest.config.js +21 -0
  24. package/package.json +31 -0
  25. package/src/index.js +212 -0
  26. package/src/security/ValidationProofVerifier.js +178 -0
  27. package/src/security/certificateManager.js +239 -0
  28. package/src/security/tokenManager.js +194 -0
  29. package/src/validators/connectorValidator.js +235 -0
  30. package/src/validators/endpointValidator.js +165 -0
  31. package/src/validators/healthValidator.js +191 -0
  32. package/src/validators/openApiValidator.js +145 -0
  33. package/test/component/validation-flow.test.js +353 -0
  34. package/test/integration/real-validation.test.js +548 -0
  35. package/test/unit/ValidationCore.test.js +320 -0
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # @onlineapps/service-validator-core
2
+
3
+ Core validation logic for microservices with two-stage validation support.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @onlineapps/service-validator-core
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```javascript
14
+ const ValidationCore = require('@onlineapps/service-validator-core');
15
+
16
+ const validator = new ValidationCore({
17
+ strictMode: true,
18
+ requiredConnectors: [
19
+ 'connector-logger',
20
+ 'connector-storage',
21
+ 'connector-registry-client',
22
+ 'connector-mq-client',
23
+ 'connector-cookbook'
24
+ ]
25
+ });
26
+
27
+ // Validate service data
28
+ const results = await validator.validate({
29
+ openApiSpec: { /* OpenAPI 3.0 spec */ },
30
+ endpoints: [ /* endpoint definitions */ ],
31
+ metadata: { /* service metadata */ },
32
+ health: '/health'
33
+ });
34
+
35
+ // Generate pre-validation token
36
+ if (results.success) {
37
+ const token = await validator.generatePreValidationToken(results, 'my-service');
38
+ }
39
+
40
+ // Generate certificate (system validator only)
41
+ if (results.success) {
42
+ const certificate = await validator.generateCertificate(
43
+ results,
44
+ 'my-service',
45
+ '1.0.0'
46
+ );
47
+ }
48
+ ```
49
+
50
+ ## Features
51
+
52
+ ### Validators
53
+
54
+ #### OpenApiValidator
55
+ Validates OpenAPI 3.0 and Swagger 2.0 specifications:
56
+ - Valid OpenAPI/Swagger format
57
+ - All paths documented
58
+ - Response schemas defined
59
+ - Required fields present
60
+
61
+ #### EndpointValidator
62
+ Validates endpoint definitions:
63
+ - Endpoints match OpenAPI spec
64
+ - Handler functions exist
65
+ - Proper HTTP methods used
66
+ - Path parameters defined
67
+
68
+ #### ConnectorValidator
69
+ Checks required connectors:
70
+ - Required connectors present in package.json
71
+ - Correct versions installed
72
+ - Proper initialization in code
73
+
74
+ #### HealthValidator
75
+ Validates health check configuration:
76
+ - `/health` endpoint exists
77
+ - Returns proper status format
78
+ - Accessible without authentication
79
+
80
+ ### Security
81
+ - **TokenManager** - Generates and verifies pre-validation tokens
82
+ - **CertificateManager** - Issues and verifies cryptographic certificates
83
+
84
+ ## API
85
+
86
+ ### ValidationCore(config)
87
+
88
+ Creates a new validation instance.
89
+
90
+ **Options:**
91
+ - `strictMode` (boolean) - Strict validation mode
92
+ - `requiredConnectors` (array) - List of required connector names
93
+ - `issuer` (string) - Certificate issuer name
94
+
95
+ ### validate(serviceData)
96
+
97
+ Validates service configuration.
98
+
99
+ **Returns:** Validation results object with `success`, `errors`, `warnings`, and `checks`.
100
+
101
+ ### generatePreValidationToken(results, serviceName)
102
+
103
+ Generates a pre-validation token for successful validation.
104
+
105
+ **Returns:** Object with `{token, secret, tokenId}` (configurable expiry via TOKEN_EXPIRY env var, single-use).
106
+
107
+ ### generateCertificate(results, serviceName, version)
108
+
109
+ Generates a validation certificate.
110
+
111
+ **Returns:** Certificate object with cryptographic signature.
112
+
113
+ ### verifyCertificate(certificate)
114
+
115
+ Verifies a validation certificate.
116
+
117
+ **Returns:** Boolean indicating certificate validity.
118
+
119
+ ## Related Documentation
120
+
121
+ - **[⭐ Complete Two-Tier Validation System](/docs/modules/validator.md)** - Full architecture and flow
122
+ - [validator-client](/shared/validator/validator-client/README.md) - Local pre-validation client
123
+ - [api_services_validator](/api/api_services_validator/README.md) - System validator service
124
+
125
+ ## License
126
+
127
+ MIT
@@ -0,0 +1,468 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1758207448231" clover="3.2.0">
3
+ <project timestamp="1758207448232" name="All files">
4
+ <metrics statements="432" coveredstatements="222" conditionals="383" coveredconditionals="159" methods="52" coveredmethods="27" elements="867" coveredelements="408" complexity="0" loc="432" ncloc="432" packages="3" files="7" classes="7"/>
5
+ <package name="src">
6
+ <metrics statements="56" coveredstatements="55" conditionals="47" coveredconditionals="44" methods="7" coveredmethods="7"/>
7
+ <file name="index.js" path="/var/www/html/oa_drive/shared/validator-core/src/index.js">
8
+ <metrics statements="56" coveredstatements="55" conditionals="47" coveredconditionals="44" methods="7" coveredmethods="7"/>
9
+ <line num="1" count="3" type="stmt"/>
10
+ <line num="2" count="3" type="stmt"/>
11
+ <line num="3" count="3" type="stmt"/>
12
+ <line num="4" count="3" type="stmt"/>
13
+ <line num="5" count="3" type="stmt"/>
14
+ <line num="6" count="3" type="stmt"/>
15
+ <line num="10" count="42" type="stmt"/>
16
+ <line num="22" count="42" type="stmt"/>
17
+ <line num="29" count="42" type="stmt"/>
18
+ <line num="30" count="42" type="stmt"/>
19
+ <line num="39" count="16" type="stmt"/>
20
+ <line num="48" count="16" type="stmt"/>
21
+ <line num="50" count="16" type="cond" truecount="2" falsecount="0"/>
22
+ <line num="51" count="6" type="stmt"/>
23
+ <line num="52" count="5" type="stmt"/>
24
+ <line num="53" count="5" type="cond" truecount="2" falsecount="0"/>
25
+ <line num="54" count="1" type="stmt"/>
26
+ <line num="58" count="15" type="cond" truecount="2" falsecount="0"/>
27
+ <line num="59" count="4" type="stmt"/>
28
+ <line num="60" count="4" type="stmt"/>
29
+ <line num="61" count="4" type="cond" truecount="1" falsecount="1"/>
30
+ <line num="62" count="0" type="stmt"/>
31
+ <line num="66" count="15" type="cond" truecount="2" falsecount="0"/>
32
+ <line num="67" count="11" type="stmt"/>
33
+ <line num="68" count="11" type="stmt"/>
34
+ <line num="69" count="11" type="cond" truecount="2" falsecount="0"/>
35
+ <line num="70" count="8" type="stmt"/>
36
+ <line num="71" count="8" type="cond" truecount="2" falsecount="0"/>
37
+ <line num="72" count="3" type="stmt"/>
38
+ <line num="77" count="15" type="cond" truecount="2" falsecount="0"/>
39
+ <line num="78" count="5" type="stmt"/>
40
+ <line num="79" count="5" type="stmt"/>
41
+ <line num="80" count="5" type="cond" truecount="2" falsecount="0"/>
42
+ <line num="81" count="2" type="stmt"/>
43
+ <line num="85" count="15" type="stmt"/>
44
+ <line num="86" count="15" type="stmt"/>
45
+ <line num="89" count="1" type="stmt"/>
46
+ <line num="90" count="1" type="stmt"/>
47
+ <line num="93" count="16" type="stmt"/>
48
+ <line num="103" count="4" type="cond" truecount="2" falsecount="0"/>
49
+ <line num="104" count="1" type="stmt"/>
50
+ <line num="107" count="3" type="stmt"/>
51
+ <line num="120" count="5" type="stmt"/>
52
+ <line num="131" count="5" type="cond" truecount="2" falsecount="0"/>
53
+ <line num="132" count="2" type="stmt"/>
54
+ <line num="135" count="3" type="stmt"/>
55
+ <line num="150" count="2" type="stmt"/>
56
+ <line num="159" count="7" type="stmt"/>
57
+ <line num="161" count="7" type="cond" truecount="4" falsecount="0"/>
58
+ <line num="162" count="2" type="stmt"/>
59
+ <line num="165" count="5" type="stmt"/>
60
+ <line num="166" count="108" type="stmt"/>
61
+ <line num="167" count="217" type="cond" truecount="2" falsecount="0"/>
62
+ <line num="168" count="215" type="stmt"/>
63
+ <line num="183" count="5" type="stmt"/>
64
+ <line num="187" count="3" type="stmt"/>
65
+ </file>
66
+ </package>
67
+ <package name="src.security">
68
+ <metrics statements="108" coveredstatements="44" conditionals="69" coveredconditionals="33" methods="23" coveredmethods="9"/>
69
+ <file name="certificateManager.js" path="/var/www/html/oa_drive/shared/validator-core/src/security/certificateManager.js">
70
+ <metrics statements="58" coveredstatements="21" conditionals="32" coveredconditionals="15" methods="13" coveredmethods="5"/>
71
+ <line num="1" count="3" type="stmt"/>
72
+ <line num="5" count="42" type="cond" truecount="2" falsecount="0"/>
73
+ <line num="6" count="42" type="cond" truecount="2" falsecount="0"/>
74
+ <line num="7" count="42" type="cond" truecount="2" falsecount="0"/>
75
+ <line num="8" count="42" type="cond" truecount="2" falsecount="0"/>
76
+ <line num="16" count="42" type="stmt"/>
77
+ <line num="28" count="42" type="stmt"/>
78
+ <line num="37" count="1" type="stmt"/>
79
+ <line num="38" count="1" type="stmt"/>
80
+ <line num="39" count="1" type="stmt"/>
81
+ <line num="40" count="1" type="stmt"/>
82
+ <line num="42" count="1" type="stmt"/>
83
+ <line num="66" count="1" type="stmt"/>
84
+ <line num="68" count="1" type="stmt"/>
85
+ <line num="77" count="0" type="stmt"/>
86
+ <line num="79" count="0" type="stmt"/>
87
+ <line num="80" count="0" type="stmt"/>
88
+ <line num="81" count="0" type="cond" truecount="0" falsecount="2"/>
89
+ <line num="82" count="0" type="stmt"/>
90
+ <line num="86" count="0" type="stmt"/>
91
+ <line num="87" count="0" type="cond" truecount="0" falsecount="2"/>
92
+ <line num="88" count="0" type="stmt"/>
93
+ <line num="92" count="0" type="stmt"/>
94
+ <line num="93" count="0" type="stmt"/>
95
+ <line num="94" count="0" type="stmt"/>
96
+ <line num="96" count="0" type="stmt"/>
97
+ <line num="97" count="0" type="cond" truecount="0" falsecount="2"/>
98
+ <line num="98" count="0" type="stmt"/>
99
+ <line num="102" count="0" type="stmt"/>
100
+ <line num="103" count="0" type="cond" truecount="0" falsecount="2"/>
101
+ <line num="104" count="0" type="stmt"/>
102
+ <line num="108" count="0" type="cond" truecount="0" falsecount="2"/>
103
+ <line num="109" count="0" type="stmt"/>
104
+ <line num="112" count="0" type="stmt"/>
105
+ <line num="114" count="0" type="stmt"/>
106
+ <line num="115" count="0" type="stmt"/>
107
+ <line num="125" count="1" type="stmt"/>
108
+ <line num="126" count="1" type="stmt"/>
109
+ <line num="127" count="1" type="stmt"/>
110
+ <line num="128" count="1" type="stmt"/>
111
+ <line num="138" count="0" type="stmt"/>
112
+ <line num="139" count="0" type="stmt"/>
113
+ <line num="140" count="0" type="stmt"/>
114
+ <line num="141" count="0" type="stmt"/>
115
+ <line num="150" count="1" type="stmt"/>
116
+ <line num="151" count="1" type="stmt"/>
117
+ <line num="162" count="0" type="stmt"/>
118
+ <line num="173" count="0" type="stmt"/>
119
+ <line num="181" count="0" type="stmt"/>
120
+ <line num="191" count="0" type="stmt"/>
121
+ <line num="205" count="0" type="cond" truecount="0" falsecount="4"/>
122
+ <line num="206" count="0" type="stmt"/>
123
+ <line num="209" count="0" type="stmt"/>
124
+ <line num="218" count="0" type="stmt"/>
125
+ <line num="219" count="0" type="stmt"/>
126
+ <line num="220" count="0" type="stmt"/>
127
+ <line num="222" count="0" type="stmt"/>
128
+ <line num="239" count="3" type="stmt"/>
129
+ </file>
130
+ <file name="tokenManager.js" path="/var/www/html/oa_drive/shared/validator-core/src/security/tokenManager.js">
131
+ <metrics statements="50" coveredstatements="23" conditionals="37" coveredconditionals="18" methods="10" coveredmethods="4"/>
132
+ <line num="1" count="3" type="stmt"/>
133
+ <line num="2" count="3" type="stmt"/>
134
+ <line num="6" count="42" type="cond" truecount="3" falsecount="0"/>
135
+ <line num="7" count="42" type="cond" truecount="2" falsecount="0"/>
136
+ <line num="8" count="42" type="cond" truecount="2" falsecount="0"/>
137
+ <line num="9" count="42" type="cond" truecount="2" falsecount="0"/>
138
+ <line num="10" count="42" type="stmt"/>
139
+ <line num="18" count="42" type="stmt"/>
140
+ <line num="27" count="1" type="stmt"/>
141
+ <line num="29" count="1" type="stmt"/>
142
+ <line num="37" count="1" type="stmt"/>
143
+ <line num="42" count="1" type="stmt"/>
144
+ <line num="51" count="2" type="stmt"/>
145
+ <line num="53" count="2" type="stmt"/>
146
+ <line num="59" count="1" type="cond" truecount="3" falsecount="1"/>
147
+ <line num="60" count="0" type="stmt"/>
148
+ <line num="64" count="1" type="cond" truecount="1" falsecount="1"/>
149
+ <line num="65" count="1" type="stmt"/>
150
+ <line num="68" count="1" type="cond" truecount="1" falsecount="1"/>
151
+ <line num="69" count="0" type="stmt"/>
152
+ <line num="73" count="1" type="stmt"/>
153
+ <line num="75" count="1" type="cond" truecount="1" falsecount="1"/>
154
+ <line num="76" count="0" type="stmt"/>
155
+ <line num="77" count="1" type="cond" truecount="1" falsecount="1"/>
156
+ <line num="78" count="1" type="stmt"/>
157
+ <line num="80" count="0" type="stmt"/>
158
+ <line num="91" count="0" type="cond" truecount="0" falsecount="2"/>
159
+ <line num="92" count="0" type="stmt"/>
160
+ <line num="95" count="0" type="stmt"/>
161
+ <line num="112" count="0" type="stmt"/>
162
+ <line num="114" count="0" type="cond" truecount="0" falsecount="2"/>
163
+ <line num="115" count="0" type="stmt"/>
164
+ <line num="118" count="0" type="cond" truecount="0" falsecount="2"/>
165
+ <line num="119" count="0" type="stmt"/>
166
+ <line num="122" count="0" type="stmt"/>
167
+ <line num="131" count="0" type="stmt"/>
168
+ <line num="132" count="0" type="stmt"/>
169
+ <line num="140" count="0" type="stmt"/>
170
+ <line num="142" count="0" type="stmt"/>
171
+ <line num="143" count="0" type="cond" truecount="0" falsecount="4"/>
172
+ <line num="144" count="0" type="stmt"/>
173
+ <line num="147" count="0" type="stmt"/>
174
+ <line num="151" count="0" type="stmt"/>
175
+ <line num="161" count="0" type="stmt"/>
176
+ <line num="162" count="0" type="stmt"/>
177
+ <line num="163" count="0" type="cond" truecount="0" falsecount="3"/>
178
+ <line num="165" count="0" type="stmt"/>
179
+ <line num="175" count="0" type="stmt"/>
180
+ <line num="176" count="0" type="stmt"/>
181
+ <line num="180" count="3" type="stmt"/>
182
+ </file>
183
+ </package>
184
+ <package name="src.validators">
185
+ <metrics statements="268" coveredstatements="123" conditionals="267" coveredconditionals="82" methods="22" coveredmethods="11"/>
186
+ <file name="connectorValidator.js" path="/var/www/html/oa_drive/shared/validator-core/src/validators/connectorValidator.js">
187
+ <metrics statements="76" coveredstatements="30" conditionals="81" coveredconditionals="15" methods="8" coveredmethods="4"/>
188
+ <line num="3" count="42" type="cond" truecount="1" falsecount="1"/>
189
+ <line num="18" count="5" type="stmt"/>
190
+ <line num="29" count="5" type="stmt"/>
191
+ <line num="30" count="5" type="cond" truecount="1" falsecount="1"/>
192
+ <line num="33" count="5" type="stmt"/>
193
+ <line num="34" count="25" type="stmt"/>
194
+ <line num="35" count="25" type="stmt"/>
195
+ <line num="37" count="25" type="cond" truecount="1" falsecount="1"/>
196
+ <line num="38" count="25" type="stmt"/>
197
+ <line num="39" count="25" type="stmt"/>
198
+ <line num="42" count="0" type="stmt"/>
199
+ <line num="44" count="0" type="cond" truecount="0" falsecount="2"/>
200
+ <line num="46" count="0" type="cond" truecount="0" falsecount="2"/>
201
+ <line num="47" count="0" type="stmt"/>
202
+ <line num="50" count="0" type="cond" truecount="0" falsecount="2"/>
203
+ <line num="51" count="0" type="stmt"/>
204
+ <line num="56" count="0" type="cond" truecount="0" falsecount="2"/>
205
+ <line num="57" count="0" type="stmt"/>
206
+ <line num="61" count="0" type="cond" truecount="0" falsecount="4"/>
207
+ <line num="62" count="0" type="stmt"/>
208
+ <line num="67" count="0" type="stmt"/>
209
+ <line num="78" count="5" type="stmt"/>
210
+ <line num="79" count="19" type="cond" truecount="1" falsecount="1"/>
211
+ <line num="80" count="19" type="stmt"/>
212
+ <line num="85" count="5" type="stmt"/>
213
+ <line num="88" count="5" type="cond" truecount="3" falsecount="1"/>
214
+ <line num="89" count="5" type="stmt"/>
215
+ <line num="93" count="5" type="cond" truecount="1" falsecount="1"/>
216
+ <line num="94" count="5" type="stmt"/>
217
+ <line num="98" count="5" type="cond" truecount="1" falsecount="1"/>
218
+ <line num="99" count="5" type="stmt"/>
219
+ <line num="103" count="5" type="cond" truecount="1" falsecount="1"/>
220
+ <line num="104" count="5" type="stmt"/>
221
+ <line num="107" count="5" type="cond" truecount="1" falsecount="1"/>
222
+ <line num="108" count="5" type="stmt"/>
223
+ <line num="112" count="0" type="stmt"/>
224
+ <line num="113" count="0" type="stmt"/>
225
+ <line num="116" count="5" type="stmt"/>
226
+ <line num="126" count="5" type="cond" truecount="1" falsecount="1"/>
227
+ <line num="127" count="0" type="stmt"/>
228
+ <line num="128" count="0" type="cond" truecount="0" falsecount="2"/>
229
+ <line num="129" count="0" type="cond" truecount="0" falsecount="4"/>
230
+ <line num="130" count="0" type="stmt"/>
231
+ <line num="136" count="5" type="cond" truecount="1" falsecount="1"/>
232
+ <line num="137" count="0" type="stmt"/>
233
+ <line num="138" count="0" type="cond" truecount="0" falsecount="2"/>
234
+ <line num="139" count="0" type="cond" truecount="0" falsecount="4"/>
235
+ <line num="140" count="0" type="stmt"/>
236
+ <line num="146" count="5" type="cond" truecount="1" falsecount="1"/>
237
+ <line num="147" count="0" type="stmt"/>
238
+ <line num="148" count="0" type="cond" truecount="0" falsecount="2"/>
239
+ <line num="149" count="0" type="cond" truecount="0" falsecount="2"/>
240
+ <line num="150" count="0" type="stmt"/>
241
+ <line num="156" count="5" type="cond" truecount="1" falsecount="1"/>
242
+ <line num="157" count="0" type="stmt"/>
243
+ <line num="158" count="0" type="cond" truecount="0" falsecount="2"/>
244
+ <line num="159" count="0" type="cond" truecount="0" falsecount="2"/>
245
+ <line num="160" count="0" type="stmt"/>
246
+ <line num="173" count="0" type="stmt"/>
247
+ <line num="174" count="0" type="stmt"/>
248
+ <line num="183" count="0" type="cond" truecount="0" falsecount="2"/>
249
+ <line num="184" count="0" type="stmt"/>
250
+ <line num="195" count="0" type="stmt"/>
251
+ <line num="196" count="0" type="stmt"/>
252
+ <line num="197" count="0" type="stmt"/>
253
+ <line num="206" count="0" type="cond" truecount="0" falsecount="2"/>
254
+ <line num="207" count="0" type="stmt"/>
255
+ <line num="209" count="0" type="cond" truecount="0" falsecount="4"/>
256
+ <line num="210" count="0" type="stmt"/>
257
+ <line num="213" count="0" type="stmt"/>
258
+ <line num="217" count="0" type="stmt"/>
259
+ <line num="218" count="0" type="cond" truecount="0" falsecount="2"/>
260
+ <line num="219" count="0" type="stmt"/>
261
+ <line num="220" count="0" type="stmt"/>
262
+ <line num="231" count="0" type="stmt"/>
263
+ <line num="235" count="3" type="stmt"/>
264
+ </file>
265
+ <file name="endpointValidator.js" path="/var/www/html/oa_drive/shared/validator-core/src/validators/endpointValidator.js">
266
+ <metrics statements="64" coveredstatements="34" conditionals="52" coveredconditionals="21" methods="5" coveredmethods="3"/>
267
+ <line num="8" count="2" type="stmt"/>
268
+ <line num="15" count="2" type="stmt"/>
269
+ <line num="17" count="2" type="cond" truecount="1" falsecount="1"/>
270
+ <line num="18" count="0" type="stmt"/>
271
+ <line num="19" count="0" type="stmt"/>
272
+ <line num="20" count="0" type="stmt"/>
273
+ <line num="24" count="2" type="cond" truecount="1" falsecount="1"/>
274
+ <line num="25" count="0" type="stmt"/>
275
+ <line num="26" count="0" type="stmt"/>
276
+ <line num="27" count="0" type="stmt"/>
277
+ <line num="30" count="2" type="stmt"/>
278
+ <line num="31" count="2" type="stmt"/>
279
+ <line num="32" count="2" type="stmt"/>
280
+ <line num="35" count="2" type="stmt"/>
281
+ <line num="36" count="53" type="stmt"/>
282
+ <line num="37" count="53" type="stmt"/>
283
+ <line num="40" count="53" type="cond" truecount="1" falsecount="1"/>
284
+ <line num="41" count="0" type="stmt"/>
285
+ <line num="42" count="0" type="stmt"/>
286
+ <line num="45" count="53" type="cond" truecount="1" falsecount="1"/>
287
+ <line num="46" count="0" type="stmt"/>
288
+ <line num="47" count="0" type="stmt"/>
289
+ <line num="51" count="53" type="cond" truecount="1" falsecount="1"/>
290
+ <line num="52" count="0" type="stmt"/>
291
+ <line num="56" count="53" type="stmt"/>
292
+ <line num="57" count="53" type="cond" truecount="1" falsecount="1"/>
293
+ <line num="58" count="0" type="stmt"/>
294
+ <line num="62" count="53" type="stmt"/>
295
+ <line num="63" count="53" type="cond" truecount="1" falsecount="1"/>
296
+ <line num="64" count="0" type="stmt"/>
297
+ <line num="66" count="53" type="stmt"/>
298
+ <line num="69" count="53" type="cond" truecount="1" falsecount="1"/>
299
+ <line num="70" count="53" type="cond" truecount="2" falsecount="2"/>
300
+ <line num="71" count="0" type="stmt"/>
301
+ <line num="76" count="53" type="cond" truecount="1" falsecount="1"/>
302
+ <line num="77" count="0" type="cond" truecount="0" falsecount="2"/>
303
+ <line num="78" count="0" type="stmt"/>
304
+ <line num="83" count="53" type="cond" truecount="1" falsecount="1"/>
305
+ <line num="84" count="53" type="stmt"/>
306
+ <line num="88" count="53" type="cond" truecount="2" falsecount="2"/>
307
+ <line num="89" count="0" type="stmt"/>
308
+ <line num="94" count="2" type="stmt"/>
309
+ <line num="102" count="2" type="stmt"/>
310
+ <line num="103" count="53" type="cond" truecount="1" falsecount="1"/>
311
+ <line num="104" count="53" type="stmt"/>
312
+ <line num="109" count="2" type="cond" truecount="3" falsecount="1"/>
313
+ <line num="110" count="0" type="stmt"/>
314
+ <line num="113" count="2" type="cond" truecount="2" falsecount="2"/>
315
+ <line num="114" count="0" type="stmt"/>
316
+ <line num="117" count="10" type="stmt"/>
317
+ <line num="119" count="2" type="cond" truecount="1" falsecount="1"/>
318
+ <line num="120" count="0" type="stmt"/>
319
+ <line num="124" count="0" type="stmt"/>
320
+ <line num="125" count="0" type="stmt"/>
321
+ <line num="128" count="2" type="stmt"/>
322
+ <line num="137" count="0" type="stmt"/>
323
+ <line num="145" count="0" type="stmt"/>
324
+ <line num="147" count="0" type="stmt"/>
325
+ <line num="148" count="0" type="cond" truecount="0" falsecount="2"/>
326
+ <line num="149" count="0" type="cond" truecount="0" falsecount="2"/>
327
+ <line num="151" count="0" type="stmt"/>
328
+ <line num="160" count="0" type="stmt"/>
329
+ <line num="161" count="0" type="stmt"/>
330
+ <line num="165" count="3" type="stmt"/>
331
+ </file>
332
+ <file name="healthValidator.js" path="/var/www/html/oa_drive/shared/validator-core/src/validators/healthValidator.js">
333
+ <metrics statements="72" coveredstatements="21" conditionals="90" coveredconditionals="21" methods="4" coveredmethods="1"/>
334
+ <line num="8" count="2" type="stmt"/>
335
+ <line num="15" count="2" type="stmt"/>
336
+ <line num="16" count="2" type="cond" truecount="1" falsecount="1"/>
337
+ <line num="17" count="0" type="stmt"/>
338
+ <line num="18" count="0" type="stmt"/>
339
+ <line num="19" count="0" type="stmt"/>
340
+ <line num="23" count="2" type="cond" truecount="1" falsecount="1"/>
341
+ <line num="25" count="0" type="cond" truecount="0" falsecount="2"/>
342
+ <line num="26" count="0" type="stmt"/>
343
+ <line num="27" count="0" type="stmt"/>
344
+ <line num="29" count="0" type="stmt"/>
345
+ <line num="30" count="0" type="stmt"/>
346
+ <line num="31" count="2" type="cond" truecount="1" falsecount="1"/>
347
+ <line num="33" count="2" type="cond" truecount="3" falsecount="1"/>
348
+ <line num="34" count="2" type="stmt"/>
349
+ <line num="35" count="2" type="stmt"/>
350
+ <line num="38" count="2" type="cond" truecount="2" falsecount="0"/>
351
+ <line num="39" count="2" type="cond" truecount="2" falsecount="2"/>
352
+ <line num="40" count="0" type="stmt"/>
353
+ <line num="41" count="0" type="stmt"/>
354
+ <line num="44" count="2" type="stmt"/>
355
+ <line num="45" count="2" type="stmt"/>
356
+ <line num="48" count="2" type="cond" truecount="1" falsecount="1"/>
357
+ <line num="49" count="0" type="cond" truecount="0" falsecount="4"/>
358
+ <line num="50" count="0" type="stmt"/>
359
+ <line num="52" count="0" type="stmt"/>
360
+ <line num="57" count="2" type="cond" truecount="1" falsecount="1"/>
361
+ <line num="58" count="0" type="cond" truecount="0" falsecount="4"/>
362
+ <line num="59" count="0" type="stmt"/>
363
+ <line num="61" count="0" type="stmt"/>
364
+ <line num="66" count="2" type="cond" truecount="1" falsecount="1"/>
365
+ <line num="67" count="0" type="cond" truecount="0" falsecount="4"/>
366
+ <line num="68" count="0" type="stmt"/>
367
+ <line num="70" count="0" type="stmt"/>
368
+ <line num="75" count="2" type="cond" truecount="3" falsecount="1"/>
369
+ <line num="76" count="0" type="stmt"/>
370
+ <line num="78" count="0" type="stmt"/>
371
+ <line num="79" count="0" type="cond" truecount="0" falsecount="2"/>
372
+ <line num="80" count="0" type="stmt"/>
373
+ <line num="82" count="0" type="cond" truecount="0" falsecount="2"/>
374
+ <line num="83" count="0" type="stmt"/>
375
+ <line num="89" count="2" type="cond" truecount="1" falsecount="1"/>
376
+ <line num="90" count="0" type="cond" truecount="0" falsecount="4"/>
377
+ <line num="91" count="0" type="stmt"/>
378
+ <line num="93" count="0" type="stmt"/>
379
+ <line num="96" count="0" type="stmt"/>
380
+ <line num="97" count="0" type="stmt"/>
381
+ <line num="101" count="2" type="cond" truecount="2" falsecount="2"/>
382
+ <line num="102" count="0" type="stmt"/>
383
+ <line num="105" count="2" type="cond" truecount="2" falsecount="2"/>
384
+ <line num="106" count="0" type="stmt"/>
385
+ <line num="110" count="0" type="stmt"/>
386
+ <line num="111" count="0" type="stmt"/>
387
+ <line num="114" count="2" type="stmt"/>
388
+ <line num="124" count="0" type="stmt"/>
389
+ <line num="155" count="0" type="stmt"/>
390
+ <line num="162" count="0" type="cond" truecount="0" falsecount="2"/>
391
+ <line num="163" count="0" type="cond" truecount="0" falsecount="2"/>
392
+ <line num="164" count="0" type="stmt"/>
393
+ <line num="165" count="0" type="stmt"/>
394
+ <line num="170" count="0" type="cond" truecount="0" falsecount="2"/>
395
+ <line num="171" count="0" type="cond" truecount="0" falsecount="2"/>
396
+ <line num="172" count="0" type="stmt"/>
397
+ <line num="173" count="0" type="stmt"/>
398
+ <line num="174" count="0" type="cond" truecount="0" falsecount="4"/>
399
+ <line num="175" count="0" type="stmt"/>
400
+ <line num="176" count="0" type="stmt"/>
401
+ <line num="181" count="0" type="cond" truecount="0" falsecount="4"/>
402
+ <line num="182" count="0" type="cond" truecount="0" falsecount="2"/>
403
+ <line num="183" count="0" type="stmt"/>
404
+ <line num="187" count="0" type="stmt"/>
405
+ <line num="191" count="3" type="stmt"/>
406
+ </file>
407
+ <file name="openApiValidator.js" path="/var/www/html/oa_drive/shared/validator-core/src/validators/openApiValidator.js">
408
+ <metrics statements="56" coveredstatements="38" conditionals="44" coveredconditionals="25" methods="5" coveredmethods="3"/>
409
+ <line num="8" count="2" type="stmt"/>
410
+ <line num="15" count="2" type="stmt"/>
411
+ <line num="17" count="2" type="cond" truecount="2" falsecount="2"/>
412
+ <line num="18" count="0" type="stmt"/>
413
+ <line num="19" count="0" type="stmt"/>
414
+ <line num="21" count="2" type="cond" truecount="1" falsecount="1"/>
415
+ <line num="25" count="2" type="cond" truecount="1" falsecount="1"/>
416
+ <line num="26" count="0" type="stmt"/>
417
+ <line num="27" count="0" type="stmt"/>
418
+ <line num="29" count="2" type="cond" truecount="1" falsecount="1"/>
419
+ <line num="30" count="0" type="stmt"/>
420
+ <line num="32" count="2" type="cond" truecount="1" falsecount="1"/>
421
+ <line num="33" count="0" type="stmt"/>
422
+ <line num="35" count="2" type="stmt"/>
423
+ <line num="36" count="2" type="stmt"/>
424
+ <line num="40" count="2" type="cond" truecount="3" falsecount="1"/>
425
+ <line num="41" count="0" type="stmt"/>
426
+ <line num="42" count="0" type="stmt"/>
427
+ <line num="44" count="2" type="stmt"/>
428
+ <line num="45" count="2" type="stmt"/>
429
+ <line num="46" count="2" type="stmt"/>
430
+ <line num="47" count="2" type="stmt"/>
431
+ <line num="48" count="2" type="stmt"/>
432
+ <line num="52" count="2" type="cond" truecount="4" falsecount="0"/>
433
+ <line num="53" count="1" type="stmt"/>
434
+ <line num="54" count="1" type="cond" truecount="2" falsecount="2"/>
435
+ <line num="55" count="0" type="stmt"/>
436
+ <line num="58" count="2" type="cond" truecount="1" falsecount="1"/>
437
+ <line num="59" count="0" type="stmt"/>
438
+ <line num="63" count="0" type="stmt"/>
439
+ <line num="64" count="0" type="stmt"/>
440
+ <line num="67" count="2" type="stmt"/>
441
+ <line num="76" count="2" type="stmt"/>
442
+ <line num="82" count="2" type="stmt"/>
443
+ <line num="84" count="2" type="stmt"/>
444
+ <line num="86" count="4" type="cond" truecount="1" falsecount="1"/>
445
+ <line num="87" count="0" type="stmt"/>
446
+ <line num="91" count="4" type="stmt"/>
447
+ <line num="92" count="4" type="stmt"/>
448
+ <line num="95" count="4" type="cond" truecount="1" falsecount="1"/>
449
+ <line num="96" count="0" type="stmt"/>
450
+ <line num="100" count="4" type="stmt"/>
451
+ <line num="101" count="4" type="stmt"/>
452
+ <line num="102" count="4" type="stmt"/>
453
+ <line num="105" count="4" type="cond" truecount="1" falsecount="1"/>
454
+ <line num="106" count="0" type="stmt"/>
455
+ <line num="107" count="4" type="cond" truecount="1" falsecount="1"/>
456
+ <line num="108" count="0" type="stmt"/>
457
+ <line num="112" count="4" type="cond" truecount="4" falsecount="0"/>
458
+ <line num="113" count="1" type="stmt"/>
459
+ <line num="117" count="4" type="cond" truecount="1" falsecount="1"/>
460
+ <line num="118" count="4" type="stmt"/>
461
+ <line num="123" count="2" type="stmt"/>
462
+ <line num="132" count="0" type="cond" truecount="0" falsecount="2"/>
463
+ <line num="141" count="0" type="cond" truecount="0" falsecount="2"/>
464
+ <line num="145" count="3" type="stmt"/>
465
+ </file>
466
+ </package>
467
+ </project>
468
+ </coverage>