tests/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Sun, 19 Feb 2012 17:44:44 +0100
branchdevel
changeset 174 762981cada07
parent 172 adfe245c377d
child 177 6c76753f9056
permissions -rw-r--r--
redefinition of Status Exception should be raised directly, not via Status , 'cause of Traceback

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.55","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"
        status = p.send("gold",SMS(content,None), Telnumber("01701234567"))

        self.assertEqual(status.status, status.GOOD)

        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 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")