Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

test_wishlists.py 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase, override_settings
  3. from django.urls import reverse
  4. from oscar.apps.wishlists.models import WishList, WishListSharedEmail
  5. from oscar.test.factories import WishListFactory
  6. from oscar.test.testcases import WebTestCase
  7. User = get_user_model()
  8. class WishListPrivateTestCase(TestCase):
  9. def setUp(self):
  10. super().setUp()
  11. self.user = User.objects.create(email="test@example.com", password="testpassword")
  12. self.wishlist = WishListFactory(owner=self.user, visibility=WishList.PRIVATE)
  13. self.wishlist_shared_url = self.wishlist.get_shared_url()
  14. def test_private_wishlist_detail_owner(self):
  15. self.client.force_login(self.user)
  16. response = self.client.get(self.wishlist_shared_url)
  17. self.assertEqual(response.status_code, 200)
  18. def test_private_wishlist_detail_logged_out_user(self):
  19. response = self.client.get(self.wishlist_shared_url)
  20. self.assertEqual(response.status_code, 403)
  21. def test_private_wishlist_detail_shared_email(self):
  22. WishListSharedEmail.objects.create(wishlist=self.wishlist, email="test2@example.com")
  23. response = self.client.get(self.wishlist_shared_url)
  24. self.assertEqual(
  25. response.status_code,
  26. 403,
  27. "The response should be 403 because the visibility is set to private."
  28. )
  29. def test_private_wishlist_is_sharable(self):
  30. self.assertFalse(self.wishlist.is_shareable)
  31. class WishListPublicTestCase(TestCase):
  32. def setUp(self):
  33. super().setUp()
  34. self.user = User.objects.create(email="test@example.com", password="testpassword")
  35. self.wishlist = WishListFactory(owner=self.user, visibility=WishList.PUBLIC)
  36. self.wishlist_shared_url = self.wishlist.get_shared_url()
  37. def test_public_wishlist_detail_owner(self):
  38. self.client.force_login(self.user)
  39. response = self.client.get(self.wishlist_shared_url)
  40. self.assertEqual(response.status_code, 200)
  41. def test_public_wishlist_detail_logged_out_user(self):
  42. response = self.client.get(self.wishlist_shared_url)
  43. self.assertEqual(response.status_code, 200)
  44. def test_public_wishlist_detail_shared_email(self):
  45. WishListSharedEmail.objects.create(wishlist=self.wishlist, email="test2@example.com")
  46. response = self.client.get(self.wishlist_shared_url)
  47. self.assertEqual(response.status_code, 200)
  48. def test_public_wishlist_is_sharable(self):
  49. self.assertTrue(self.wishlist.is_shareable)
  50. class WishListSharedTestCase(WebTestCase):
  51. def setUp(self):
  52. super().setUp()
  53. self.wishlist_user = User.objects.create(email="test@example.com", password="testpassword")
  54. self.wishlist = WishListFactory(owner=self.wishlist_user, visibility=WishList.SHARED)
  55. self.wishlist_shared_url = self.wishlist.get_shared_url()
  56. def test_shared_wishlist_detail_owner(self):
  57. self.client.force_login(self.wishlist_user)
  58. response = self.client.get(self.wishlist_shared_url)
  59. self.assertEqual(response.status_code, 200)
  60. def test_shared_wishlist_detail_logged_out_user(self):
  61. response = self.client.get(self.wishlist_shared_url)
  62. self.assertEqual(response.status_code, 302)
  63. def test_shared_wishlist_detail_shared_email(self):
  64. WishListSharedEmail.objects.create(wishlist=self.wishlist, email="test2@example.com")
  65. user = User.objects.create(email="test2@example.com", password="testpassword", username="test2")
  66. self.client.force_login(user)
  67. response = self.client.get(self.wishlist_shared_url)
  68. self.assertEqual(response.status_code, 200)
  69. def test_shared_wishlist_detail_non_shared_logged_in_user(self):
  70. # Create and set a user that has no access to the wishlist
  71. non_shared_user = User.objects.create(
  72. email="anotheruser@example.com",
  73. password="testpassword",
  74. username="anotheruser"
  75. )
  76. self.client.force_login(non_shared_user)
  77. response = self.client.get(self.wishlist_shared_url)
  78. self.assertEqual(response.status_code, 403)
  79. @override_settings(LOGIN_URL=reverse("customer:login"))
  80. def test_shared_wishlist_detail_non_authenticated_user(self):
  81. user = User.objects.create(email="test2@example.com", username="test2")
  82. user.set_password("testpassword")
  83. user.save()
  84. WishListSharedEmail.objects.create(wishlist=self.wishlist, email="test2@example.com")
  85. # Set user to None (non authenticated user)
  86. self.user = None
  87. response = self.get(self.wishlist_shared_url)
  88. self.assertIsRedirect(response)
  89. form = response.follow().forms["login_form"]
  90. form["login-username"] = "test2@example.com"
  91. form["login-password"] = "testpassword"
  92. response = form.submit("login_submit").follow()
  93. self.assertEqual(response.request.path, self.wishlist_shared_url)
  94. def test_shared_wishlist_is_sharable(self):
  95. self.assertTrue(self.wishlist.is_shareable)