/** * @fileoverview Forbid target='_blank' attribute * @author Kevin Miller */ 'use strict'; // ------------------------------------------------------------------------------ // Requirements // ------------------------------------------------------------------------------ const RuleTester = require('../../helpers/ruleTester'); const rule = require('../../../lib/rules/jsx-no-target-blank'); const parsers = require('../../helpers/parsers'); const parserOptions = { ecmaVersion: 2018, sourceType: 'module', ecmaFeatures: { jsx: true, }, }; // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ const ruleTester = new RuleTester({ parserOptions }); const defaultErrors = [{ messageId: 'noTargetBlankWithoutNoreferrer' }]; const allowReferrerErrors = [{ messageId: 'noTargetBlankWithoutNoopener' }]; ruleTester.run('jsx-no-target-blank', rule, { valid: parsers.all([ { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: 's' }, { code: 's' }, { code: '' }, { code: '' }, { code: '
' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '' }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], }, { code: '', options: [{ enforceDynamicLinks: 'never' }], }, { code: '', options: [{ enforceDynamicLinks: 'never' }], }, { code: '', options: [{ enforceDynamicLinks: 'never' }], }, { code: '', options: [{ enforceDynamicLinks: 'never' }], settings: { linkComponents: ['Link'] }, }, { code: '', options: [{ enforceDynamicLinks: 'never' }], settings: { linkComponents: { name: 'Link', linkAttribute: 'to' } }, }, { code: '', options: [{ enforceDynamicLinks: 'never' }], settings: { linkComponents: { name: 'Link', linkAttribute: ['to'] } }, }, { code: '', options: [{ allowReferrer: true }], }, { code: '', options: [{ allowReferrer: true }], }, { code: '', }, { code: '', }, { code: '', }, { code: '', options: [{ forms: false }], }, { code: '', options: [{ forms: false, links: true }], }, { code: '', options: [], }, { code: '', options: [{ forms: true }], }, { code: '', options: [{ forms: true, links: false }], }, { code: '', }, { code: '', }, { code: '', }, { code: '', }, { code: '', options: [{ allowReferrer: true }], }, { code: '', }, { code: '', }, { code: '', }, { code: '', }, { code: '', options: [{ forms: true }], }, { code: '', options: [{ forms: true }], }, ]), invalid: parsers.all([ { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', errors: defaultErrors, }, { code: '', output: '', options: [{ allowReferrer: true }], errors: allowReferrerErrors, }, { code: '', output: '', options: [{ allowReferrer: true }], errors: allowReferrerErrors, }, { code: '', output: '', options: [{ enforceDynamicLinks: 'always' }], errors: defaultErrors, }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], errors: defaultErrors, }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], errors: defaultErrors, }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], errors: defaultErrors, }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], errors: defaultErrors, }, { code: '', options: [{ enforceDynamicLinks: 'always', warnOnSpreadAttributes: true }], errors: defaultErrors, }, { code: '', output: '', options: [{ enforceDynamicLinks: 'always' }], settings: { linkComponents: ['Link'] }, errors: defaultErrors, }, { code: '', output: '', options: [{ enforceDynamicLinks: 'always' }], settings: { linkComponents: { name: 'Link', linkAttribute: 'to' } }, errors: defaultErrors, }, { code: '', errors: defaultErrors, options: [{ warnOnSpreadAttributes: true }], }, { code: '', errors: defaultErrors, options: [{ warnOnSpreadAttributes: true }], }, { code: '', output: '', options: [{ links: true }], errors: defaultErrors, }, { code: '', output: '', options: [{ links: true, forms: true }], errors: defaultErrors, }, { code: '', output: '', options: [{ links: true, forms: false }], errors: defaultErrors, }, { code: '', options: [{ forms: true }], errors: defaultErrors, }, { code: '', options: [{ forms: true }], errors: defaultErrors, }, { code: '', options: [{ forms: true }], errors: defaultErrors, }, { code: '', options: [{ forms: true, links: false }], errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', errors: defaultErrors, }, { code: '', options: [{ allowReferrer: true }], errors: allowReferrerErrors, }, { code: '', options: [{ allowReferrer: true, forms: true }], errors: allowReferrerErrors, }, { code: '', options: [{ forms: true }], errors: defaultErrors, }, { code: '', options: [{ forms: true, warnOnSpreadAttributes: true }], errors: defaultErrors, }, ]), });