MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/bitninja-dispatcher/node_modules/ebg13/index.spec.js
const rot13 = require('./index');

describe('rot13', () => {
  describe('when using defaults', () => {
    it('should encode a string using rot13 by default', () => {
      const secretMessage = 'Secret Message';
      const expected = 'Frperg Zrffntr';
      const actual = rot13(secretMessage);
      expect(expected).toBe(actual);
    });

    it('should decode a string using rot13 by default', () => {
      const secretMessage = 'Secret Message';
      const encodedMessage = rot13(secretMessage);
      const decodedMessage = rot13(encodedMessage);
      expect(decodedMessage).toBe(secretMessage);
    });
  });

  describe('when using an assymetric key', () => {
    it('should encode a string using caesar cipher when using a key', () => {
      const secretMessage = 'Secret Message';
      const expected = 'Eqodqf Yqeemsq';
      const actual = rot13(secretMessage, 12);
      expect(expected).toBe(actual);
    });

    it('should decode a string using caesar cipher when using a key', () => {
      const secretMessage = 'Secret Message';
      const encodedMessage = rot13(secretMessage, 12);
      const decodedMessage = rot13(encodedMessage, 14);
      expect(decodedMessage).toBe(secretMessage);
    });
  });

  describe('when using non alphabetic chars', () => {
    describe('when message is not a string', () => {
      it('should return an empty string', () => {
        expect(rot13(null)).toBe('');
        expect(rot13()).toBe('');
        expect(rot13(undefined)).toBe('');
        expect(rot13({})).toBe('');
        expect(rot13([])).toBe('');
        expect(rot13(true)).toBe('');
        expect(rot13(123)).toBe('');
      });
    });
    describe('when message contains numbers', () => {
      it('should not encode the numbers in the message', () => {
        const secretMessage = 'Secret Message 123';
        const expectedEncoded = 'Frperg Zrffntr 123';
        const encodedMessage = rot13(secretMessage);
        const decodedMessage = rot13(encodedMessage);

        expect(encodedMessage).toBe(expectedEncoded);
        expect(decodedMessage).toBe(secretMessage);
      });
    });

    describe('when message contains symbols', () => {
      it('should not encode the symbols in the message', () => {
        const secretMessage = 'Secret Message %^&*(';
        const expectedEncoded = 'Frperg Zrffntr %^&*(';
        const encodedMessage = rot13(secretMessage);
        const decodedMessage = rot13(encodedMessage);

        expect(encodedMessage).toBe(expectedEncoded);
        expect(decodedMessage).toBe(secretMessage);
      });
    });

    describe('when message is empty string', () => {
      it('should not change the string at all', () => {
        const secretMessage = '';
        const expectedEncoded = '';
        const encodedMessage = rot13(secretMessage);
        const decodedMessage = rot13(encodedMessage);

        expect(encodedMessage).toBe(expectedEncoded);
        expect(decodedMessage).toBe(secretMessage);
      });
    });
  });
});