pve-eslint/eslint/tests/lib/rules/no-restricted-modules.js
Thomas Lamprecht 609c276fc2 import 8.3.0 source
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-12-01 13:39:06 +01:00

195 lines
7.6 KiB
JavaScript

/**
* @fileoverview Tests for no-restricted-modules.
* @author Christian Schulz
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/no-restricted-modules"),
{ RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester();
ruleTester.run("no-restricted-modules", rule, {
valid: [
{ code: "require(\"fs\")", options: ["crypto"] },
{ code: "require(\"path\")", options: ["crypto", "stream", "os"] },
"require(\"fs \")",
{ code: "require(2)", options: ["crypto"] },
{ code: "require(foo)", options: ["crypto"] },
{ code: "var foo = bar('crypto');", options: ["crypto"] },
{ code: "require(\"foo/bar\");", options: ["foo"] },
{ code: "var withPaths = require(\"foo/bar\");", options: [{ paths: ["foo", "bar"] }] },
{ code: "var withPatterns = require(\"foo/bar\");", options: [{ patterns: ["foo/c*"] }] },
{ code: "var withPatternsAndPaths = require(\"foo/bar\");", options: [{ paths: ["foo"], patterns: ["foo/c*"] }] },
{ code: "var withGitignores = require(\"foo/bar\");", options: [{ paths: ["foo"], patterns: ["foo/*", "!foo/bar"] }] },
{ code: "require(`fs`)", options: ["crypto"], parserOptions: { ecmaVersion: 6 } },
{ code: "require(`foo${bar}`)", options: ["foo"], parserOptions: { ecmaVersion: 6 } },
{ code: "var foo = require('foo');", options: ["../foo"] },
{ code: "var foo = require('foo');", options: [{ paths: ["../foo"] }] },
{ code: "var foo = require('foo');", options: [{ patterns: ["../foo"] }] },
{ code: "var foo = require('foo');", options: ["/foo"] },
{ code: "var foo = require('foo');", options: [{ paths: ["/foo"] }] },
"var relative = require('../foo');",
{ code: "var relative = require('../foo');", options: ["../notFoo"] },
{ code: "var relativeWithPaths = require('../foo');", options: [{ paths: ["../notFoo"] }] },
{ code: "var relativeWithPatterns = require('../foo');", options: [{ patterns: ["notFoo"] }] },
"var absolute = require('/foo');",
{ code: "var absolute = require('/foo');", options: ["/notFoo"] },
{ code: "var absoluteWithPaths = require('/foo');", options: [{ paths: ["/notFoo"] }] },
{ code: "var absoluteWithPatterns = require('/foo');", options: [{ patterns: ["notFoo"] }] }
],
invalid: [{
code: "require(\"fs\")",
options: ["fs"],
errors: [{ messageId: "defaultMessage", data: { name: "fs" }, type: "CallExpression" }]
}, {
code: "require(\"os \")",
options: ["fs", "crypto ", "stream", "os"],
errors: [{ messageId: "defaultMessage", data: { name: "os" }, type: "CallExpression" }]
}, {
code: "require(\"foo/bar\");",
options: ["foo/bar"],
errors: [{ messageId: "defaultMessage", data: { name: "foo/bar" }, type: "CallExpression" }]
}, {
code: "var withPaths = require(\"foo/bar\");",
options: [{ paths: ["foo/bar"] }],
errors: [{ messageId: "defaultMessage", data: { name: "foo/bar" }, type: "CallExpression" }]
}, {
code: "var withPatterns = require(\"foo/bar\");",
options: [{ patterns: ["foo/*"] }],
errors: [{ messageId: "patternMessage", data: { name: "foo/bar" }, type: "CallExpression" }]
}, {
code: "var withPatternsAndPaths = require(\"foo/bar\");",
options: [{ patterns: ["foo/*"], paths: ["foo"] }],
errors: [{ messageId: "patternMessage", data: { name: "foo/bar" }, type: "CallExpression" }]
}, {
code: "var withGitignores = require(\"foo/bar\");",
options: [{ patterns: ["foo/*", "!foo/baz"], paths: ["foo"] }],
errors: [{ messageId: "patternMessage", data: { name: "foo/bar" }, type: "CallExpression" }]
}, {
code: "var withGitignores = require(\"foo\");",
options: [{
name: "foo",
message: "Please use 'bar' module instead."
}],
errors: [{
messageId: "customMessage",
data: { name: "foo", customMessage: "Please use 'bar' module instead." },
type: "CallExpression"
}]
}, {
code: "var withGitignores = require(\"bar\");",
options: [
"foo",
{
name: "bar",
message: "Please use 'baz' module instead."
},
"baz"
],
errors: [{
messageId: "customMessage",
data: { name: "bar", customMessage: "Please use 'baz' module instead." },
type: "CallExpression"
}]
}, {
code: "var withGitignores = require(\"foo\");",
options: [{
paths: [{
name: "foo",
message: "Please use 'bar' module instead."
}]
}],
errors: [{
messageId: "customMessage",
data: { name: "foo", customMessage: "Please use 'bar' module instead." },
type: "CallExpression"
}]
}, {
code: "require(`fs`)",
options: ["fs"],
parserOptions: { ecmaVersion: 6 },
errors: [{ messageId: "defaultMessage", data: { name: "fs" }, type: "CallExpression" }]
}, {
code: "require(`crypt\\o`);",
options: ["crypto"],
parserOptions: { ecmaVersion: 6 },
errors: [{ messageId: "defaultMessage", data: { name: "crypto" }, type: "CallExpression" }]
},
{
code: "var relative = require('../foo');",
options: ["../foo"],
errors: [{
message: "'../foo' module is restricted from being used.",
type: "CallExpression",
line: 1,
column: 16,
endColumn: 33
}]
},
{
code: "var relativeWithPaths = require('../foo');",
options: [{ paths: ["../foo"] }],
errors: [{
message: "'../foo' module is restricted from being used.",
type: "CallExpression",
line: 1,
column: 25,
endColumn: 42
}]
},
{
code: "var relativeWithPatterns = require('../foo');",
options: [{ patterns: ["../foo"] }],
errors: [{
message: "'../foo' module is restricted from being used by a pattern.",
type: "CallExpression",
line: 1,
column: 28,
endColumn: 45
}]
},
{
code: "var absolute = require('/foo');",
options: ["/foo"],
errors: [{
message: "'/foo' module is restricted from being used.",
type: "CallExpression",
line: 1,
column: 16,
endColumn: 31
}]
},
{
code: "var absoluteWithPaths = require('/foo');",
options: [{ paths: ["/foo"] }],
errors: [{
message: "'/foo' module is restricted from being used.",
type: "CallExpression",
line: 1,
column: 25,
endColumn: 40
}]
},
{
code: "var absoluteWithPatterns = require('/foo');",
options: [{ patterns: ["foo"] }],
errors: [{
message: "'/foo' module is restricted from being used by a pattern.",
type: "CallExpression",
line: 1,
column: 28,
endColumn: 43
}]
}]
});