tests/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 23 Feb 2012 16:53:32 +0100
branchdevel
changeset 181 8a5be61f34c5
parent 177 6c76753f9056
child 183 07ee5543751b
permissions -rw-r--r--
email validator can now handle strings and lists

from twisted.trial import unittest

from mock import patch, Mock

from iro.error import NoRoute, NoTyp, NeededOption, UnknownOption
from iro.telnumber import Telnumber
from iro.model.message import SMS
from iro.offer import Smstrade

HOST = "localhost"
PORT = 9999

class TestSMStradeProvider(unittest.TestCase):

    def getProvider(self, c=None):
        ret={"key":"XXXXXX",
            }

        if c:
            ret.update(c)

        return Smstrade("test",ret.items())

    @patch("urllib.urlopen")
    def testSendSMS(self,mock_urlopen):
        f = Mock()
        f.readlines.return_value = ["100","12345678","0.055","1"]
        mock_urlopen.return_value = f

        params = ["key=XXXXXX","to=00491701234567", "message=Hello+World", "route=gold", "message_id=1", "cost=1","count=1",'charset=utf-8']
        params.sort()
        
        p=self.getProvider()
        content = "Hello World"
        p.send("gold",SMS(content,None), Telnumber("01701234567"))

        ca = mock_urlopen.call_args[0]
        c=ca[1].split("&")
        c.sort()
        
        self.assertEqual(ca[0],"https://gateway.smstrade.de")
        self.assertEqual(c,params)
        self.assertEqual(f.readlines.call_count,1)

    def testStatusCode(self):
        pass
    
    testStatusCode.todo = "to implement"

    def testNeededOption(self):
        c={"key":"XXXXXXXX",}
        s=Smstrade("test",c.items())
        self.assertEqual(s.key, "XXXXXXXX")

        self.assertRaises(NeededOption,Smstrade,"test",[])

        c = {"unknown":""}
        self.assertRaises(UnknownOption,Smstrade,"test",c.items())

    def testSendFunc(self):
        s = self.getProvider()
        p = s.getSendFunc("sms","basic")
        self.assertEqual(p.func, s.send)
        self.assertEqual(p.args, ("basic",))
        self.assertRaises(NoRoute,s.getSendFunc,"sms","foo")
        self.assertRaises(NoTyp,s.getSendFunc,"mail2","basic")