72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { assert } from 'chai'
|
|
|
|
import { linkifyAndClean } from '@/utils/inputs'
|
|
|
|
describe('linkifyAndClean (clean input remains unchanged)', () => {
|
|
const testInputs = [
|
|
'just a text\nfor "test"',
|
|
'link: <a href="http://www.example.com">example</a>',
|
|
'link: <a href="http://www.example.com" target="_blank">example</a>',
|
|
]
|
|
|
|
testInputs.map((testInput) => {
|
|
it(`it returns unmodified input: '${testInput}'`, () => {
|
|
assert.equal(linkifyAndClean(testInput), testInput)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('linkifyAndClean (URL is linkified)', () => {
|
|
it('it returns URL as link with target blank', () => {
|
|
assert.equal(
|
|
linkifyAndClean('link: http://www.example.com'),
|
|
'link: <a href="http://www.example.com" target="_blank">http://www.example.com</a>'
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('linkifyAndClean (input sanitization)', () => {
|
|
const testsParams = [
|
|
{
|
|
description: 'it escapes "script" tags',
|
|
inputString: "<script>alert('evil!')</script>",
|
|
expectedString: "<script>alert('evil!')</script>",
|
|
},
|
|
{
|
|
description: 'it escapes nested tags',
|
|
inputString: '<p><b>test</b></p>',
|
|
expectedString: '<p><b>test</b></p>',
|
|
},
|
|
{
|
|
description: 'it escapes single tag',
|
|
inputString: '<p>test',
|
|
expectedString: '<p>test</p>',
|
|
},
|
|
{
|
|
description: 'it removes css classe',
|
|
inputString: '<div class="active">test</div>',
|
|
expectedString: '<div>test</div>',
|
|
},
|
|
{
|
|
description: 'it removes style attribute',
|
|
inputString: '<div style="display:none;">test</div>',
|
|
expectedString: '<div>test</div>',
|
|
},
|
|
{
|
|
description: 'it keeps nested HTML link',
|
|
inputString: '<p><a href="http://www.example.com">example</a></p>',
|
|
expectedString:
|
|
'<p><a href="http://www.example.com">example</a></p>',
|
|
},
|
|
]
|
|
|
|
testsParams.map((testParams) => {
|
|
it(testParams.description, () => {
|
|
assert.equal(
|
|
linkifyAndClean(testParams.inputString),
|
|
testParams.expectedString
|
|
)
|
|
})
|
|
})
|
|
})
|