| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- from django.contrib.auth import get_user_model
- from django.test import TestCase, override_settings
- from django.urls import reverse
-
- from oscar.apps.wishlists.models import WishList, WishListSharedEmail
- from oscar.test.factories import WishListFactory
- from oscar.test.testcases import WebTestCase
-
- User = get_user_model()
-
-
- class WishListPrivateTestCase(TestCase):
- def setUp(self):
- super().setUp()
- self.user = User.objects.create(
- email="test@example.com", password="testpassword"
- )
- self.wishlist = WishListFactory(owner=self.user, visibility=WishList.PRIVATE)
- self.wishlist_shared_url = self.wishlist.get_shared_url()
-
- def test_private_wishlist_detail_owner(self):
- self.client.force_login(self.user)
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_private_wishlist_detail_logged_out_user(self):
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 403)
-
- def test_private_wishlist_detail_shared_email(self):
- WishListSharedEmail.objects.create(
- wishlist=self.wishlist, email="test2@example.com"
- )
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(
- response.status_code,
- 403,
- "The response should be 403 because the visibility is set to private.",
- )
-
- def test_private_wishlist_is_sharable(self):
- self.assertFalse(self.wishlist.is_shareable)
-
-
- class WishListPublicTestCase(TestCase):
- def setUp(self):
- super().setUp()
- self.user = User.objects.create(
- email="test@example.com", password="testpassword"
- )
- self.wishlist = WishListFactory(owner=self.user, visibility=WishList.PUBLIC)
- self.wishlist_shared_url = self.wishlist.get_shared_url()
-
- def test_public_wishlist_detail_owner(self):
- self.client.force_login(self.user)
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_public_wishlist_detail_logged_out_user(self):
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_public_wishlist_detail_shared_email(self):
- WishListSharedEmail.objects.create(
- wishlist=self.wishlist, email="test2@example.com"
- )
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_public_wishlist_is_sharable(self):
- self.assertTrue(self.wishlist.is_shareable)
-
-
- class WishListSharedTestCase(WebTestCase):
- def setUp(self):
- super().setUp()
- self.wishlist_user = User.objects.create(
- email="test@example.com", password="testpassword"
- )
- self.wishlist = WishListFactory(
- owner=self.wishlist_user, visibility=WishList.SHARED
- )
- self.wishlist_shared_url = self.wishlist.get_shared_url()
-
- def test_shared_wishlist_detail_owner(self):
- self.client.force_login(self.wishlist_user)
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_shared_wishlist_detail_logged_out_user(self):
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 302)
-
- def test_shared_wishlist_detail_shared_email(self):
- WishListSharedEmail.objects.create(
- wishlist=self.wishlist, email="test2@example.com"
- )
- user = User.objects.create(
- email="test2@example.com", password="testpassword", username="test2"
- )
- self.client.force_login(user)
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 200)
-
- def test_shared_wishlist_detail_non_shared_logged_in_user(self):
- # Create and set a user that has no access to the wishlist
- non_shared_user = User.objects.create(
- email="anotheruser@example.com",
- password="testpassword",
- username="anotheruser",
- )
- self.client.force_login(non_shared_user)
- response = self.client.get(self.wishlist_shared_url)
- self.assertEqual(response.status_code, 403)
-
- @override_settings(LOGIN_URL=reverse("customer:login"))
- def test_shared_wishlist_detail_non_authenticated_user(self):
- user = User.objects.create(email="test2@example.com", username="test2")
- user.set_password("testpassword")
- user.save()
- WishListSharedEmail.objects.create(
- wishlist=self.wishlist, email="test2@example.com"
- )
-
- # Set user to None (non authenticated user)
- self.user = None
-
- response = self.get(self.wishlist_shared_url)
- self.assertIsRedirect(response)
-
- form = response.follow().forms["login_form"]
- form["login-username"] = "test2@example.com"
- form["login-password"] = "testpassword"
- response = form.submit("login_submit").follow()
- self.assertEqual(response.request.path, self.wishlist_shared_url)
-
- def test_shared_wishlist_is_sharable(self):
- self.assertTrue(self.wishlist.is_shareable)
|