from django.contrib.auth.models import AnonymousUser from django.http import HttpResponse from django.test import TestCase from django.test.client import RequestFactory from oscar.apps.basket import middleware class TestBasketMiddleware(TestCase): @staticmethod def get_response_for_test(request): return HttpResponse() def setUp(self): self.middleware = middleware.BasketMiddleware(self.get_response_for_test) self.request = RequestFactory().get('/') self.request.user = AnonymousUser() self.middleware(self.request) def test_basket_is_attached_to_request(self): self.assertTrue(hasattr(self.request, 'basket')) def test_strategy_is_attached_to_basket(self): self.assertTrue(hasattr(self.request.basket, 'strategy')) def test_strategy_is_attached_to_request(self): self.assertTrue(hasattr(self.request, 'strategy')) def test_get_cookie_basket_handles_invalid_signatures(self): request_factory = RequestFactory() request_factory.cookies['oscar_open_basket'] = '1:NOTAVALIDHASH' request = request_factory.get('/') request.cookies_to_delete = [] cookie_basket = self.middleware.get_cookie_basket("oscar_open_basket", request, None) self.assertEqual(None, cookie_basket) self.assertIn("oscar_open_basket", request.cookies_to_delete)