コード例 #1
0
    def test_send_reminders_sends_admin_confirmation(self, current_app,
                                                     smtplib, load_room_ids,
                                                     MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        load_room_ids.return_value = {'all': ['roomID']}
        server_mock = mock.MagicMock()
        smtplib.SMTP.return_value = server_mock
        calendar_mock = mock.MagicMock()
        calendar_mock.events.return_value.list.return_value.execute.return_value = {
            'items': [{
                u'end': {
                    u'dateTime': u'2016-10-21T16:30:00'
                },
                u'organizer': {
                    u'email': u'*****@*****.**',
                },
                u'start': {
                    u'dateTime': u'2016-10-21T14:30:00',
                }
            }]
        }
        current_app.config = {
            'CALENDAR': calendar_mock,
            'MAIL_SERVER': 'server',
            'MAIL_PORT': 25,
            'MAIL_USERNAME': '******',
            'MAIL_PASSWORD': '******',
            'ADMIN_EMAIL': '*****@*****.**'
        }
        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = server_mock.mock_calls[-2][1][2]

        assert 'Subject: Reminder emails sent.' in message
コード例 #2
0
    def test_it_sends_the_correct_message(self, current_app, smtplib,
                                          load_room_ids):
        load_room_ids.return_value = {'all': ['roomID']}
        server_mock = mock.MagicMock()
        smtplib.SMTP.return_value = server_mock
        calendar_mock = mock.MagicMock()
        calendar_mock.events.return_value.list.return_value.execute.return_value = {
            'items': [{
                u'end': {
                    u'dateTime': u'2016-10-21T16:30:00'
                },
                u'organizer': {
                    u'email': u'*****@*****.**',
                },
                u'start': {
                    u'dateTime': u'2016-10-21T14:30:00',
                }
            }]
        }
        current_app.config = {
            'CALENDAR': calendar_mock,
            'MAIL_SERVER': 'server',
            'MAIL_PORT': 25,
            'MAIL_USERNAME': '******',
            'MAIL_PASSWORD': '******',
            'ADMIN_EMAIL': '*****@*****.**'
        }

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = server_mock.mock_calls[-3][1][2]

        assert """Content-Type: text/html; charset="us-ascii"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\n\n<p>Hello,</p>\n\n<p>Your meeting room booking details for tomorrow are:</p>\n\n\n  <ul>\n    <li>Room: None</li>\n    <li>Start: 14:30</li>\n    <li>End 16:30</li>\n  </ul>\n\n\n<p>\n  <strong>Delete your room booking if you don\'t need it</strong><br>\n  If you don\'t need the room booking anymore, please delete it so someone else can use the room.\n</p>\n<p>\n  You can delete a room booking in a series without affecting your future bookings.\n</p>\n<p>\n  Read how to delete a room booking using Google Calendar:<br>\n  <a href="https://support.google.com/calendar/answer/37113?hl=en&ref_topic=3417926" taget="_blank">https://support.google.com/calendar/answer/37113?hl=en&ref_topic=3417926</a>\n</p>\n<p>\n  <strong>Think about using a smaller room</strong><br>\n  If you\'ve got fewer people coming to the meeting than you first thought, it would be great if you could try moving to a smaller room.\n</p>\n\n<p>\n  Thanks,<br>\n  Your friendly meeting room app\n</p>\n""" in message  # NOQA
コード例 #3
0
    def test_if_its_friday_it_retrieves_monday_events(self,
                                                      _get_all_days_events):

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        _get_all_days_events.assert_called_once_with(
            mock.ANY, mock.ANY, datetime(2016, 11, 28, 16, 9, 0))
コード例 #4
0
    def test_subject_is_correct_if_not_friday(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert MIMEMultipart.mock_calls[3][1][1] == 'Your meeting room booking for tomorrow'
コード例 #5
0
    def test_subject_is_correct_if_not_friday(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert MIMEMultipart.mock_calls[3][1][1] == 'Your meeting room booking for tomorrow'
コード例 #6
0
    def test_error_sending_email_sends_email_to_admin(self):
        self.server_mock.sendmail.side_effect = [Exception('Something went wrong'), True, True]
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert self.server_mock.mock_calls[1][1][1][0] == '*****@*****.**'
        assert 'Subject: Error sending email to [email protected]' in self.server_mock.mock_calls[1][1][2]
        assert 'A wild error appeared! $$$ Something went wrong' in self.server_mock.mock_calls[1][1][2]
コード例 #7
0
    def test_error_sending_email_sends_email_to_admin(self):
        self.server_mock.sendmail.side_effect = [Exception('Something went wrong'), True, True]
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert self.server_mock.mock_calls[1][1][1][0] == '*****@*****.**'
        assert 'Subject: Error sending email to [email protected]' in self.server_mock.mock_calls[1][1][2]
        assert 'A wild error appeared! $$$ Something went wrong' in self.server_mock.mock_calls[1][1][2]
コード例 #8
0
    def test_it_sends_the_correct_message_if_no_location_set(self):
        self.events['items'][0].update({u'summary': u'Stuff about stuff'})
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = self.server_mock.mock_calls[0][1][2]

        assert """Title: Stuff about stuff\n  Room: Check your calendar\n  Start: 14:30\n  End: 16:30""" in message
コード例 #9
0
    def test_send_reminders_sends_admin_confirmation(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = self.server_mock.mock_calls[-1][1][2]

        assert 'Subject: Reminder emails sent.' in message
コード例 #10
0
    def test_send_reminders_sends_admin_confirmation(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = self.server_mock.mock_calls[-1][1][2]

        assert 'Subject: Reminder emails sent.' in message
コード例 #11
0
    def test_send_reminders_correctly_calls_the_logged_in_server(
            self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = GENERIC_EVENT

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert mock.call.sendmail(
            '*****@*****.**', ['*****@*****.**'],
            'Email message') in self.server_mock.mock_calls
コード例 #12
0
    def test_send_reminders_correctly_calls_the_logged_in_server(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = GENERIC_EVENT

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert mock.call.sendmail(
            '*****@*****.**',
            ['*****@*****.**'],
            'Email message'
        ) in self.server_mock.mock_calls
コード例 #13
0
    def test_it_sends_the_correct_message_if_no_location_set(self):
        self.events['items'][0].update({
            u'summary': u'Stuff about stuff'
        })
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        message = self.server_mock.mock_calls[0][1][2]

        assert """Title: Stuff about stuff\n  Room: Check your calendar\n  Start: 14:30\n  End: 16:30""" in message
コード例 #14
0
    def test_resource_email_addresses_are_ignored(self):
        self.events['items'][0].update({
            u'organizer': {
                u'email': u'*****@*****.**',
            },
        })
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert len(self.server_mock.mock_calls) == 1
        assert self.server_mock.mock_calls[0][1][1][0] != '*****@*****.**'
コード例 #15
0
    def test_resource_email_addresses_are_ignored(self):
        self.events['items'][0].update({
            u'organizer': {
                u'email': u'*****@*****.**',
            },
        })
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert len(self.server_mock.mock_calls) == 1
        assert self.server_mock.mock_calls[0][1][1][0] != '*****@*****.**'
コード例 #16
0
    def test_send_reminders_sends_email_to_multiple_users(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        event_two = self.events['items'][0].copy()
        event_two.update({
            u'organizer': {
                u'email': u'*****@*****.**',
            },
        })
        self.events['items'].append(event_two)
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert len(self.server_mock.mock_calls) == 3
コード例 #17
0
    def test_send_reminders_sends_email_to_multiple_users(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        event_two = self.events['items'][0].copy()
        event_two.update({
            u'organizer': {
                u'email': u'*****@*****.**',
            },
        })
        self.events['items'].append(event_two)
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert len(self.server_mock.mock_calls) == 3
コード例 #18
0
    def test_send_reminders_only_sends_one_email_for_multiple_bookings(
            self, current_app, smtplib, load_room_ids, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        load_room_ids.return_value = {'all': ['roomID']}
        server_mock = mock.MagicMock()
        smtplib.SMTP.return_value = server_mock
        calendar_mock = mock.MagicMock()
        calendar_mock.events.return_value.list.return_value.execute.return_value = {
            'items': [{
                u'end': {
                    u'dateTime': u'2016-10-21T16:30:00'
                },
                u'organizer': {
                    u'email': u'*****@*****.**',
                },
                u'start': {
                    u'dateTime': u'2016-10-21T14:30:00',
                }
            }, {
                u'end': {
                    u'dateTime': u'2016-10-21T11:30:00'
                },
                u'organizer': {
                    u'email': u'*****@*****.**',
                },
                u'start': {
                    u'dateTime': u'2016-10-21T10:30:00',
                }
            }]
        }
        current_app.config = {
            'CALENDAR': calendar_mock,
            'MAIL_SERVER': 'server',
            'MAIL_PORT': 25,
            'MAIL_USERNAME': '******',
            'MAIL_PASSWORD': '******',
            'ADMIN_EMAIL': '*****@*****.**'
        }
        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert mock.call.sendmail('*****@*****.**', ['*****@*****.**'],
                                  'Email message') in server_mock.mock_calls
コード例 #19
0
    def test_send_reminders_only_sends_one_email_for_multiple_bookings(
            self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        event_two = self.events['items'][0].copy()
        event_two.update({
            u'start': {
                u'dateTime': u'2016-10-21T10:30:00',
            },
            u'end': {
                u'dateTime': u'2016-10-21T11:30:00'
            },
        })
        self.events['items'].append(event_two)
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert mock.call.sendmail(
            '*****@*****.**', ['*****@*****.**'],
            'Email message') in self.server_mock.mock_calls
コード例 #20
0
    def test_send_reminders_only_sends_one_email_for_multiple_bookings(self, MIMEMultipart):
        MIMEMultipart.return_value.as_string.return_value = 'Email message'
        event_two = self.events['items'][0].copy()
        event_two.update({
            u'start': {
                u'dateTime': u'2016-10-21T10:30:00',
            },
            u'end': {
                u'dateTime': u'2016-10-21T11:30:00'
            },
        })
        self.events['items'].append(event_two)
        self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        assert mock.call.sendmail(
            '*****@*****.**',
            ['*****@*****.**'],
            'Email message'
        ) in self.server_mock.mock_calls
コード例 #21
0
    def test_if_its_friday_it_retrieves_monday_events(self, _get_all_days_events):

        email_reminder = EmailReminder()
        email_reminder.send_reminders()

        _get_all_days_events.assert_called_once_with(mock.ANY, mock.ANY, datetime(2016, 11, 28, 16, 9, 0))