dependency-cruiser
Version:
Validate and visualize javascript dependencies. With your rules. ES6, CommonJS, AMD
270 lines (242 loc) • 8.99 kB
JavaScript
"use strict";
const expect = require('chai').expect;
const validator = require('../../src/validate/validator');
describe("validator", () => {
it("bails out on scary regexps", () => {
try {
validator.validate(
true,
"./test/fixtures/rules.scary-regex.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
);
expect("not to be here").to.equal("still here, though");
} catch (e) {
expect(e).to.deep.equal(
Error(
'Error: rule {"from":".+","to":"(.+)*"} has an unsafe regular expression. Bailing out.\n'
)
);
}
});
it("is ok with the empty validation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.empty.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
)
).to.deep.equal({valid: true});
});
it("is ok with the 'everything allowed' validation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.everything-allowed.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
)
).to.deep.equal({valid: true});
});
it("is ok with the 'everything allowed' validation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.impossible-to-match-allowed.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
)
).to.deep.equal({valid: false, rule: {severity: "warn", "name": "not-in-allowed"}});
});
it("is ok with the 'nothing allowed' validation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.nothing-allowed.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
)
).to.deep.equal({valid: false, rule: {severity: 'warn', name: 'unnamed'}});
});
it("node_modules inhibition - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.node_modules-not-allowed.json",
"koos koets",
{"resolved": "robby van de kerkhof"}
)
).to.deep.equal({valid: true});
});
it("node_modules inhibition - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.node_modules-not-allowed.json",
"koos koets",
{"resolved": "./node_modules/evil-module"}
)
).to.deep.equal({valid: false, rule: {severity: 'warn', name: 'unnamed'}});
});
it("not to core - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-core.json",
"koos koets",
{"resolved": "path", "coreModule": false}
)
).to.deep.equal({valid: true});
});
it("not to core - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-core.json",
"koos koets",
{"resolved": "path", "coreModule": true}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'not-to-core'}});
});
it("not to core fs os - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-core-fs-os.json",
"koos koets",
{"resolved": "path", "coreModule": true}
)
).to.deep.equal({valid: true});
});
it("not to core fs os - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-core-fs-os.json",
"koos koets",
{"resolved": "os", "coreModule": true}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'not-to-core-fs-os'}});
});
it("not to unresolvable - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-unresolvable.json",
"koos koets",
{"resolved": "diana charitee", "couldNotResolve": false}
)
).to.deep.equal({valid: true});
});
it("not to unresolvable - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-unresolvable.json",
"koos koets",
{"resolved": "diana charitee", "couldNotResolve": true}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'not-to-unresolvable'}});
});
it("only to core - via 'allowed' - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.only-to-core.allowed.json",
"koos koets",
{"resolved": "os", "coreModule": true}
)
).to.deep.equal({valid: true});
});
it("only to core - via 'allowed' - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.only-to-core.allowed.json",
"koos koets",
{"resolved": "ger hekking", "coreModule": false}
)
).to.deep.equal({valid: false, rule: {severity: 'warn', name: 'not-in-allowed'}});
});
it("only to core - via 'forbidden' - ok", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.only-to-core.forbidden.json",
"koos koets",
{"resolved": "os", "coreModule": true}
)
).to.deep.equal({valid: true});
});
it("only to core - via 'forbidden' - violation", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.only-to-core.forbidden.json",
"koos koets",
{"resolved": "ger hekking", "coreModule": false}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'only-to-core'}});
});
it("not to sub except sub itself - ok - sub to sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-sub-except-sub.json",
"./keek/op/de/sub/week.js",
{"resolved": "./keek/op/de/sub/maand.js", "coreModule": false}
)
).to.deep.equal({valid: true});
});
it("not to sub except sub itself - ok - not sub to not sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-sub-except-sub.json",
"./doctor/clavan.js",
{"resolved": "./rochebrune.js", "coreModule": false}
)
).to.deep.equal({valid: true});
});
it("not to sub except sub itself - ok - sub to not sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-sub-except-sub.json",
"./doctor/sub/clavan.js",
{"resolved": "./rochebrune.js", "coreModule": false}
)
).to.deep.equal({valid: true});
});
it("not to sub except sub itself - violation - not sub to sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-sub-except-sub.json",
"./doctor/clavan.js",
{"resolved": "./keek/op/de/sub/week.js", "coreModule": false}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'not-to-sub-except-sub'}});
});
it("not to not sub (=> everything must go to 'sub')- ok - sub to sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-not-sub.json",
"./keek/op/de/sub/week.js",
{"resolved": "./keek/op/de/sub/maand.js", "coreModule": false}
)
).to.deep.equal({valid: true});
});
it("not to not sub (=> everything must go to 'sub')- violation - not sub to not sub", () => {
expect(
validator.validate(
true,
"./test/fixtures/rules.not-to-not-sub.json",
"./amber.js",
{"resolved": "./jade.js", "coreModule": false}
)
).to.deep.equal({valid: false, rule: {severity: 'error', name: 'not-to-not-sub'}});
});
});