Exemplo n.º 1
0
 def test_move_sms_from_folder_to_folder(self):
     # add a thread to inbox_folder
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3643445333', folder=inbox_folder))
     # add two sms to t1
     sms1 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_sms',
                 _datetime=get_tz_aware_now(), thread=t))
     sms2 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_sms 2',
                 _datetime=get_tz_aware_now(), thread=t))
     # sms1 and sms2 should be present in thread
     messages = list(self.provider.list_from_thread(t))
     self.assertIn(sms1, messages)
     self.assertIn(sms2, messages)
     # now create a new folder and move sms2 there
     folder = self.provider.add_folder(Folder("Test 6"))
     self.provider.move_to_folder(sms2, folder)
     # now only sms1 should be present in original thread
     inbox_messages = list(self.provider.list_from_thread(t))
     new_thread = list(self.provider.list_from_folder(folder))[0]
     folder_messages = list(self.provider.list_from_thread(new_thread))
     self.assertIn(sms1, inbox_messages)
     self.assertNotIn(sms2, inbox_messages)
     # and sms2 should be present in folder_messages
     self.assertIn(sms2, folder_messages)
     self.assertNotIn(sms1, folder_messages)
     # leave it as we found it
     self.provider.delete_folder(folder)
     self.provider.delete_thread(t)
Exemplo n.º 2
0
 def test_delete_thread_with_sms_attached(self):
     # add a thread to inbox
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545332', folder=inbox_folder))
     # add a message attached to that thread and make sure its present
     sms = self.provider.add_sms(
         Message(number='+3443545332', text='how is it going then?',
                 _datetime=get_tz_aware_now(), thread=t))
     self.assertIn(sms, list(self.provider.list_sms()))
     # delete the thread and both the thread and SMS should be gone
     self.provider.delete_thread(t)
     self.assertNotIn(sms, list(self.provider.list_sms()))
Exemplo n.º 3
0
 def test_list_threads(self):
     # add two threads to the inbox folder
     t1 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3643445333', folder=inbox_folder))
     t2 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=inbox_folder))
     # make sure they are present if we list them
     threads = list(self.provider.list_threads())
     self.assertIn(t1, threads)
     self.assertIn(t2, threads)
     # leave it as we found it
     self.provider.delete_thread(t1)
     self.provider.delete_thread(t2)
Exemplo n.º 4
0
 def test_delete_sms(self):
     # add a thread to inbox
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=inbox_folder))
     # add a message attached to that thread and make sure its present
     sms = self.provider.add_sms(
         Message(number='+3443545333', text='how is it going then?',
                 _datetime=get_tz_aware_now(), thread=t))
     self.assertIn(sms, list(self.provider.list_sms()))
     # delete it and make sure its gone
     self.provider.delete_sms(sms)
     self.assertNotIn(sms, list(self.provider.list_sms()))
     # leave it as we found it
     self.provider.delete_thread(t)
Exemplo n.º 5
0
 def test_list_from_folder(self):
     # add a folder and attach a thread to it
     folder = self.provider.add_folder(Folder("Test 3"))
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=folder))
     # add a thread attached to inbox
     t2 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=inbox_folder))
     # t should be present in threads, but not t2
     threads = list(self.provider.list_from_folder(folder))
     self.assertIn(t, threads)
     self.assertNotIn(t2, threads)
     # leave it as we found it
     self.provider.delete_folder(folder)
     self.provider.delete_thread(t2)
Exemplo n.º 6
0
 def test_update_sms_flags(self):
     """test that update_sms_flags works as expected"""
     # add a thread to inbox_folder
     number = '+3243242323'
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), number, folder=inbox_folder))
     # add one sms to t1
     sms1 = self.provider.add_sms(
         Message(number=number, text='test_update_sms_flags',
                 _datetime=get_tz_aware_now(), thread=t))
     self.assertEqual(sms1.flags, READ)
     # now mark sms1 as unread
     sms1 = self.provider.update_sms_flags(sms1, UNREAD)
     self.assertEqual(sms1.flags, UNREAD)
     # leave it as we found it
     self.provider.delete_thread(t)
Exemplo n.º 7
0
 def test_list_sms(self):
     # add a thread to inbox and attach a couple of messages to it
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=inbox_folder))
     sms1 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_sms',
                 _datetime=get_tz_aware_now(), thread=t))
     sms2 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_sms',
                 _datetime=get_tz_aware_now(), thread=t))
     # sms1 and sms2 should be present in messages
     messages = list(self.provider.list_sms())
     self.assertIn(sms1, messages)
     self.assertIn(sms2, messages)
     # leave it as we found it
     self.provider.delete_thread(t)
Exemplo n.º 8
0
 def test_list_from_thread(self):
     """test for list_from_thread"""
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', folder=inbox_folder))
     sms1 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_from_thread sms1',
                 _datetime=get_tz_aware_now(), thread=t))
     sms2 = self.provider.add_sms(
         Message(number='+3443545333', text='test_list_from_thread sms2',
                 _datetime=get_tz_aware_now(), thread=t))
     # sms1 and sms2 should be present in messages
     messages = list(self.provider.list_from_thread(t))
     self.assertIn(sms1, messages)
     self.assertIn(sms2, messages)
     # leave it as we found it
     self.provider.delete_thread(t)
Exemplo n.º 9
0
 def test_add_sms(self):
     sms = Message('+3243243223', 'hey how are you?',
                   _datetime=get_tz_aware_now())
     sms = self.provider.add_sms(sms)
     self.assertIn(sms, list(self.provider.list_sms()))
     # leave everything as found
     self.provider.delete_sms(sms)
     self.assertNotIn(sms, list(self.provider.list_sms()))
Exemplo n.º 10
0
 def test_delete_folder_with_threads_attached(self):
     # add a folder
     folder = self.provider.add_folder(Folder("Test 2"))
     self.assertIn(folder, list(self.provider.list_folders()))
     # attach a couple of threads to the folder
     t1 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+322323233', index=5, folder=folder))
     t2 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+322323233', index=6, folder=folder))
     # make sure they appear
     self.assertIn(t1, list(self.provider.list_threads()))
     self.assertIn(t2, list(self.provider.list_threads()))
     # delete the folder and threads should be gone
     self.provider.delete_folder(folder)
     self.assertNotIn(folder, list(self.provider.list_folders()))
     self.assertNotIn(t1, list(self.provider.list_threads()))
     self.assertNotIn(t2, list(self.provider.list_threads()))
Exemplo n.º 11
0
 def test_add_usage_item(self):
     now = get_tz_aware_now()
     later = now + timedelta(minutes=30)
     umts, bytes_recv, bytes_sent = True, 12345460, 12333211
     item = self.provider.add_usage_item(now, later, bytes_recv,
                                         bytes_sent, umts)
     usage_items = self.provider.get_usage_for_day(date.today())
     self.assertIn(item, usage_items)
     self.provider.delete_usage_item(item)
Exemplo n.º 12
0
 def test_delete_thread(self):
     # add a thread to inbox and make sure its there
     t = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3443545333', index=3,
                folder=inbox_folder))
     self.assertIn(t, list(self.provider.list_threads()))
     # delete it and make sure its gone
     self.provider.delete_thread(t)
     self.assertNotIn(t, list(self.provider.list_threads()))
Exemplo n.º 13
0
 def test_delete_usage_item(self):
     now = get_tz_aware_now()
     later = now + timedelta(minutes=60)
     umts, bytes_recv, bytes_sent = True, 12345470, 12333212
     item = self.provider.add_usage_item(now, later, bytes_recv,
                                         bytes_sent, umts)
     usage_items = self.provider.get_usage_for_day(date.today())
     self.assertIn(item, usage_items)
     self.provider.delete_usage_item(item)
     # now check that it is indeed gone
     usage_items = self.provider.get_usage_for_day(date.today())
     self.assertNotIn(item, usage_items)
Exemplo n.º 14
0
    def test_get_tz_aware_mtime(self):
        text = os.urandom(2000)
        path = 'mtime.test'
        fobj = open(path, 'w')
        fobj.write(text)
        fobj.close()

        now1 = get_tz_aware_now()
        now2 = get_tz_aware_mtime(path)

        self.assertNotEqual(now2.tzinfo, None)
        self.failIf(abs(now2 - now1).seconds > 5)

        # tidy up
        os.remove(path)
Exemplo n.º 15
0
 def test_move_thread_from_folder_to_folder(self):
     # add a thread to inbox_folder and check its present
     t1 = self.provider.add_thread(
         Thread(get_tz_aware_now(), '+3643445333', folder=inbox_folder))
     threads = list(self.provider.list_from_folder(inbox_folder))
     self.assertIn(t1, threads)
     # create a new folder, move t1 to it and check its there
     folder = self.provider.add_folder(Folder("Test 4"))
     self.provider.move_to_folder(t1, folder)
     threads = list(self.provider.list_from_folder(folder))
     self.assertIn(t1, threads)
     self.provider.delete_folder(folder)
     # leave it as we found it
     threads = list(self.provider.list_threads())
     self.assertNotIn(t1, threads)
Exemplo n.º 16
0
    def test_get_usage_for_day(self):
        # add one usage item for today (45m)
        now1 = get_tz_aware_now()
        later1 = now1 + timedelta(minutes=45)
        umts1, bytes_recv1, bytes_sent1 = True, 1200034, 124566
        item1 = self.provider.add_usage_item(now1, later1, bytes_recv1,
                                             bytes_sent1, umts1)
        # add another usage item for today (17m)  55 minutes later
        now2 = get_tz_aware_now() + timedelta(minutes=55)
        later2 = now1 + timedelta(minutes=17)
        umts2, bytes_recv2, bytes_sent2 = True, 12000, 1245
        item2 = self.provider.add_usage_item(now2, later2, bytes_recv2,
                                             bytes_sent2, umts2)

        # add another usage item for tomorrow (25m)
        now3 = get_tz_aware_now() + timedelta(days=1)
        later3 = now3 + timedelta(minutes=25)
        umts3, bytes_recv3, bytes_sent3 = True, 14000, 1785
        item3 = self.provider.add_usage_item(now3, later3, bytes_recv3,
                                             bytes_sent3, umts3)

        # now get the usage for today
        today_items = self.provider.get_usage_for_day(date.today())
        self.assertIn(item1, today_items)
        self.assertIn(item2, today_items)
        self.assertNotIn(item3, today_items)
        # get the usage for tomorrow
        tomorrow = date.today() + timedelta(days=1)
        tomorrow_items = self.provider.get_usage_for_day(tomorrow)
        self.assertNotIn(item1, tomorrow_items)
        self.assertNotIn(item2, tomorrow_items)
        self.assertIn(item3, tomorrow_items)

        # leave it as we found it
        for i in [item1, item2, item3]:
            self.provider.delete_usage_item(i)
Exemplo n.º 17
0
 def test_list_from_folder_and_the_results_order(self):
     """test that list_from_folder returns a correctly ordered result"""
     now = get_tz_aware_now()
     five_min_ago = now - timedelta(minutes=5)
     # add a couple of threads to inbox_folder, one of them
     # just got updated/created and the other five minuts ago
     t = self.provider.add_thread(
         Thread(now, '+3443545333', folder=inbox_folder))
     t2 = self.provider.add_thread(
         Thread(five_min_ago, '+3443545331', folder=inbox_folder))
     # if we list from inbox, t should appear before t2
     threads = list(self.provider.list_from_folder(inbox_folder))
     self.assertEqual(threads[0], t)
     self.assertEqual(threads[1], t2)
     # leave it as we found it
     self.provider.delete_thread(t)
     self.provider.delete_thread(t2)
Exemplo n.º 18
0
    def get_thread_by_number(self, number, folder=inbox_folder):
        """
        Returns the :class:`Thread` that belongs to ``number`` under ``folder``

        :rtype: :class:`Thread`
        """
        c = self.conn.cursor()
        sql = "select * from thread where number like ? and folder_id=?"
        c.execute(sql, ("%%%s%%" % number, folder.index))
        if c.rowcount == 1:
            # there already exists a thread for this number under folder
            return Thread.from_row(c.fetchone())
        elif c.rowcount < 1:
            # create thread for this number
            thread = Thread(get_tz_aware_now(), number, folder=folder)
            return self.add_thread(thread)
        elif c.rowcount > 1:
            raise DBError("Too many threads associated to number %s" % number)

        raise DBError("No thread found for number %s" % number)
Exemplo n.º 19
0
 def test_list_from_thread_and_the_results_order(self):
     """test that list_from_thread returns a correctly ordered result"""
     number = '+3443545333'
     now = get_tz_aware_now()
     five_min_ago = now - timedelta(minutes=5)
     # add a thread and attach two messages to it, one just sent
     # and the other is five minutes older
     t = self.provider.add_thread(
         Thread(now, number, folder=inbox_folder))
     sms1 = self.provider.add_sms(
         Message(number=number, text='test_list_from_thread sms1',
                 _datetime=now, thread=t))
     sms2 = self.provider.add_sms(
         Message(number=number, text='test_list_from_thread sms2',
                 _datetime=five_min_ago, thread=t))
     # sms1 and sms2 should be present in messages
     messages = list(self.provider.list_from_thread(t))
     self.assertEqual(messages[0], sms1)
     self.assertEqual(messages[1], sms2)
     # leave it as we found it
     self.provider.delete_thread(t)
Exemplo n.º 20
0
Arquivo: sms.py Projeto: achiang/wader
    def from_pdu(cls, pdu):
        """
        Converts ``pdu`` to a :class:`Message` object

        :param pdu: The PDU to convert
        :rtype: ``Message``
        """
        ret = SmsDeliver(pdu).data

        if 'date' not in ret:
            # XXX: Should we really fake a date?
            _datetime = get_tz_aware_now()
        else:
            # SmsDeliver dates are UTC but naive
            _datetime = ret['date'].replace(tzinfo=timezone('UTC'))

        m = cls(ret['number'], _datetime=_datetime, csca=ret['csca'],
                ref=ret.get('ref'), cnt=ret.get('cnt'), seq=ret.get('seq', 0),
                fmt=ret.get('fmt'))
        m.type = ret.get('type')
        m.add_text_fragment(ret['text'], ret.get('seq', 0))

        return m
Exemplo n.º 21
0
 def test_get_tz_aware_now(self):
     now1 = get_tz_aware_now()
     now2 = datetime.now(timezone('Europe/Paris'))
     self.assertNotEqual(now1.tzinfo, None)
     self.failIf(abs(now2 - now1).seconds > 5)