Files
javascript-obfuscator-javas…/test/functional-tests/templates/custom-nodes/string-array-nodes/StringArrayCallsWrapperNodeTemplate.spec.ts
T

94 lines
3.5 KiB
TypeScript

import * as format from 'string-template';
import { AtobTemplate } from '../../../../../src/templates/custom-nodes/AtobTemplate';
import { Rc4Template } from '../../../../../src/templates/custom-nodes/Rc4Template';
import { StringArrayBase64DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate';
import { StringArrayCallsWrapperTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate';
import { StringArrayRc4DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate';
import { CryptUtils } from '../../../../../src/utils/CryptUtils';
const assert: Chai.AssertStatic = require('chai').assert;
/**
* @param templateData
* @param stringArrayName
* @param stringArrayCallsWrapperName
* @param index
* @returns {Function}
*/
function getFunctionFromTemplateBase64Encoding (
templateData: any,
stringArrayName: string,
stringArrayCallsWrapperName: string,
index: string
) {
let stringArrayCallsWrapperTemplate: string = format(StringArrayCallsWrapperTemplate(), templateData);
return Function(`
var ${stringArrayName} = ['${CryptUtils.btoa('test1')}'];
${stringArrayCallsWrapperTemplate}
return ${stringArrayCallsWrapperName}(${index});
`)();
}
/**
* @param templateData
* @param stringArrayName
* @param stringArrayCallsWrapperName
* @param index
* @param key
* @returns {Function}
*/
function getFunctionFromTemplateRc4Encoding (
templateData: any,
stringArrayName: string,
stringArrayCallsWrapperName: string,
index: string,
key: string
) {
let stringArrayCallsWrapperTemplate: string = format(StringArrayCallsWrapperTemplate(), templateData);
return Function(`
var ${stringArrayName} = ['${CryptUtils.btoa(CryptUtils.rc4('test1', key))}'];
${stringArrayCallsWrapperTemplate}
return ${stringArrayCallsWrapperName}('${index}', '${key}');
`)();
}
describe('StringArrayCallsWrapperNodeTemplate (): string', () => {
let stringArrayName: string = 'stringArrayName',
stringArrayCallsWrapperName: string = 'stringArrayCallsWrapperName',
atobDecodeNodeTemplate: string = format(StringArrayBase64DecodeNodeTemplate(), {
atobPolyfill: AtobTemplate(),
selfDefendingCode: '',
stringArrayCallsWrapperName
}),
rc4DecodeNodeTemplate: string = format(StringArrayRc4DecodeNodeTemplate(), {
atobPolyfill: AtobTemplate(),
rc4Polyfill: Rc4Template(),
selfDefendingCode: '',
stringArrayCallsWrapperName
});
it('should correctly returns decoded value with base64 encoding', () => {
assert.deepEqual(getFunctionFromTemplateBase64Encoding({
decodeNodeTemplate: atobDecodeNodeTemplate,
stringArrayCallsWrapperName,
stringArrayName
}, stringArrayName, stringArrayCallsWrapperName, '0x0'), 'test1');
});
it('should correctly returns decoded value with rc4 encoding', () => {
assert.deepEqual(getFunctionFromTemplateRc4Encoding({
decodeNodeTemplate: rc4DecodeNodeTemplate,
stringArrayCallsWrapperName,
stringArrayName
}, stringArrayName, stringArrayCallsWrapperName, '0x0', 'key'), 'test1');
});
});