tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_transport.py (3549B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 import json
      6 
      7 from marionette_driver.transport import Command, Response
      8 
      9 from marionette_harness import MarionetteTestCase
     10 
     11 
     12 get_current_url = ("getCurrentUrl", None)
     13 execute_script = ("executeScript", {"script": "return 42"})
     14 
     15 
     16 class TestMessageSequencing(MarionetteTestCase):
     17    @property
     18    def last_id(self):
     19        return self.marionette.client.last_id
     20 
     21    @last_id.setter
     22    def last_id(self, new_id):
     23        self.marionette.client.last_id = new_id
     24 
     25    def send(self, name, params):
     26        self.last_id = self.last_id + 1
     27        cmd = Command(self.last_id, name, params)
     28        self.marionette.client.send(cmd)
     29        return self.last_id
     30 
     31 
     32 class MessageTestCase(MarionetteTestCase):
     33    def assert_attr(self, obj, attr):
     34        self.assertTrue(
     35            hasattr(obj, attr), "object does not have attribute {}".format(attr)
     36        )
     37 
     38 
     39 class TestCommand(MessageTestCase):
     40    def create(self, msgid="msgid", name="name", params="params"):
     41        return Command(msgid, name, params)
     42 
     43    def test_initialise(self):
     44        cmd = self.create()
     45        self.assert_attr(cmd, "id")
     46        self.assert_attr(cmd, "name")
     47        self.assert_attr(cmd, "params")
     48        self.assertEqual("msgid", cmd.id)
     49        self.assertEqual("name", cmd.name)
     50        self.assertEqual("params", cmd.params)
     51 
     52    def test_stringify(self):
     53        cmd = self.create()
     54        string = str(cmd)
     55        self.assertIn("Command", string)
     56        self.assertIn("id=msgid", string)
     57        self.assertIn("name=name", string)
     58        self.assertIn("params=params", string)
     59 
     60    def test_to_msg(self):
     61        cmd = self.create()
     62        msg = json.loads(cmd.to_msg())
     63        self.assertEqual(msg[0], Command.TYPE)
     64        self.assertEqual(msg[1], "msgid")
     65        self.assertEqual(msg[2], "name")
     66        self.assertEqual(msg[3], "params")
     67 
     68    def test_from_msg(self):
     69        msg = [Command.TYPE, "msgid", "name", "params"]
     70        cmd = Command.from_msg(msg)
     71        self.assertEqual(msg[1], cmd.id)
     72        self.assertEqual(msg[2], cmd.name)
     73        self.assertEqual(msg[3], cmd.params)
     74 
     75 
     76 class TestResponse(MessageTestCase):
     77    def create(self, msgid="msgid", error="error", result="result"):
     78        return Response(msgid, error, result)
     79 
     80    def test_initialise(self):
     81        resp = self.create()
     82        self.assert_attr(resp, "id")
     83        self.assert_attr(resp, "error")
     84        self.assert_attr(resp, "result")
     85        self.assertEqual("msgid", resp.id)
     86        self.assertEqual("error", resp.error)
     87        self.assertEqual("result", resp.result)
     88 
     89    def test_stringify(self):
     90        resp = self.create()
     91        string = str(resp)
     92        self.assertIn("Response", string)
     93        self.assertIn("id=msgid", string)
     94        self.assertIn("error=error", string)
     95        self.assertIn("result=result", string)
     96 
     97    def test_to_msg(self):
     98        resp = self.create()
     99        msg = json.loads(resp.to_msg())
    100        self.assertEqual(msg[0], Response.TYPE)
    101        self.assertEqual(msg[1], "msgid")
    102        self.assertEqual(msg[2], "error")
    103        self.assertEqual(msg[3], "result")
    104 
    105    def test_from_msg(self):
    106        msg = [Response.TYPE, "msgid", "error", "result"]
    107        resp = Response.from_msg(msg)
    108        self.assertEqual(msg[1], resp.id)
    109        self.assertEqual(msg[2], resp.error)
    110        self.assertEqual(msg[3], resp.result)