def test_get_unread(self): api = uuid.uuid4().hex user_name = 'admin' with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) site, from_, _, msg, thread_id, msg_id, _, _, _, _ = get_data() to = find_profiles(site)[user_name] self.mbt.send_message(site, from_, to, msg, should_commit=True) request = DummyRequest() request.api = api request.params['thread_id'] = thread_id request.params['message_id'] = msg_id mark_message_read(site, request) transaction.commit() self.mbt.send_message(site, from_, to, msg, should_commit=True) transaction.commit() unread = self.mbt.get_unread(site, user_name) self.assertTrue(unread >= 0)
def test_delete_message(self): api = uuid.uuid4().hex with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) site, from_, _, msg, thread_id, msg_id, _, _, _, _ = get_data() to = find_profiles(site)['admin'] self.mbt.send_message(site, from_, to, msg, should_commit=True) request = DummyRequest() request.api = api request.params['thread_id'] = thread_id request.params['message_id'] = msg_id delete_message(site, request) transaction.commit() try: raw_msg, msg = self.mbt.get_message(site, from_, 'inbox', thread_id, msg_id) except NoSuchThreadException: pass else: raise Exception('Expected a NoSuchThreadException here')
def test_add_message(self): subject = uuid.uuid4().hex payload = uuid.uuid4().hex site, _ = open_root(get_default_config()) to = find_profiles(site)['sarah'] with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) r.replace('opencore.views.mbox._get_profile_details', lambda context, request, user: {}) request = DummyRequest(method='POST') request.api = DummyAPI() request.api.find_profile = (lambda userid: self.bob if userid == 'bob' else self.alice) request.POST = MultiDict([ ('to[]', 'bob'), ('subject', subject), ('payload', payload), ]) response = add_message(site, request) self.assertTrue("mbox_thread" in response.location) transaction.commit()
def test_cancel(self): self._registerLayoutProvider() request = DummyRequest() request.POST = MultiDict({"form.cancel": "1"}) context = DummyModel() response = self._callFUT(context, request) self.assertEqual(response.location, "http://example.com/")
def test_notsubmitted(self): self._registerTagbox() self._registerLayoutProvider() request = DummyRequest() request.POST = MultiDict() context = self.context renderer = registerDummyRenderer(self.template_fn) response = self._callFUT(context, request) self.failIf(renderer.fielderrors)
def test_add_message_multiple_recipients(self): subject = uuid.uuid4().hex payload = uuid.uuid4().hex with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) r.replace('opencore.views.mbox._get_profile_details', lambda context, request, user: {}) request = DummyRequest(method='POST') request.POST = MultiDict([ ('to[]', 'bob'), ('to[]', 'alice'), ('subject', subject), ('payload', payload), ]) request.api = DummyAPI() request.api.find_profile = (lambda userid: self.bob if userid == 'bob' else self.alice) response = add_message(self.context, request) # Mailboxes have been created self.assertTrue('bob.inbox' in self.context['mailboxes']) self.assertTrue('alice.inbox' in self.context['mailboxes']) # Queues have been created bob_inbox = self.context['mailboxes']['bob.inbox'] alice_inbox = self.context['mailboxes']['alice.inbox'] self.assertEquals(len(bob_inbox), 1) self.assertEquals(len(alice_inbox), 1) # Redirect to new message self.assertEquals( 'http://example.com/mbox_thread.html?' + urlencode({'thread_id': alice_inbox[0].id}) + '#last-message', response.location) r.restore() transaction.commit()
def test_mark_message_read(self): api = uuid.uuid4().hex with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) site, from_, _, msg, thread_id, msg_id, _, _, _, _ = get_data() to = find_profiles(site)['admin'] self.mbt.send_message(site, from_, to, msg, should_commit=True) request = DummyRequest() request.api = api request.params['thread_id'] = thread_id request.params['message_id'] = msg_id mark_message_read(site, request) transaction.commit() raw_msg, msg = self.mbt.get_message(site, from_, 'inbox', thread_id, msg_id) self.assertEquals(raw_msg.flags, ['READ'])
def _get_mbox_request(self, mbox_type, key='mbox_type'): request = DummyRequest() request.params[key] = mbox_type return request
def test_show_mbox(self): _people_url = uuid.uuid4().hex _firstname = uuid.uuid4().hex _lastname = uuid.uuid4().hex _country = uuid.uuid4().hex class _DummyAPI(object): static_url = '/foo/bar' def find_profile(*ignored_args, **ignored_kwargs): class _Dummy(object): firstname = _firstname lastname = _lastname country = _country organization = uuid.uuid4().hex thumb_url = lambda _profile, _request: '/test-thumb.jpg' return _Dummy() people_url = _people_url with Replacer() as r: r.replace('opencore.views.mbox.authenticated_userid', _authenticated_user_id) r.replace('opencore.views.mbox._get_profile_details', lambda context, request, user: {}) site, from_, _, msg, thread_id, _, _, _, payload, _ = get_data() to = find_profiles(site)['admin'] self.mbt.send_message(site, from_, to, msg, should_commit=True) site, _ = open_root(get_default_config()) request = DummyRequest() request.params['thread_id'] = thread_id request.api = _DummyAPI() response = show_mbox_thread(site, request) self.assertTrue(isinstance(response['api'], _DummyAPI)) self.assertTrue(len(response['messages']), 1) message = response['messages'][0] flags = message['flags'] if flags: self.assertEquals(flags, ['READ']) self.assertEquals(message['from'], 'admin') self.assertEquals(message['from_country'], _country) self.assertEquals(message['from_firstname'], _firstname) self.assertEquals(message['from_lastname'], _lastname) self.assertEquals(message['from_photo'], '/test-thumb.jpg') self.assertEquals(message['payload'], payload) self.assertTrue(len(message['payload']) > 20) self.assertTrue(len(message['queue_id']) > 20) self.assertTrue(len(message['to_data']) == 2) to_data = message['to_data'] for to_datum in to_data: self.assertEquals(to_datum['country'], _country) self.assertEquals(to_datum['firstname'], _firstname) self.assertEquals(to_datum['lastname'], _lastname) name = to_datum['name'] self.assertTrue(name in ('joe', 'sarah')) self.assertEquals(to_datum['photo_url'], '/test-thumb.jpg')