Ejemplo n.º 1
0
class TestSessionFactory(unittest.TestCase):
    def setUp(self):
        self.factory = SessionFactory(None)
        potocol = Protocol()
        self.session = self.factory.create(potocol)

    def tearDown(self):
        pass

    def test_create_session(self):
        self.assertIsNotNone(self.session)
        self.assertIsNotNone(self.session.id)

    def test_register_session(self):
        self.factory.register(self.session)
        session = self.factory.find(self.session.id)
        self.assertIsNotNone(session)
        self.assertEqual(session, self.session)

    def test_unregister_session(self):
        self.factory.register(self.session)
        sessions = self.factory.find()
        self.assertEqual(len(sessions), 1)

        oldsession = self.factory.unregister(self.session)
        sessions = self.factory.find()
        self.assertEqual(len(sessions), 0)
        self.assertEqual(self.session, oldsession)

    def test_find_sessions(self):
        self.factory.register(self.session)
        session = self.factory.find(self.session.id)
        session1 = self.factory.find()
        self.assertEqual(self.session, session)
        self.assertEqual(session1[session.id], session)
        self.assertIsInstance(session1, dict)
Ejemplo n.º 2
0
 def setUp(self):
     self.factory = SessionFactory(None)
     potocol = Protocol()
     self.session = self.factory.create(potocol)
Ejemplo n.º 3
0
class TestSession(unittest.TestCase):
    def setUp(self):
        self.factory = SessionFactory(None)
        self.potocol = Protocol()
        self.session = self.factory.create(self.potocol)

    def test_add_attr_to_session(self):
        name = r(10)
        self.session.set_attr("name", name)
        self.assertEqual(self.session.get_attr("name"), name)

        data = {"name": name, "lang": "python"}
        self.session.set_attr(data)
        self.assertEqual(self.session.get_attr("name"), data["name"])
        self.assertEqual(self.session.get_attr("lang"), data["lang"])

    def test_add_attr_to_session_with_default_value(self):
        name = r(10)
        self.assertEqual(self.session.get_attr("name", name), name)

        name1 = r(10)
        self.session.set_attr("name", name1)
        self.assertEqual(self.session.get_attr("name"), name1)

    def test_get_attr_twice(self):
        foo = r(10)
        foolist = self.session.get_attr("foolist", {})
        foolist["foo"] = foo

        foolist = self.session.get_attr("foolist", {})
        self.assertTrue(len(foolist) > 0)

    def test_get_attr_from_session(self):
        lang = "python"
        name = r(10)
        self.session.set_attr("name", name)
        self.session.set_attr("lang", lang)
        data = self.session.get_attr()
        self.assertIsInstance(data, dict)
        self.assertEqual(self.session.get_attr("name"), name)
        self.assertEqual(self.session.get_attr("lang"), lang)

    def test_iterate_response_and_target_no_sendto(self):
        target_session_list = [self.session]
        for i in range(5):
            target_session_list.append(self.factory.create(self.potocol))
        response = r(10)
        num = 0
        _ids = [s.id for s in target_session_list]
        for (session, data) in self.session.iterate_response_data(response):
            self.assertIn(session.id, _ids)
            self.assertEqual(data, response)
            num += 1
        self.assertEqual(num, len(target_session_list))

    def test_iterate_response_and_target_with(self):
        target_session_list = [self.session]
        for i in range(5):
            target_session_list.append(self.factory.create(self.potocol))
        response = r(10)
        self.session.sendto = [s.id for s in target_session_list][1:]
        num = 0
        _ids = [s.id for s in target_session_list]
        for (session, data) in self.session.iterate_response_data(response):
            self.assertIn(session.id, _ids)
            self.assertEqual(data, response)
            num += 1
        self.assertEqual(num, len(target_session_list) - 1)

    def test_response_data_with_type_of_object(self):
        class Test:
            def __init__(self, name):
                self.name = name

        name1 = r(10)
        t1 = Test(name1)

        parsed_data = self.session.parse_response(t1)
        self.assertEqual(parsed_data, "{\"name\": \"" + name1 + "\"}")

    def test_response_data_with_type_of_list(self):
        class Test:
            def __init__(self, name):
                self.name = name

        name1 = r(10)
        t1 = Test(name1)

        name2 = r(10)
        t2 = Test(name2)

        parsed_data = self.session.parse_response([t1, t2])
        c = "[{\"name\": \"" + name1 + "\"}, {\"name\": \"" + name2 + "\"}]"
        self.assertEqual(parsed_data, c)

    def test_response_data_with_mutli_type(self):
        class Test:
            def __init__(self, name):
                self.name = name

        name1 = r(10)
        t1 = Test(name1)

        name2 = r(10)
        t2 = Test(name2)

        res = {"func": "addUser", "users": [t1, t2]}
        parsed_data = self.session.parse_response(res)
        c = "\"users\": [{\"name\": \""+name1+"\"}, {\"name\": \""+name2+"\"}]"
        c1 = "\"func\": \"addUser\""
        self.assertTrue(c in parsed_data)
        self.assertTrue(c1 in parsed_data)

    def test_request_data_with_specified_cmd(self):
        cmd1 = r(5)
        d1 = r(10)
        data1 = "{'cmd': '"+cmd1+"', 'data':'"+d1+"'}"
        data = self.session.handle_request_data(data1)
        self.assertTrue(type(data) == dict)
        self.assertEqual(data["cmd"], cmd1)
        self.assertEqual(data["data"], d1)

        cmd2 = r(5)
        d2 = r(10)
        data2 = "{\"cmd\": \""+cmd2+"\", \"data\":\""+d2+"\"}"
        data = self.session.handle_request_data(data2)
        self.assertTrue(type(data) == dict)
        self.assertEqual(data["cmd"], cmd2)
        self.assertEqual(data["data"], d2)

    def test_request_data_with_no_cmd(self):
        d1 = r(10)
        data1 = d1
        data = self.session.handle_request_data(data1)
        self.assertTrue(type(data) == dict)
        self.assertEqual(data["cmd"], "default")
        self.assertEqual(data["data"], d1)

        d2 = r(10)
        data2 = "{'data':'"+d2+"'}"
        data = self.session.handle_request_data(data2)
        self.assertTrue(type(data) == dict)
        self.assertEqual(data["cmd"], "default")
        self.assertEqual(data["data"], d2)

    def test_request_data_with_no_data(self):
        d = None
        data = self.session.handle_request_data(d)
        self.assertTrue(type(data) == dict)
        self.assertEqual(data["cmd"], "default")