Exemple #1
0
    def test_two_reminder(self, mail_mock):
        """ Test the cron job for a meeting with a single reminder to send.
        """
        mail_mock.return_value = None

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]',
                                '[email protected],[email protected]',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=12)
        date_so = datetime.utcnow() + timedelta(hours=13)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 1)
        self.assertEqual(msgs[0]['To'], '[email protected], [email protected]')
        self.assertEqual(msgs[0]['From'], '[email protected]')
Exemple #2
0
    def test_no_reminder(self):
        """ Test the cron job for run with no reminders.
        """
        # Meeting with a reminder but outside the standard offsets
        remobj = model.Reminder('H-12', '*****@*****.**',
                                'root@localhost', 'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=15)
        date_so = datetime.utcnow() + timedelta(hours=16)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 0)
Exemple #3
0
 def test_init_reminder(self):
     """ Test the Reminder init function. """
     obj = model.Reminder(
         'H-12', '[email protected]', '[email protected],'
         '*****@*****.**',
         'This is your friendly reminder')
     obj.save(self.session)
     self.session.commit()
     self.assertNotEqual(obj, None)
Exemple #4
0
 def test_init_reminder_failed(self):
     """ Test the Reminder init function. """
     obj = model.Reminder(
         'H-36', '[email protected]', '[email protected],'
         '*****@*****.**',
         'This is your friendly reminder')
     obj.save(self.session)
     try:
         self.session.flush()
     except (IntegrityError, DataError):
         obj = None
     self.assertEqual(obj, None)
Exemple #5
0
def add_reminder(
        session, remind_when, reminder_from,
        remind_who, reminder_text=None):
    """ Logic to add a reminder to the database.
    """
    reminder = model.Reminder(
        reminder_offset=remind_when,
        reminder_from=reminder_from,
        reminder_to=remind_who,
        reminder_text=reminder_text)
    reminder.save(session)
    session.flush()
    return reminder
Exemple #6
0
def convert_reminders(fed03_sess, fed04_sess):
    ''' Convert the Reminders from fedocal-0.3.x to fedocal-0.4.0.
    '''
    cnt = 0
    for reminder in fed03_sess.query(F03Reminders).all():
        reminderobj = model.Reminder(
            reminder_offset=reminder.reminder_offset,
            reminder_to=reminder.reminder_to,
            reminder_text=reminder.reminder_text,
        )
        reminderobj.reminder_id = reminder.reminder_id
        fed04_sess.add(reminderobj)
        cnt += 1
    fed04_sess.commit()
    print '%s reminders added' % cnt
Exemple #7
0
    def test_init_meeting(self):
        """ Test the Meeting init function. """
        caltest = Calendartests('test_init_calendar')
        caltest.session = self.session
        caltest.test_init_calendar()
        obj = model.Meeting(  # id:1
            meeting_name='Fedora-fr-test-meeting',
            meeting_date=TODAY,
            meeting_date_end=TODAY,
            meeting_time_start=time(19, 50),
            meeting_time_stop=time(20, 50),
            meeting_information='This is a test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, 'pingou, shaiton,')
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:2
            meeting_name='test-meeting2',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(14, 15),
            meeting_time_stop=time(16, 15),
            meeting_information='This is another test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:3
            meeting_name='test-meeting23h59',
            meeting_date=TODAY + timedelta(days=20),
            meeting_date_end=TODAY + timedelta(days=20),
            meeting_time_start=time(23, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='This is another test meeting',
            calendar_name='test_calendar')
        obj.add_manager(self.session, ['pingou23h'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with end_recursion in the past
        obj = model.Meeting(  # id:4
            meeting_name='test-meeting3',
            meeting_date=TODAY - timedelta(days=16),
            meeting_date_end=TODAY - timedelta(days=16),
            meeting_time_start=time(14, 45),
            meeting_time_stop=time(16, 35),
            meeting_information='Test meeting with past end_recursion.',
            calendar_name='test_calendar3',
            recursion_frequency=7,
            recursion_ends=TODAY - timedelta(days=7))
        obj.add_manager(self.session, ['test2'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Two meetings at the same time
        obj = model.Meeting(  # id:5
            meeting_name='test-meeting-st-1',
            meeting_date=TODAY + timedelta(days=1),
            meeting_date_end=TODAY + timedelta(days=1),
            meeting_time_start=time(14, 00),
            meeting_time_stop=time(16, 00),
            meeting_information='This is a test meeting at the same time',
            calendar_name='test_calendar4',
            meeting_location='NA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:6
            meeting_name='test-meeting-st-2',
            meeting_date=TODAY + timedelta(days=1),
            meeting_date_end=TODAY + timedelta(days=1),
            meeting_time_start=time(14, 00),
            meeting_time_stop=time(16, 00),
            meeting_information='This is a second test meeting at the'
            ' same time',
            calendar_name='test_calendar4',
            meeting_location='EMEA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a recursion
        obj = model.Meeting(  # id:7
            meeting_name='Another test meeting',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(2, 00),
            meeting_time_stop=time(3, 00),
            meeting_information='This is a test meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=90))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)

        obj = model.Meeting(  # id:8
            meeting_name='Another test meeting2',
            meeting_date=TODAY,
            meeting_date_end=TODAY,
            meeting_time_start=time(12, 00),
            meeting_time_stop=time(13, 00),
            meeting_information='This is a test meeting with recursion2',
            calendar_name='test_calendar',
            recursion_frequency=14,
            recursion_ends=TODAY + timedelta(days=90))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]', 'root@localhost',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()
        obj = model.Meeting(  # id:9
            meeting_name='Test meeting with reminder',
            meeting_date=TODAY + timedelta(days=11),
            meeting_date_end=TODAY + timedelta(days=11),
            meeting_time_start=time(11, 00),
            meeting_time_stop=time(12, 00),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Meeting with a recursion and reminder
        self.session.flush()
        remobj = model.Reminder('H-12', '[email protected]', 'root@localhost',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()
        obj = model.Meeting(  # id:10
            meeting_name='Test meeting with reminder and recursion',
            meeting_date=TODAY + timedelta(days=12),
            meeting_date_end=TODAY + timedelta(days=12),
            meeting_time_start=time(10, 00),
            meeting_time_stop=time(11, 00),
            meeting_information='This is a test meeting with recursion'
            ' and reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id,
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=60))
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        obj = model.Meeting(  # id:11
            meeting_name='test-meeting-11',
            meeting_date=TODAY + timedelta(days=20),
            meeting_date_end=TODAY + timedelta(days=20),
            meeting_time_start=time(17, 00),
            meeting_time_stop=time(18, 00),
            meeting_information='This is a second test meeting in EMEA',
            calendar_name='test_calendar4',
            meeting_location='EMEA')
        obj.add_manager(self.session, ['test'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Past meeting with a recursion
        obj = model.Meeting(  # id:12
            meeting_name='Another past test meeting',
            meeting_date=TODAY - timedelta(days=14),
            meeting_date_end=TODAY - timedelta(days=14),
            meeting_time_start=time(4, 00),
            meeting_time_stop=time(5, 00),
            meeting_information='This is a past meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=90),
            full_day=False)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting
        obj = model.Meeting(  # id:13
            meeting_name='Full-day meeting',
            meeting_date=TODAY + timedelta(days=3),
            meeting_date_end=TODAY + timedelta(days=3),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='This is a full day meeting',
            calendar_name='test_calendar',
            recursion_frequency=None,
            recursion_ends=None,
            full_day=True)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting with recursion
        obj = model.Meeting(  # id:14
            meeting_name='Full-day meeting with recursion',
            meeting_date=TODAY + timedelta(days=10),
            meeting_date_end=TODAY + timedelta(days=10),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='Full day meeting with recursion',
            calendar_name='test_calendar',
            recursion_frequency=7,
            recursion_ends=TODAY + timedelta(days=30),
            full_day=True)
        obj.add_manager(self.session, ['pingou'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)

        # Full day meeting
        obj = model.Meeting(  # id:15
            meeting_name='Full-day meeting2',
            meeting_date=TODAY + timedelta(days=2),
            meeting_date_end=TODAY + timedelta(days=3),
            meeting_time_start=time(0, 00),
            meeting_time_stop=time(23, 59),
            meeting_information='Full day meeting 2',
            calendar_name='test_calendar2',
            full_day=True)
        obj.add_manager(self.session, ['toshio'])
        obj.save(self.session)
        self.session.commit()
        self.assertNotEqual(obj, None)
Exemple #8
0
    def test_two_reminder(self, smtp_mock, mail_mock):
        """ Test the cron job for a meeting with a single reminder to send.
        """
        smtp_mock.return_value = FakeSMTP()
        mail_mock.return_value = None

        # Meeting with a reminder
        remobj = model.Reminder('H-12', '[email protected]',
                                '[email protected],[email protected]',
                                'Come to our test meeting')
        remobj.save(self.session)
        self.session.flush()

        date_sa = datetime.utcnow() + timedelta(hours=12)
        date_so = datetime.utcnow() + timedelta(hours=13)

        obj = model.Meeting(  # id:1
            meeting_name='Test meeting with reminder',
            meeting_date=date_sa.date(),
            meeting_date_end=date_so.date(),
            meeting_time_start=date_sa.time(),
            meeting_time_stop=date_so.time(),
            meeting_information='This is a test meeting with reminder',
            calendar_name='test_calendar',
            reminder_id=remobj.reminder_id)
        obj.save(self.session)
        obj.add_manager(self.session, ['pingou'])
        self.session.commit()
        self.assertNotEqual(obj, None)

        with testing.mock_sends(
                api.Message(topic="fedocal.reminder",
                            body={
                                'meeting': {
                                    'meeting_id': 1,
                                    'meeting_name':
                                    'Test meeting with reminder',
                                    'meeting_manager': ['pingou'],
                                    'meeting_date': ANY,
                                    'meeting_date_end': ANY,
                                    'meeting_time_start': ANY,
                                    'meeting_time_stop': ANY,
                                    'meeting_timezone': 'UTC',
                                    'meeting_information':
                                    'This is a test meeting with reminder',
                                    'meeting_location': None,
                                    'calendar_name': 'test_calendar'
                                },
                                'calendar': {
                                    'calendar_name': 'test_calendar',
                                    'calendar_contact': '*****@*****.**',
                                    'calendar_description':
                                    'This is a test calendar',
                                    'calendar_editor_group': 'fi-apprentice',
                                    'calendar_admin_group':
                                    'infrastructure-main2',
                                    'calendar_status': 'Enabled'
                                }
                            })):
            msgs = fedocal_cron.send_reminder()

        self.assertEqual(len(msgs), 1)
        self.assertEqual(msgs[0]['To'], '[email protected], [email protected]')
        self.assertEqual(msgs[0]['From'], '[email protected]')