diff --git a/colab/search/tests.py b/colab/search/tests.py index df85e92..6b054d6 100644 --- a/colab/search/tests.py +++ b/colab/search/tests.py @@ -13,7 +13,7 @@ class SearchViewTest(TestCase): self.client = Client() def tearDown(self): - call_command('clear_index', interactive=False,verbosity=0) + call_command('clear_index', interactive=False, verbosity=0) def test_search_thread(self): request = self.client.get('/search/?q=thread') diff --git a/colab/super_archives/fixtures/mailinglistdata.json b/colab/super_archives/fixtures/mailinglistdata.json new file mode 100644 index 0000000..6bbfa33 --- /dev/null +++ b/colab/super_archives/fixtures/mailinglistdata.json @@ -0,0 +1,186 @@ +[ + { + "fields": { + "last_name": "Jar", + "webpage": null, + "twitter": null, + "is_staff": false, + "user_permissions": [ + + ], + "date_joined": "2015-02-24T21:10:35.004Z", + "google_talk": null, + "first_name": "Gust", + "is_superuser": false, + "last_login": "2015-02-26T17:56:13.378Z", + "verification_hash": null, + "role": null, + "email": "gustmax@hotmail.com", + "username": "gustmax", + "bio": null, + "needs_update": false, + "is_active": true, + "facebook": null, + "groups": [ + + ], + "password": "pbkdf2_sha256$12000$ez83ccNOUQZk$vYT/QcYMukXZ7D7L1qQPyYlzCUEEEF20J7/Xjef0Rqg=", + "institution": null, + "github": null, + "modified": "2015-02-24T21:11:22.323Z" + }, + "model": "accounts.user", + "pk": 1 + }, + { + "fields": { + "real_name": "", + "user": 1, + "md5": "ed8f47ae6048f8d4456c0554578f53ff", + "address": "gustmax@hotmail.com" + }, + "model": "super_archives.emailaddress", + "pk": 1 + }, + { + "fields": { + "description": "", + "email": "", + "logo": "", + "last_imported_index": 0, + "is_private": true, + "name": "mailman" + }, + "model": "super_archives.mailinglist", + "pk": 1 + }, + { + "fields": { + "description": "", + "email": "", + "logo": "", + "last_imported_index": 0, + "is_private": false, + "name": "lista" + }, + "model": "super_archives.mailinglist", + "pk": 2 + }, + { + "fields": { + "description": "", + "email": "", + "logo": "", + "last_imported_index": 0, + "is_private": true, + "name": "privatelist" + }, + "model": "super_archives.mailinglist", + "pk": 3 + }, + { + "fields": { + "spam": false, + "subject_token": "no-subject", + "mailinglist": 1, + "score": 34, + "latest_message": 1 + }, + "model": "super_archives.thread", + "pk": 1 + }, + { + "fields": { + "spam": false, + "subject_token": "no-subject", + "mailinglist": 2, + "score": 34, + "latest_message": 2 + }, + "model": "super_archives.thread", + "pk": 2 + }, + { + "fields": { + "spam": false, + "subject_token": "no-subject", + "mailinglist": 3, + "score": 33, + "latest_message": 3 + }, + "model": "super_archives.thread", + "pk": 3 + }, + { + "fields": { + "body": "lista Mailman email", + "received_time": "2015-02-24T14:23:42Z", + "from_address": 1, + "thread": 1, + "spam": false, + "subject_clean": "(no subject)", + "message_id": "<20150224142347.9ED2419A5B0@localhost.localdomain>", + "subject": "[Mailman] (no subject)" + }, + "model": "super_archives.message", + "pk": 1 + }, + { + "fields": { + "body": "nada", + "received_time": "2015-02-24T14:15:39Z", + "from_address": 1, + "thread": 2, + "spam": false, + "subject_clean": "(no subject)", + "message_id": "<20150224141545.1AECA19A5A0@localhost.localdomain>", + "subject": "[Lista] (no subject)" + }, + "model": "super_archives.message", + "pk": 2 + }, + { + "fields": { + "body": "Mensagem da lista privada nada", + "received_time": "2015-02-24T14:15:39Z", + "from_address": 1, + "thread": 3, + "spam": false, + "subject_clean": "(no subject)", + "message_id": "<20150224141545.1AECA19A5A0@localhost.localdomain>", + "subject": "[PrivateList] (no subject)" + }, + "model": "super_archives.message", + "pk": 3 + }, + { + "fields": { + "text": "lista Mailman email\n", + "message": 1, + "is_reply": false, + "order": 0 + }, + "model": "super_archives.messageblock", + "pk": 1 + }, + { + "fields": { + "text": "nada\n", + "message": 2, + "is_reply": false, + "order": 0 + }, + "model": "super_archives.messageblock", + "pk": 2 + }, + { + "fields": { + "text": "Mensagem da lista privada nada\n", + "message": 3, + "is_reply": false, + "order": 0 + }, + "model": "super_archives.messageblock", + "pk": 3 + } +] diff --git a/colab/super_archives/tests/__init__.py b/colab/super_archives/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/colab/super_archives/tests/__init__.py diff --git a/colab/super_archives/tests/test_privatelist.py b/colab/super_archives/tests/test_privatelist.py new file mode 100644 index 0000000..8bfb542 --- /dev/null +++ b/colab/super_archives/tests/test_privatelist.py @@ -0,0 +1,66 @@ +# -*- coding:utf-8 -*- +import mock + +from colab.accounts.utils import mailman +from django.test import TestCase, Client + + +class ArchivesViewTest(TestCase): + + fixtures = ['mailinglistdata.json'] + + def setUp(self): + self.client = Client() + + def authenticate_user(self): + self.client.login(username='gustmax', password='1234') + + def test_see_only_private_list_if_member(self): + mailman.get_user_mailinglists = mock.Mock( + return_value="['privatelist']") + + self.authenticate_user() + request = self.client.get('/archives/thread/') + + list_data = request.context['lists'] + + self.assertEqual('lista', list_data[0][0]) + self.assertEqual('privatelist', list_data[1][0]) + self.assertEqual(2, len(list_data)) + + def test_see_only_public_if_not_logged_in(self): + request = self.client.get('/archives/thread/') + + list_data = request.context['lists'] + + self.assertEqual('lista', list_data[0][0]) + self.assertEqual(1, len(list_data)) + + def test_see_private_thread_in_dashboard_if_member(self): + mailman.get_user_mailinglists = mock.Mock( + return_value="['privatelist']") + + self.authenticate_user() + request = self.client.get('/dashboard') + + latest_threads = request.context['latest_threads'] + hottest_threads = request.context['hottest_threads'] + + self.assertEqual(2, len(latest_threads)) + self.assertEqual(2, len(hottest_threads)) + + def test_dont_see_private_thread_if_logged_out(self): + request = self.client.get('/dashboard') + + latest_threads = request.context['latest_threads'] + hottest_threads = request.context['hottest_threads'] + + self.assertEqual(1, len(latest_threads)) + self.assertEqual(1, len(hottest_threads)) + + def test_dont_see_private_threads_in_profile_if_logged_out(self): + request = self.client.get('/account/gustmax') + + emails = request.context['emails'] + + self.assertEqual(1, len(emails)) -- libgit2 0.21.2