Beispiel #1
0
class dispatcher(object):
    def __init__(self, config, warnings, messengers = None):
        self.config = config
        self.warnings = warnings
        self.messengers = messengers

        self.sms = NajdiSiSms("username", "password")

    def start(self):
        self.run = True
        self.dispatcher_worker = gevent.spawn(self.dispatcher)

    def stop(self):
        self.run = False
        self.dispatcher_worker.join()

    def dispatcher(self):
        while self.run:
            warnings = []
            warning = True
            while warning:
                try:
                    warning = self.warnings.get(timeout = 1)
                except Empty:
                    break
                warnings.append(warning)

            if not warnings: continue
            print "processing new warnings"

            clients = self.config.getClients()
            for devices in warnings:
                time = devices[0]
                for device in devices[1]:
                    client = filter(lambda c: c[1]["mac"] == device.mac,
                                    clients)
                    if not client: client = [("unknown", {"mac": device.mac})]

                    client= client[0]

                    for number in self.config.getNumbers():
                        try:
                            self.sms.send(number,
                                "Device %s with mac %s got missing at %s"
                                %(client[0], client[1]["mac"], time.strftime("%H:%M:%S")))
                        except SmsException:
                            pass
Beispiel #2
0
class unit_tests(TestCase):
    def setUp(self):
        self.s = NajdiSiSms(username="******", password="******", retries=1)

    def test_parse_balance(self):
        res = self.s._parse_balance(
            "<strong id=\"sms_left\" name=\"sms_left\">0 / 40</strong>")

        self.assertEqual(res, 40)

        with self.assertRaises(ResponseException):
            res = self.s._parse_balance(
                "<strong id=\"sms_left\" name=\"sms_left\"></strong>")

    def test_send_sms(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        self.s.send('041928491', 'test')

        expected_calls = [
            call._login(),
            call._send_sms('1361468289330', '41', '928491', 'test')
        ]
        self.assertEqual(expected_calls, manager.mock_calls)

        self.s.send('041928491', 'test')

        expected_calls = [
            call._login(),
            call._send_sms('1361468289330', '41', '928491', 'test'),
            call._send_sms('1361468289330', '41', '928491', 'test')
        ]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_login_error_ok(self):
        def _login_first():
            def _login_second():
                self.s._session = '1361468289330'

            self.s._login.side_effect = _login_second
            raise AuthException

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login_first
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        self.s.send('041928491', 'test')

        expected_calls = [
            call._login(),
            call._login(),
            call._send_sms('1361468289330', '41', '928491', 'test')
        ]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_login_error_error(self):
        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = AuthException
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        with self.assertRaises(AuthException):
            self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._login()]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_send_error_error(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._send_sms = manager._send_sms
        self.s._send_sms.side_effect = SendException
        self.s._balance = 10

        with self.assertRaises(SendException):
            self.s.send('041928491', 'test')

        expected_calls = [
            call._login(),
            call._send_sms('1361468289330', '41', '928491', 'test'),
            call._login(),
            call._send_sms('1361468289330', '41', '928491', 'test')
        ]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_balance_error_error(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._balance = 0

        with self.assertRaises(SendException):
            self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._login()]
        self.assertEqual(expected_calls, manager.mock_calls)
Beispiel #3
0
class unit_tests(TestCase):
    def setUp(self):
        self.s = NajdiSiSms(username= "******", password= "******", retries = 1)

    def test_parse_balance(self):
        res = self.s._parse_balance("<strong id=\"sms_left\" name=\"sms_left\">0 / 40</strong>")

        self.assertEqual(res, 40)

        with self.assertRaises(ResponseException):
            res = self.s._parse_balance("<strong id=\"sms_left\" name=\"sms_left\"></strong>")

    def test_send_sms(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._send_sms('1361468289330', '41','928491', 'test')]
        self.assertEqual(expected_calls, manager.mock_calls)

        self.s.send('041928491', 'test')

        expected_calls = [call._login(),
                          call._send_sms('1361468289330', '41','928491', 'test'),
                          call._send_sms('1361468289330', '41','928491', 'test')]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_login_error_ok(self):
        def _login_first():
            def _login_second():
                self.s._session = '1361468289330'
            self.s._login.side_effect = _login_second
            raise AuthException

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login_first
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._login(),
                          call._send_sms('1361468289330', '41','928491', 'test')]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_login_error_error(self):
        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = AuthException
        self.s._send_sms = manager._send_sms
        self.s._balance = 10

        with self.assertRaises(AuthException):
            self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._login()]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_send_error_error(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._send_sms = manager._send_sms
        self.s._send_sms.side_effect = SendException
        self.s._balance = 10

        with self.assertRaises(SendException):
            self.s.send('041928491', 'test')

        expected_calls = [call._login(),
                          call._send_sms('1361468289330', '41','928491', 'test'),
                          call._login(),
                          call._send_sms('1361468289330', '41','928491', 'test')]
        self.assertEqual(expected_calls, manager.mock_calls)

    def test_send_sms_balance_error_error(self):
        def _login():
            self.s._session = '1361468289330'

        manager = Mock()
        self.s._login = manager._login
        self.s._login.side_effect = _login
        self.s._balance = 0

        with self.assertRaises(SendException):
            self.s.send('041928491', 'test')

        expected_calls = [call._login(), call._login()]
        self.assertEqual(expected_calls, manager.mock_calls)
Beispiel #4
0
# -*- coding: utf-8 -*-
import logging, sys
from pysms.providers import NajdiSiSms

loglevel = 'DEBUG'

datefmt = '%b %d %H:%M:%S'
logformat = '%(asctime)s %(levelname)s pysms: %(message)s'

logging.basicConfig(level=loglevel,
                    stream=sys.stdout,
                    format=logformat,
                    datefmt=datefmt)

provider = NajdiSiSms("username","password")
print provider.send("51385279", u"čžš")
print provider.send("51385279", u"čžš")
# -*- coding: utf-8 -*-
import logging, sys
from pysms.providers import NajdiSiSms

loglevel = 'DEBUG'

datefmt = '%b %d %H:%M:%S'
logformat = '%(asctime)s %(levelname)s pysms: %(message)s'

logging.basicConfig(level=loglevel,
                    stream=sys.stdout,
                    format=logformat,
                    datefmt=datefmt)

provider = NajdiSiSms("username","password")

if len(sys.argv) == 2:
    print provider.send("41777777", sys.argv[1].decode("utf-8"))
else:
    print provider.send("41777777", u"test_sms")
provider.destruct()

# JSESSIONID
Beispiel #6
0
# -*- coding: utf-8 -*-
import logging, sys
from pysms.providers import NajdiSiSms

loglevel = 'DEBUG'

datefmt = '%b %d %H:%M:%S'
logformat = '%(asctime)s %(levelname)s pysms: %(message)s'

logging.basicConfig(level=loglevel,
                    stream=sys.stdout,
                    format=logformat,
                    datefmt=datefmt)

provider = NajdiSiSms("username", "password")
print provider.send("51385279", u"čžš")
print provider.send("51385279", u"čžš")