mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-23 09:58:12 +01:00
Biggest changes forced by this: alt tags for all images, resulting in new strings added to messages.json, and a new i18n paramter/prop added in a plot of places. Another change of note is that there are two new tslint.json files under ts/test and ts/styleguide to relax our rules a bit there. This required a change to our package.json script, as manually specifying the config file there made it ignore our tslint.json files in subdirectories
97 lines
2.8 KiB
TypeScript
97 lines
2.8 KiB
TypeScript
import { assert } from 'chai';
|
|
|
|
import * as HTML from '../../html';
|
|
|
|
interface Test {
|
|
input: string;
|
|
name: string;
|
|
output?: string;
|
|
outputHref?: string;
|
|
outputLabel?: string;
|
|
postText?: string;
|
|
preText?: string;
|
|
skipped?: boolean;
|
|
}
|
|
|
|
describe('HTML', () => {
|
|
describe('linkText', () => {
|
|
const TESTS: Array<Test> = [
|
|
{
|
|
name: 'square brackets',
|
|
input: 'https://www.example.com/test.html?foo=bar&baz[qux]=quux',
|
|
output: 'https://www.example.com/test.html?foo=bar&baz[qux]=quux',
|
|
},
|
|
{
|
|
name: 'Chinese characters',
|
|
input: 'https://zh.wikipedia.org/zh-hans/信号',
|
|
output: 'https://zh.wikipedia.org/zh-hans/信号',
|
|
},
|
|
{
|
|
name: 'Cyrillic characters',
|
|
input: 'https://ru.wikipedia.org/wiki/Сигнал',
|
|
output: 'https://ru.wikipedia.org/wiki/Сигнал',
|
|
},
|
|
{
|
|
skipped: true,
|
|
name: 'trailing exclamation points',
|
|
input: 'https://en.wikipedia.org/wiki/Mother!',
|
|
output: 'https://en.wikipedia.org/wiki/Mother!',
|
|
},
|
|
{
|
|
name: 'single quotes',
|
|
input: "https://www.example.com/this-couldn't-be-true",
|
|
output: "https://www.example.com/this-couldn't-be-true",
|
|
},
|
|
{
|
|
name: 'special characters before URL begins',
|
|
preText: 'wink ;)',
|
|
input: 'https://www.youtube.com/watch?v=oHg5SJYRHA0',
|
|
output: 'https://www.youtube.com/watch?v=oHg5SJYRHA0',
|
|
},
|
|
{
|
|
name: 'URLs without protocols',
|
|
input: 'github.com',
|
|
// tslint:disable-next-line:no-http-string
|
|
outputHref: 'http://github.com',
|
|
outputLabel: 'github.com',
|
|
},
|
|
];
|
|
|
|
TESTS.forEach(test => {
|
|
(test.skipped ? it.skip : it)(`should handle ${test.name}`, () => {
|
|
const preText = test.preText || 'Hello ';
|
|
const postText = test.postText || ' World!';
|
|
const input: string = `${preText}${test.input}${postText}`;
|
|
const expected: string = [
|
|
preText,
|
|
`<a href="${test.outputHref || test.output}" target="_blank">`,
|
|
test.outputLabel || test.output,
|
|
'</a>',
|
|
postText,
|
|
].join('');
|
|
|
|
const actual = HTML.linkText(input);
|
|
assert.equal(actual, expected);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('render', () => {
|
|
it('should preserve line breaks', () => {
|
|
const input: string = 'Hello\n\n\nWorld!';
|
|
const expected: string = 'Hello<br><br><br>World!';
|
|
|
|
const actual = HTML.render(input);
|
|
assert.equal(actual, expected);
|
|
});
|
|
|
|
it('should not escape HTML', () => {
|
|
const input: string = "Hello\n<script>alert('evil');</script>World!";
|
|
const expected: string = "Hello<br><script>alert('evil');</script>World!";
|
|
|
|
const actual = HTML.render(input);
|
|
assert.equal(actual, expected);
|
|
});
|
|
});
|
|
});
|