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): # pylint: disable=no-member 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)