]> git.proxmox.com Git - pve-eslint.git/blame - eslint/tests/lib/rules/no-restricted-properties.js
import 8.3.0 source
[pve-eslint.git] / eslint / tests / lib / rules / no-restricted-properties.js
CommitLineData
eb39fafa
DC
1/**
2 * @fileoverview Tests for no-restricted-properties rule.
3 * @author Will Klein & Eli White
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Requirements
10//------------------------------------------------------------------------------
11
12const rule = require("../../../lib/rules/no-restricted-properties"),
13 { RuleTester } = require("../../../lib/rule-tester");
14
15//------------------------------------------------------------------------------
16// Tests
17//------------------------------------------------------------------------------
18
19const ruleTester = new RuleTester();
20
21ruleTester.run("no-restricted-properties", rule, {
22 valid: [
23 {
24 code: "someObject.someProperty",
25 options: [{
26 object: "someObject",
27 property: "disallowedProperty"
28 }]
29 }, {
30 code: "anotherObject.disallowedProperty",
31 options: [{
32 object: "someObject",
33 property: "disallowedProperty"
34 }]
35 }, {
36 code: "someObject.someProperty()",
37 options: [{
38 object: "someObject",
39 property: "disallowedProperty"
40 }]
41 }, {
42 code: "anotherObject.disallowedProperty()",
43 options: [{
44 object: "someObject",
45 property: "disallowedProperty"
46 }]
47 }, {
48 code: "anotherObject.disallowedProperty()",
49 options: [{
50 object: "someObject",
51 property: "disallowedProperty",
52 message: "Please use someObject.allowedProperty instead."
53 }]
54 }, {
55 code: "anotherObject['disallowedProperty']()",
56 options: [{
57 object: "someObject",
58 property: "disallowedProperty"
59 }]
60 }, {
61 code: "obj.toString",
62 options: [{
63 object: "obj",
64 property: "__proto__"
65 }]
66 }, {
67 code: "toString.toString",
68 options: [{
69 object: "obj",
70 property: "foo"
71 }]
72 }, {
73 code: "obj.toString",
74 options: [{
75 object: "obj",
76 property: "foo"
77 }]
78 }, {
79 code: "foo.bar",
80 options: [{
81 property: "baz"
82 }]
83 }, {
84 code: "foo.bar",
85 options: [{
86 object: "baz"
87 }]
88 }, {
89 code: "foo()",
90 options: [{
91 object: "foo"
92 }]
93 }, {
94 code: "foo;",
95 options: [{
96 object: "foo"
97 }]
98 }, {
99 code: "foo[/(?<zero>0)/]",
100 options: [{
101 property: "null"
102 }],
103 parserOptions: { ecmaVersion: 2018 }
104 }, {
105 code: "let bar = foo;",
106 options: [{ object: "foo", property: "bar" }],
107 parserOptions: { ecmaVersion: 6 }
108 }, {
109 code: "let {baz: bar} = foo;",
110 options: [{ object: "foo", property: "bar" }],
111 parserOptions: { ecmaVersion: 6 }
112 }, {
113 code: "let {unrelated} = foo;",
114 options: [{ object: "foo", property: "bar" }],
115 parserOptions: { ecmaVersion: 6 }
116 }, {
117 code: "let {baz: {bar: qux}} = foo;",
118 options: [{ object: "foo", property: "bar" }],
119 parserOptions: { ecmaVersion: 6 }
120 }, {
121 code: "let {bar} = foo.baz;",
122 options: [{ object: "foo", property: "bar" }],
123 parserOptions: { ecmaVersion: 6 }
124 }, {
125 code: "let {baz: bar} = foo;",
126 options: [{ property: "bar" }],
127 parserOptions: { ecmaVersion: 6 }
128 }, {
129 code: "let baz; ({baz: bar} = foo)",
130 options: [{ object: "foo", property: "bar" }],
131 parserOptions: { ecmaVersion: 6 }
132 }, {
133 code: "let bar;",
134 options: [{ object: "foo", property: "bar" }],
135 parserOptions: { ecmaVersion: 6 }
136 }, {
137 code: "let bar; ([bar = 5] = foo);",
138 options: [{ object: "foo", property: "1" }],
139 parserOptions: { ecmaVersion: 6 }
140 }, {
141 code: "function qux({baz: bar} = foo) {}",
142 options: [{ object: "foo", property: "bar" }],
143 parserOptions: { ecmaVersion: 6 }
144 }, {
145 code: "let [bar, baz] = foo;",
146 options: [{ object: "foo", property: "1" }],
147 parserOptions: { ecmaVersion: 6 }
148 }, {
149 code: "let [, bar] = foo;",
150 options: [{ object: "foo", property: "0" }],
151 parserOptions: { ecmaVersion: 6 }
152 }, {
153 code: "let [, bar = 5] = foo;",
154 options: [{ object: "foo", property: "1" }],
155 parserOptions: { ecmaVersion: 6 }
156 }, {
157 code: "let bar; ([bar = 5] = foo);",
158 options: [{ object: "foo", property: "0" }],
159 parserOptions: { ecmaVersion: 6 }
160 }, {
161 code: "function qux([bar] = foo) {}",
162 options: [{ object: "foo", property: "0" }],
163 parserOptions: { ecmaVersion: 6 }
164 }, {
165 code: "function qux([, bar] = foo) {}",
166 options: [{ object: "foo", property: "0" }],
167 parserOptions: { ecmaVersion: 6 }
168 }, {
169 code: "function qux([, bar] = foo) {}",
170 options: [{ object: "foo", property: "1" }],
171 parserOptions: { ecmaVersion: 6 }
609c276f
TL
172 }, {
173 code: "class C { #foo; foo() { this.#foo; } }",
174 options: [{ property: "#foo" }],
175 parserOptions: { ecmaVersion: 2022 }
eb39fafa
DC
176 }
177 ],
178
179 invalid: [
180 {
181 code: "someObject.disallowedProperty",
182 options: [{
183 object: "someObject",
184 property: "disallowedProperty"
185 }],
186 errors: [{
187 messageId: "restrictedObjectProperty",
188 data: {
189 objectName: "someObject",
190 propertyName: "disallowedProperty",
191 message: ""
192 },
193 type: "MemberExpression"
194 }]
195 }, {
196 code: "someObject.disallowedProperty",
197 options: [{
198 object: "someObject",
199 property: "disallowedProperty",
200 message: "Please use someObject.allowedProperty instead."
201 }],
202 errors: [{
203 messageId: "restrictedObjectProperty",
204 data: {
205 objectName: "someObject",
206 propertyName: "disallowedProperty",
207 message: " Please use someObject.allowedProperty instead."
208 },
209 type: "MemberExpression"
210 }]
211 }, {
212 code: "someObject.disallowedProperty; anotherObject.anotherDisallowedProperty()",
213 options: [{
214 object: "someObject",
215 property: "disallowedProperty"
216 }, {
217 object: "anotherObject",
218 property: "anotherDisallowedProperty"
219 }],
220 errors: [{
221 messageId: "restrictedObjectProperty",
222 data: {
223 objectName: "someObject",
224 propertyName: "disallowedProperty",
225 message: ""
226 },
227 type: "MemberExpression"
228 }, {
229 messageId: "restrictedObjectProperty",
230 data: {
231 objectName: "anotherObject",
232 propertyName: "anotherDisallowedProperty",
233 message: ""
234 },
235 type: "MemberExpression"
236 }]
237 }, {
238 code: "foo.__proto__",
239 options: [{
240 property: "__proto__",
241 message: "Please use Object.getPrototypeOf instead."
242 }],
243 errors: [{
244 messageId: "restrictedProperty",
245 data: {
246 objectName: "",
247 propertyName: "__proto__",
248 message: " Please use Object.getPrototypeOf instead."
249 },
250 type: "MemberExpression"
251 }]
252 }, {
253 code: "foo['__proto__']",
254 options: [{
255 property: "__proto__",
256 message: "Please use Object.getPrototypeOf instead."
257 }],
258 errors: [{
259 messageId: "restrictedProperty",
260 data: {
261 objectName: "",
262 propertyName: "__proto__",
263 message: " Please use Object.getPrototypeOf instead."
264 },
265 type: "MemberExpression"
266 }]
267 }, {
268 code: "foo.bar.baz;",
269 options: [{ object: "foo" }],
270 errors: [{
271 messageId: "restrictedObjectProperty",
272 data: {
273 objectName: "foo",
274 propertyName: "bar",
275 message: ""
276 },
277 type: "MemberExpression"
278 }]
279 }, {
280 code: "foo.bar();",
281 options: [{ object: "foo" }],
282 errors: [{
283 messageId: "restrictedObjectProperty",
284 data: {
285 objectName: "foo",
286 propertyName: "bar",
287 message: ""
288 },
289 type: "MemberExpression"
290 }]
291 }, {
292 code: "foo.bar.baz();",
293 options: [{ object: "foo" }],
294 errors: [{
295 messageId: "restrictedObjectProperty",
296 data: {
297 objectName: "foo",
298 propertyName: "bar",
299 message: ""
300 },
301 type: "MemberExpression"
302 }]
303 }, {
304 code: "foo.bar.baz;",
305 options: [{ property: "bar" }],
306 errors: [{
307 messageId: "restrictedProperty",
308 data: {
309 objectName: "",
310 propertyName: "bar",
311 message: ""
312 },
313 type: "MemberExpression"
314 }]
315 }, {
316 code: "foo.bar();",
317 options: [{ property: "bar" }],
318 errors: [{
319 messageId: "restrictedProperty",
320 data: {
321 objectName: "",
322 propertyName: "bar",
323 message: ""
324 },
325 type: "MemberExpression"
326 }]
327 }, {
328 code: "foo.bar.baz();",
329 options: [{ property: "bar" }],
330 errors: [{
331 messageId: "restrictedProperty",
332 data: {
333 objectName: "",
334 propertyName: "bar",
335 message: ""
336 },
337 type: "MemberExpression"
338 }]
339 }, {
340 code: "foo[/(?<zero>0)/]",
341 options: [{ property: "/(?<zero>0)/" }],
342 parserOptions: { ecmaVersion: 2018 },
343 errors: [{
344 messageId: "restrictedProperty",
345 data: {
346 objectName: "",
347 propertyName: "/(?<zero>0)/",
348 message: ""
349 },
350 type: "MemberExpression"
351 }]
352 }, {
353 code: "require.call({}, 'foo')",
354 options: [{
355 object: "require",
356 message: "Please call require() directly."
357 }],
358 errors: [{
359 messageId: "restrictedObjectProperty",
360 data: {
361 objectName: "require",
362 propertyName: "call",
363 message: " Please call require() directly."
364 },
365 type: "MemberExpression"
366 }]
367 }, {
368 code: "require['resolve']",
369 options: [{
370 object: "require"
371 }],
372 errors: [{
373 messageId: "restrictedObjectProperty",
374 data: {
375 objectName: "require",
376 propertyName: "resolve",
377 message: ""
378 },
379 type: "MemberExpression"
380 }]
381 }, {
382 code: "let {bar} = foo;",
383 options: [{ object: "foo", property: "bar" }],
384 parserOptions: { ecmaVersion: 6 },
385 errors: [{
386 messageId: "restrictedObjectProperty",
387 data: {
388 objectName: "foo",
389 propertyName: "bar",
390 message: ""
391 },
392 type: "ObjectPattern"
393 }]
394 }, {
395 code: "let {bar: baz} = foo;",
396 options: [{ object: "foo", property: "bar" }],
397 parserOptions: { ecmaVersion: 6 },
398 errors: [{
399 messageId: "restrictedObjectProperty",
400 data: {
401 objectName: "foo",
402 propertyName: "bar",
403 message: ""
404 },
405 type: "ObjectPattern"
406 }]
407 }, {
408 code: "let {'bar': baz} = foo;",
409 options: [{ object: "foo", property: "bar" }],
410 parserOptions: { ecmaVersion: 6 },
411 errors: [{
412 messageId: "restrictedObjectProperty",
413 data: {
414 objectName: "foo",
415 propertyName: "bar",
416 message: ""
417 },
418 type: "ObjectPattern"
419 }]
420 }, {
421 code: "let {bar: {baz: qux}} = foo;",
422 options: [{ object: "foo", property: "bar" }],
423 parserOptions: { ecmaVersion: 6 },
424 errors: [{
425 messageId: "restrictedObjectProperty",
426 data: {
427 objectName: "foo",
428 propertyName: "bar",
429 message: ""
430 },
431 type: "ObjectPattern"
432 }]
433 }, {
434 code: "let {bar} = foo;",
435 options: [{ object: "foo" }],
436 parserOptions: { ecmaVersion: 6 },
437 errors: [{
438 messageId: "restrictedObjectProperty",
439 data: {
440 objectName: "foo",
441 propertyName: "bar",
442 message: ""
443 },
444 type: "ObjectPattern"
445 }]
446 }, {
447 code: "let {bar: baz} = foo;",
448 options: [{ object: "foo" }],
449 parserOptions: { ecmaVersion: 6 },
450 errors: [{
451 messageId: "restrictedObjectProperty",
452 data: {
453 objectName: "foo",
454 propertyName: "bar",
455 message: ""
456 },
457 type: "ObjectPattern"
458 }]
459 }, {
460 code: "let {bar} = foo;",
461 options: [{ property: "bar" }],
462 parserOptions: { ecmaVersion: 6 },
463 errors: [{
464 messageId: "restrictedProperty",
465 data: {
466 objectName: "",
467 propertyName: "bar",
468 message: ""
469 },
470 type: "ObjectPattern"
471 }]
472 }, {
473 code: "let bar; ({bar} = foo);",
474 options: [{ object: "foo", property: "bar" }],
475 parserOptions: { ecmaVersion: 6 },
476 errors: [{
477 messageId: "restrictedObjectProperty",
478 data: {
479 objectName: "foo",
480 propertyName: "bar",
481 message: ""
482 },
483 type: "ObjectPattern"
484 }]
485 }, {
486 code: "let bar; ({bar: baz = 1} = foo);",
487 options: [{ object: "foo", property: "bar" }],
488 parserOptions: { ecmaVersion: 6 },
489 errors: [{
490 messageId: "restrictedObjectProperty",
491 data: {
492 objectName: "foo",
493 propertyName: "bar",
494 message: ""
495 },
496 type: "ObjectPattern"
497 }]
498 }, {
499 code: "function qux({bar} = foo) {}",
500 options: [{ object: "foo", property: "bar" }],
501 parserOptions: { ecmaVersion: 6 },
502 errors: [{
503 messageId: "restrictedObjectProperty",
504 data: {
505 objectName: "foo",
506 propertyName: "bar",
507 message: ""
508 },
509 type: "ObjectPattern"
510 }]
511 }, {
512 code: "function qux({bar: baz} = foo) {}",
513 options: [{ object: "foo", property: "bar" }],
514 parserOptions: { ecmaVersion: 6 },
515 errors: [{
516 messageId: "restrictedObjectProperty",
517 data: {
518 objectName: "foo",
519 propertyName: "bar",
520 message: ""
521 },
522 type: "ObjectPattern"
523 }]
524 }, {
525 code: "var {['foo']: qux, bar} = baz",
526 options: [{ object: "baz", property: "foo" }],
527 parserOptions: { ecmaVersion: 6 },
528 errors: [{
529 messageId: "restrictedObjectProperty",
530 data: {
531 objectName: "baz",
532 propertyName: "foo",
533 message: ""
534 },
535 type: "ObjectPattern"
536 }]
609c276f
TL
537 }, {
538 code: "obj['#foo']",
539 options: [{ property: "#foo" }],
540 errors: [{
541 messageId: "restrictedProperty",
542 data: {
543 objectName: "",
544 propertyName: "#foo",
545 message: ""
546 },
547 type: "MemberExpression"
548 }]
eb39fafa
DC
549 }
550 ]
551});