summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/jsbeautifier/unpackers/tests/testjavascriptobfuscator.py
blob: d40db2df1f7724abed286e55477659177432f1a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#
#     written by Stefano Sanfilippo <a.little.coder@gmail.com>
#

"""Tests for JavaScriptObfuscator unpacker."""

import unittest
from jsbeautifier.unpackers.javascriptobfuscator import unpack, detect, smartsplit

# pylint: disable=R0904


class TestJavascriptObfuscator(unittest.TestCase):
    """JavascriptObfuscator.com test case."""

    def test_smartsplit(self):
        """Test smartsplit() function."""
        split = smartsplit

        def equals(data, result):
            return self.assertEqual(split(data), result)

        equals("", [])
        equals('"a", "b"', ['"a"', '"b"'])
        equals('"aaa","bbbb"', ['"aaa"', '"bbbb"'])
        equals('"a", "b\\""', ['"a"', '"b\\""'])

    def test_detect(self):
        """Test detect() function."""

        def positive(source):
            return self.assertTrue(detect(source))

        def negative(source):
            return self.assertFalse(detect(source))

        negative("")
        negative("abcd")
        negative("var _0xaaaa")
        positive('var _0xaaaa = ["a", "b"]')
        positive('var _0xaaaa=["a", "b"]')
        positive('var _0x1234=["a","b"]')

    def test_unpack(self):
        """Test unpack() function."""

        def decodeto(ob, original):
            return self.assertEqual(unpack(ob), original)

        decodeto("var _0x8df3=[];var a=10;", "var a=10;")
        decodeto(
            'var _0xb2a7=["\x74\x27\x65\x73\x74"];var i;for(i=0;i<10;++i)'
            "{alert(_0xb2a7[0]);} ;",
            "var i;for(i=0;i<10;++i){alert" '("t\'est");} ;',
        )


if __name__ == "__main__":
    unittest.main()