StringsArrayCallsWrapperNodeTemplate.spec.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import 'format-unicorn';
  2. import { AtobTemplate } from '../../../../../src/templates/custom-nodes/AtobTemplate';
  3. import { Rc4Template } from '../../../../../src/templates/custom-nodes/Rc4Template';
  4. import { StringsArrayBase64DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/strings-array-nodes/strings-array-calls-wrapper/StringsArrayBase64DecodeNodeTemplate';
  5. import { StringsArrayCallsWrapperTemplate } from '../../../../../src/templates/custom-nodes/strings-array-nodes/strings-array-calls-wrapper/StringsArrayCallsWrapperTemplate';
  6. import { StringsArrayRc4DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/strings-array-nodes/strings-array-calls-wrapper/StringsArrayRC4DecodeNodeTemplate';
  7. import { Utils } from '../../../../../src/Utils';
  8. const assert: Chai.AssertStatic = require('chai').assert;
  9. /**
  10. * @param templateData
  11. * @param stringsArrayName
  12. * @param stringsArrayCallsWrapperName
  13. * @param index
  14. * @returns {Function}
  15. */
  16. function getFunctionFromTemplateBase64Encoding (
  17. templateData: any,
  18. stringsArrayName: string,
  19. stringsArrayCallsWrapperName: string,
  20. index: string
  21. ) {
  22. let stringsArrayCallsWrapperTemplate: string = StringsArrayCallsWrapperTemplate().formatUnicorn(templateData);
  23. return Function(`
  24. var ${stringsArrayName} = ['${Utils.btoa('test1')}'];
  25. ${stringsArrayCallsWrapperTemplate}
  26. return ${stringsArrayCallsWrapperName}(${index});
  27. `)();
  28. }
  29. /**
  30. * @param templateData
  31. * @param stringsArrayName
  32. * @param stringsArrayCallsWrapperName
  33. * @param index
  34. * @param key
  35. * @returns {Function}
  36. */
  37. function getFunctionFromTemplateRc4Encoding (
  38. templateData: any,
  39. stringsArrayName: string,
  40. stringsArrayCallsWrapperName: string,
  41. index: string,
  42. key: string
  43. ) {
  44. let stringsArrayCallsWrapperTemplate: string = StringsArrayCallsWrapperTemplate().formatUnicorn(templateData);
  45. return Function(`
  46. var ${stringsArrayName} = ['${Utils.btoa(Utils.rc4('test1', key))}'];
  47. ${stringsArrayCallsWrapperTemplate}
  48. return ${stringsArrayCallsWrapperName}('${index}', '${key}');
  49. `)();
  50. }
  51. describe('StringsArrayCallsWrapperNodeTemplate (): string', () => {
  52. let stringsArrayName: string = 'stringsArrayName',
  53. stringsArrayCallsWrapperName: string = 'stringsArrayCallsWrapperName',
  54. atobDecodeNodeTemplate: string = StringsArrayBase64DecodeNodeTemplate().formatUnicorn({
  55. atobPolyfill: AtobTemplate(),
  56. selfDefendingCode: '',
  57. stringsArrayCallsWrapperName
  58. }),
  59. rc4DecodeNodeTemplate: string = StringsArrayRc4DecodeNodeTemplate().formatUnicorn({
  60. atobPolyfill: AtobTemplate(),
  61. rc4Polyfill: Rc4Template(),
  62. selfDefendingCode: '',
  63. stringsArrayCallsWrapperName
  64. });
  65. it('should correctly returns decoded value with base64 encoding', () => {
  66. assert.deepEqual(getFunctionFromTemplateBase64Encoding({
  67. decodeNodeTemplate: atobDecodeNodeTemplate,
  68. stringsArrayCallsWrapperName,
  69. stringsArrayName
  70. }, stringsArrayName, stringsArrayCallsWrapperName, '0x0'), 'test1');
  71. });
  72. it('should correctly returns decoded value with rc4 encoding', () => {
  73. assert.deepEqual(getFunctionFromTemplateRc4Encoding({
  74. decodeNodeTemplate: rc4DecodeNodeTemplate,
  75. stringsArrayCallsWrapperName,
  76. stringsArrayName
  77. }, stringsArrayName, stringsArrayCallsWrapperName, '0x0', 'key'), 'test1');
  78. });
  79. });