tests/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 01 Mar 2012 19:57:31 +0100
branchdevel
changeset 201 843a7bcecbc8
parent 186 b381eaa774ab
child 213 3620bacf1152
permissions -rw-r--r--
renameing Userright.isDefault(bool) -> default(int) ordering default routes vie default value

from twisted.trial import unittest

from mock import patch, Mock

from iro.error import NoRoute, NoTyp, NeededOption
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):
        _c={"key":"XXXXXXXX",
            "typ":"smstrade",
            }

        if c:
            _c.update(c)

        ret = Smstrade("test")
        ret.load(_c.items())
        return ret

    @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=XXXXXXXX","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):
        s= self.getProvider()
        self.assertEqual(s.key, "XXXXXXXX")

        self.assertRaises(NeededOption, s.load,[])

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