DomainLockNodeTemplate.spec.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import 'format-unicorn';
  2. import { DomainLockNodeTemplate } from '../../../../../src/templates/custom-nodes/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate';
  3. import { Utils } from '../../../../../src/Utils';
  4. const assert: Chai.AssertStatic = require('chai').assert;
  5. /**
  6. * @param templateData
  7. * @param currentDomain
  8. * @returns {Function}
  9. */
  10. function getFunctionFromTemplate (templateData: any, currentDomain: string) {
  11. let domainLockTemplate: string = DomainLockNodeTemplate().formatUnicorn(templateData);
  12. return Function(`
  13. document = {
  14. domain: '${currentDomain}'
  15. };
  16. ${domainLockTemplate}
  17. `)();
  18. }
  19. describe('DomainLockNodeTemplate (): string', () => {
  20. let domainsString: string,
  21. currentDomain: string,
  22. hiddenDomainsString: string,
  23. diff: string;
  24. it('should correctly runs code inside template if current domain matches with `domainsString`', () => {
  25. domainsString = ['www.example.com'].join(';');
  26. currentDomain = 'www.example.com';
  27. [
  28. hiddenDomainsString,
  29. diff
  30. ] = Utils.hideString(domainsString, domainsString.length * 3);
  31. assert.doesNotThrow(() => getFunctionFromTemplate({
  32. domainLockFunctionName: 'func',
  33. diff: diff,
  34. domains: hiddenDomainsString
  35. }, currentDomain));
  36. });
  37. it('should correctly runs code inside template if current domain matches with base domain of `domainsString` item', () => {
  38. domainsString = ['www.test.com', '.example.com'].join(';');
  39. currentDomain = 'subdomain.example.com';
  40. [
  41. hiddenDomainsString,
  42. diff
  43. ] = Utils.hideString(domainsString, domainsString.length * 3);
  44. assert.doesNotThrow(() => getFunctionFromTemplate({
  45. domainLockFunctionName: 'func',
  46. diff: diff,
  47. domains: hiddenDomainsString
  48. }, currentDomain));
  49. });
  50. it('should throw an error if current domain doesn\'t match with `domainsString`', () => {
  51. domainsString = ['www.example.com'].join(';');
  52. currentDomain = 'www.test.com';
  53. [
  54. hiddenDomainsString,
  55. diff
  56. ] = Utils.hideString(domainsString, domainsString.length * 3);
  57. assert.throws(() => getFunctionFromTemplate({
  58. domainLockFunctionName: 'func',
  59. diff: diff,
  60. domains: hiddenDomainsString
  61. }, currentDomain));
  62. });
  63. afterEach(() => {
  64. delete (<any>global).promisePolyfillActivationFlag;
  65. });
  66. });