diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/api/__init__.py | 8 | ||||
| -rw-r--r-- | tests/api/test_eval.py | 7 | ||||
| -rw-r--r-- | tests/test_snekbox.py | 46 | 
3 files changed, 34 insertions, 27 deletions
| diff --git a/tests/api/__init__.py b/tests/api/__init__.py index fd4679a..dcee5b5 100644 --- a/tests/api/__init__.py +++ b/tests/api/__init__.py @@ -1,3 +1,4 @@ +from subprocess import CompletedProcess  from unittest import mock  from falcon import testing @@ -11,7 +12,12 @@ class SnekAPITestCase(testing.TestCase):          self.patcher = mock.patch("snekbox.api.resources.eval.NsJail", autospec=True)          self.mock_nsjail = self.patcher.start() -        self.mock_nsjail.return_value.python3.return_value = "test output" +        self.mock_nsjail.return_value.python3.return_value = CompletedProcess( +            args=[], +            returncode=0, +            stdout="output", +            stderr="error" +        )          self.addCleanup(self.patcher.stop)          self.app = SnekAPI() diff --git a/tests/api/test_eval.py b/tests/api/test_eval.py index a5b83fd..03f0e39 100644 --- a/tests/api/test_eval.py +++ b/tests/api/test_eval.py @@ -9,8 +9,9 @@ class TestEvalResource(SnekAPITestCase):          result = self.simulate_post(self.PATH, json=body)          self.assertEqual(result.status_code, 200) -        self.assertEqual(body["input"], result.json["input"]) -        self.assertEqual("test output", result.json["output"]) +        self.assertEqual("output", result.json["stdout"]) +        self.assertEqual("error", result.json["stderr"]) +        self.assertEqual(0, result.json["returncode"])      def test_post_invalid_schema_400(self):          body = {"stuff": "foo"} @@ -26,7 +27,7 @@ class TestEvalResource(SnekAPITestCase):          self.assertEqual(expected, result.json)      def test_post_invalid_content_type_415(self): -        body = "{\"input\": \"foo\"}" +        body = "{'input': 'foo'}"          headers = {"Content-Type": "application/xml"}          result = self.simulate_post(self.PATH, body=body, headers=headers) diff --git a/tests/test_snekbox.py b/tests/test_snekbox.py index c08178f..46319d6 100644 --- a/tests/test_snekbox.py +++ b/tests/test_snekbox.py @@ -7,44 +7,44 @@ nsjail = NsJail()  class SnekTests(unittest.TestCase):      def test_nsjail(self): -        result = nsjail.python3('print("test")') -        self.assertEquals(result.strip(), 'test') +        result = nsjail.python3("print('test')") +        self.assertEquals(result.strip(), "test")      # def test_memory_error(self): -    #     code = ('x = "*"\n' -    #             'while True:\n' -    #             '    x = x * 99\n') +    #     code = ("x = "*"\n" +    #             "while True:\n" +    #             "    x = x * 99\n")      #     result = nsjail.python3(code) -    #     self.assertEquals(result.strip(), 'timed out or memory limit exceeded') +    #     self.assertEquals(result.strip(), "timed out or memory limit exceeded")      def test_timeout(self):          code = ( -            'x = "*"\n' -            'while True:\n' -            '    try:\n' -            '        x = x * 99\n' -            '    except:\n' -            '        continue\n' +            "x = '*'\n" +            "while True:\n" +            "    try:\n" +            "        x = x * 99\n" +            "    except:\n" +            "        continue\n"          )          result = nsjail.python3(code) -        self.assertEquals(result.strip(), 'timed out or memory limit exceeded') +        self.assertEquals(result.strip(), "timed out or memory limit exceeded")      def test_kill(self): -        code = ('import subprocess\n' -                'print(subprocess.check_output("kill -9 6", shell=True).decode())') +        code = ("import subprocess\n" +                "print(subprocess.check_output('kill -9 6', shell=True).decode())")          result = nsjail.python3(code) -        if 'ModuleNotFoundError' in result.strip(): -            self.assertIn('ModuleNotFoundError', result.strip()) +        if "ModuleNotFoundError" in result.strip(): +            self.assertIn("ModuleNotFoundError", result.strip())          else: -            self.assertIn('(PIDs left: 0)', result.strip()) +            self.assertIn("(PIDs left: 0)", result.strip())      def test_forkbomb(self): -        code = ('import os\n' -                'while 1:\n' -                '    os.fork()') +        code = ("import os\n" +                "while 1:\n" +                "    os.fork()")          result = nsjail.python3(code) -        self.assertIn('Resource temporarily unavailable', result.strip()) +        self.assertIn("Resource temporarily unavailable", result.strip())      def test_juan_golf(self):  # in honour of Juan          code = ("func = lambda: None\n" @@ -53,4 +53,4 @@ class SnekTests(unittest.TestCase):                  "exec(bytecode)")          result = nsjail.python3(code) -        self.assertEquals('unknown error, code: 111', result.strip()) +        self.assertEquals("unknown error, code: 111", result.strip()) | 
