from lisa.server.libs.server import LisaFactory
from twisted.trial import unittest
from twisted.test import proto_helpers
 
import json
import platform
 
 
class LisaClientTestCase(unittest.TestCase):
    def setUp(self):
        factory = LisaFactory()
        self.proto = factory.buildProtocol(('127.0.0.1', 0))
        self.tr = proto_helpers.StringTransport()
        self.proto.makeConnection(self.tr)
 
    def convertjson(self, type=None, message=None, command=None, argdict=None, zone="zone1"):
        jsondict = {"from": "TestClient"}
        if message:
            jsondict['body'] = unicode(message)
        if type:
            jsondict['type'] = type
        if command:
            jsondict['command'] = command
        if command:
            jsondict['command'] = command
        if zone:
            jsondict['zone'] = zone
        if argdict:
            for k,v in argdict.items():
                jsondict[k] = v
 
        return json.dumps(jsondict)
 
    #def test_receivechat(self):
    #    json = self.convertjson(message="")
 
    def test_receive_command_login(self):
        message = "LOGIN"
        argdict = {}
        datajson = self.convertjson(message=message, type="command", command="LOGIN", argdict=argdict, zone="zone1")
        self.proto.lineReceived(data=datajson)
        answer = json.loads(self.tr.value())
        self.assertEqual(answer['bot_name'], "lisa")