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]')
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)
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)
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)
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
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
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)
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]')