def test_message_type_is_b_sent_email(self, broadcast_email_mock, broadcast_sms_mock, broadcast_call_mock): """Message type: broadcast. Ensure server will sent email with method is email""" from sosbeacon.event.message import broadcast_to_method broadcast_to_method(self.event.key, self.message_broadcast.key, 900, "*****@*****.**") self.assertEqual(1, broadcast_email_mock.call_count) self.assertEqual(0, broadcast_sms_mock.call_count) self.assertEqual(0, broadcast_call_mock.call_count)
def test_message_type_is_ec_sent_sms(self, broadcast_email_mock, broadcast_sms_mock, broadcast_call_mock): """Message type: 'ec' - email call. Ensure server will make a call with method is phone""" from sosbeacon.event.contact_marker import ContactMarker from sosbeacon.event.message import broadcast_to_method broadcast_to_method(self.event.key, self.message_call.key, 900, "84973796065") self.assertEqual(0, broadcast_email_mock.call_count) self.assertEqual(0, broadcast_sms_mock.call_count) self.assertEqual(1, broadcast_call_mock.call_count)
def test_message_type_is_em_sent_email(self, broadcast_email_mock, broadcast_sms_mock, broadcast_call_mock): """Message type: 'em' - emergency. Ensure server will sent email with method is email""" from sosbeacon.event.contact_marker import ContactMarker from sosbeacon.event.message import broadcast_to_method broadcast_to_method(self.event.key, self.message_emergency.key, 900, "*****@*****.**") self.assertEqual(1, broadcast_email_mock.call_count) self.assertEqual(0, broadcast_sms_mock.call_count) self.assertEqual(0, broadcast_call_mock.call_count)
def post(self): from sosbeacon.event.event import EVENT_STATUS_CLOSED event_urlsafe = self.request.get('event') user_urlsafe = self.request.get('user') message_urlsafe = self.request.get('message') method = self.request.get('method') if not event_urlsafe: logging.error('No event key given.') return # TODO: Use event id rather than key here for namespacing purposes? event_key = ndb.Key(urlsafe=event_urlsafe) event = event_key.get() if not event: logging.error('Event %s not found!', event_key) error = 'Event %s not found!' % event_key create_error_log(error, 'ERR') return if event.status == EVENT_STATUS_CLOSED: logging.error('Event %s closed!', event_key) error = 'Event %s not found!' % event_key create_error_log(error, 'ERR') return user_key = ndb.Key(urlsafe = user_urlsafe) user = user_key.get() if not user: logging.error('User %s not found!', user_key) error = 'User %s not found!' % user_key create_error_log(error, 'ERR') return message_key = ndb.Key(urlsafe = message_urlsafe) message = message_key.get() if not message: logging.error('Message %s not found!', message_key) error = 'Message %s not found!' % message_key create_error_log(error, 'ERR') return broadcast_to_method(event_key, message_key, user_key.id(), method)
def post(self): from google.appengine.api import namespace_manager event_urlsafe = self.request.get('event') if not event_urlsafe: logging.error('No event key given.') return # TODO: Use event id rather than key here for namespacing purposes? event_key = ndb.Key(urlsafe=event_urlsafe) event = event_key.get() if not event: logging.error('Event %s not found!', event_key) return if event.status == EVENT_STATUS_CLOSED: logging.error('Event %s closed!', event_key) return message_urlsafe = self.request.get('message') if not message_urlsafe: logging.error('No message key given.') return # TODO: Use message id rather than key here for namespacing purposes? message_key = ndb.Key(urlsafe=message_urlsafe) # TODO: Check namespace here. current_namespae = unicode(namespace_manager.get_namespace()) if message_key.namespace() != current_namespae: logging.error('Message %s not in namespace %s!', message_key, current_namespae) return message = message_key.get() if not message: logging.error('Message %s not found!', message_key) return # We don't want to send the wrong message to the wrong groups. if message.event != event.key: logging.error('Message %s not belong to Event %s!', message_key, event_key) return if message.message_type == 'c' : logging.error('Message %s is not a broadcast!', message_key) return short_id = self.request.get('short_id') if not short_id: logging.error('No short_id given.') return short_id = int(short_id) method = self.request.get('method') if not method: logging.error('No method given.') return retry_count = int( self.request.headers.get('X-AppEngine-TaskRetryCount', 0)) exec_count = int( self.request.headers.get('X-AppEngine-ExecutionCount', 0)) if exec_count > 5 or retry_count > 10: logging.error('Too many failures sending to %s, aborting.', method) return broadcast_to_method(event_key, message_key, short_id, method)