Added more tests for emoji support of splitStrings option

This commit is contained in:
sanex
2020-09-02 09:54:46 +03:00
parent 340b7283be
commit c46f31d665
4 changed files with 69 additions and 27 deletions
+3 -2
View File
@@ -7,7 +7,7 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
`
var string1 = 'ab😴😄cd';
var string1 = '👋🏼';
console.log(string1);
`,
@@ -17,7 +17,8 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
stringArray: true,
stringArrayThreshold: 1,
splitStrings: true,
splitStringsChunkLength: 1
splitStringsChunkLength: 1,
unicodeEscapeSequence: true
}
).getObfuscatedCode();
@@ -164,40 +164,80 @@ describe('SplitStringTransformer', () => {
});
describe('Variant #10: string with emoji', () => {
it('should correctly split string with emoji', () => {
const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\ude34' *\+ *'\ud83d' *\+ *'\ude04' *\+ *'c' *\+ *'d';$/;
describe('Variant #1: single emoji', () => {
it('should correctly split string with emoji', () => {
const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\udc4b' *\+ *'\ud83c' *\+ *'\udffc' *\+ *'c' *\+ *'d';$/;
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js');
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-1.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
assert.match(obfuscatedCode, regExp);
assert.match(obfuscatedCode, regExp);
});
it('should correctly evaluate splitted string with emoji', () => {
const expectedResultString: string = 'ab👋🏼cd';
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-1.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
const resultString: string = eval(obfuscatedCode);
assert.equal(resultString, expectedResultString);
});
});
it('should correctly evaluate splitted string with emoji', () => {
const expectedResultString: string = 'ab😴😄cd';
describe('Variant #2: multiple emoji', () => {
it('should correctly split string with emoji', () => {
const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\ude34' *\+ *'\ud83d' *\+ *'\ude04' *\+ *'c' *\+ *'d';$/;
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js');
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-2.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
const resultString: string = eval(obfuscatedCode);
assert.match(obfuscatedCode, regExp);
});
assert.equal(resultString, expectedResultString);
it('should correctly evaluate splitted string with emoji', () => {
const expectedResultString: string = 'ab😴😄cd';
const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-2.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
splitStrings: true,
splitStringsChunkLength: 1
}
).getObfuscatedCode();
const resultString: string = eval(obfuscatedCode);
assert.equal(resultString, expectedResultString);
});
});
});