DomainLockNodeTemplate.spec.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. diff: diff,
  33. domains: hiddenDomainsString
  34. }, currentDomain));
  35. });
  36. it('should correctly runs code inside template if current domain matches with base domain of `domainsString` item', () => {
  37. domainsString = ['www.test.com', '.example.com'].join(';');
  38. currentDomain = 'subdomain.example.com';
  39. [
  40. hiddenDomainsString,
  41. diff
  42. ] = Utils.hideString(domainsString, domainsString.length * 3);
  43. assert.doesNotThrow(() => getFunctionFromTemplate({
  44. diff: diff,
  45. domains: hiddenDomainsString
  46. }, currentDomain));
  47. });
  48. it('should throw an error if current domain doesn\'t match with `domainsString`', () => {
  49. domainsString = ['www.example.com'].join(';');
  50. currentDomain = 'www.test.com';
  51. [
  52. hiddenDomainsString,
  53. diff
  54. ] = Utils.hideString(domainsString, domainsString.length * 3);
  55. assert.throws(() => getFunctionFromTemplate({
  56. diff: diff,
  57. domains: hiddenDomainsString
  58. }, currentDomain));
  59. });
  60. });