Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

customer_tests.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import httplib
  2. from django.test.client import Client
  3. from django.contrib.auth.models import User
  4. from django.core.urlresolvers import reverse
  5. from django.test import TestCase
  6. from django.http import HttpRequest
  7. from oscar.apps.customer.history_helpers import get_recently_viewed_product_ids
  8. from oscar.test.helpers import create_product, create_order
  9. class HistoryHelpersTest(TestCase):
  10. def setUp(self):
  11. self.client = Client()
  12. self.product = create_product()
  13. def test_viewing_product_creates_cookie(self):
  14. response = self.client.get(self.product.get_absolute_url())
  15. self.assertTrue('oscar_recently_viewed_products' in response.cookies)
  16. def test_id_gets_added_to_cookie(self):
  17. response = self.client.get(self.product.get_absolute_url())
  18. request = HttpRequest()
  19. request.COOKIES['oscar_recently_viewed_products'] = response.cookies['oscar_recently_viewed_products'].value
  20. self.assertTrue(self.product.id in get_recently_viewed_product_ids(request))
  21. class AnonOrderDetail(TestCase):
  22. def setUp(self):
  23. self.client = Client()
  24. def test_404_received_for_unknown_order(self):
  25. response = self.client.get(reverse('customer:anon-order', kwargs={'order_number': 1000,
  26. 'hash': '1231231232'}))
  27. self.assertEqual(httplib.NOT_FOUND, response.status_code)
  28. def test_200_received_for_order_with_correct_hash(self):
  29. order = create_order()
  30. response = self.client.get(reverse('customer:anon-order', kwargs={'order_number': order.number,
  31. 'hash': order.verification_hash()}))
  32. self.assertEqual(httplib.OK, response.status_code)
  33. def test_404_received_for_order_with_incorrect_hash(self):
  34. order = create_order()
  35. response = self.client.get(reverse('customer:anon-order', kwargs={'order_number': order.number,
  36. 'hash': 'bad'}))
  37. self.assertEqual(httplib.NOT_FOUND, response.status_code)
  38. class EditProfileTests(TestCase):
  39. username = 'customer'
  40. password = 'cheeseshop'
  41. email = 'customer@example.com'
  42. def setUp(self):
  43. User.objects.create_user(username=self.username,
  44. email=self.email, password=self.password)
  45. is_successful = self.client.login(username=self.username,
  46. password=self.password)
  47. if not is_successful:
  48. self.fail("Unable to login as %s" % self.username)
  49. def tearDown(self):
  50. User.objects.all().delete()
  51. def test_update_profile_page_for_smoke(self):
  52. url = reverse('customer:profile-update')
  53. response = self.client.get(url)
  54. self.assertEqual(200, response.status_code)
  55. self.assertTrue('form' in response.context)
  56. class AuthTestCase(TestCase):
  57. username = 'customer'
  58. password = 'cheeseshop'
  59. email = 'customer@example.com'
  60. def setUp(self):
  61. self.client = Client()
  62. self.product = create_product()
  63. User.objects.create_user(username=self.username,
  64. email=self.email, password=self.password)
  65. self.client.login(username=self.username, password=self.password)
  66. def test_cookies_deleted_on_logout(self):
  67. response = self.client.get(self.product.get_absolute_url())
  68. self.assertTrue('oscar_recently_viewed_products' in response.cookies)
  69. response = self.client.get(reverse('customer:logout'))
  70. self.assertTrue(('oscar_recently_viewed_products' not in response.cookies)
  71. or not
  72. self.client.cookies['oscar_recently_viewed_products'].coded_value)
  73. class AuthStaffRedirectTests(TestCase):
  74. username = 'staff'
  75. password = 'cheeseshop'
  76. email = 'staff@example.com'
  77. def test_staff_member_login_for_dashboard(self):
  78. """
  79. Test if a staff member that is not yet logged in and trying to access the
  80. dashboard is redirected to the Oscar login page (instead of the ``admin``
  81. login page). Also test that the redirect after successful login will
  82. be the originally requested page.
  83. """
  84. self.client = Client()
  85. user = User.objects.create_user(username=self.username,
  86. email=self.email, password=self.password)
  87. user.is_staff = True
  88. user.save()
  89. response = self.client.get(reverse('dashboard:index'), follow=True)
  90. self.assertContains(response, "login-username", status_code=200)
  91. self.assertEquals(response.context['next'], reverse('dashboard:index'))