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'])
Exemple #3
0
 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')