def test_if_encoding_does_not_vary_in_time(self, time): data = {'a': 3} time.return_value = 16 old = utils.Next().encode(data) time.return_value = 42 new = utils.Next().encode(data) self.assertEqual(old, new)
def test_valid_next(self, authenticate): authenticate.return_value = None encoded_next = utils.Next().encode({ 'next': 'http://next.example.com', 'close': 'http://close.example.com' }) next_value = parse.parse_qs(encoded_next)['next'][0] request = mock.Mock(GET={ 'next': next_value, 'code': 'code' }, method='GET') with self.settings(FACEBOOK_CANVAS_URL='http://example.com'): response = views.handler(request) self.assertEqual(302, response.status_code) self.assertEqual('http://next.example.com', response['Location'])
def get(self, request): try: got_next = self._get_next_from_request(request) self.next_url = utils.Next().decode(got_next) except utils.InvalidNextUrl: logger.warning('Invalid facebook handler next.', extra={'request': request}) return http.HttpResponseBadRequest() if 'code' in request.GET: try: self.login() except facepy.FacepyError as e: return self.handle_facebook_error(e) response = http.HttpResponseRedirect(self._get_success_url()) response["P3P"] = ('CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi' ' IVDi CONi HIS OUR IND CNT"') else: response = http.HttpResponseRedirect(self.next_url['close']) return response
def test_if_encoding_is_dictionary_order_independent(self): ordered = collections.OrderedDict([('A', 'a'), ('B', 'b')]) reverse_ordered = collections.OrderedDict([('B', 'b'), ('A', 'a')]) self.assertEqual(utils.Next().encode(ordered), utils.Next().encode(reverse_ordered))
def test_empty_next(self): with self.assertRaises(utils.InvalidNextUrl): utils.Next().decode('')
def test_invalid_next_format(self): with self.assertRaises(utils.InvalidNextUrl): utils.Next().decode('this is not valid signature')
def test_invalid_next(self): with self.assertRaises(utils.InvalidNextUrl): utils.Next().decode('1:2:3')