def test(self): requester = User.objects.create_user('ownow', '*****@*****.**', 'mypassword') request = toolbox.add_request('abc', requester=requester) token = toolbox.create_token(request) data = toolbox.get_default_signer().load(token) self.assertEquals(data.get('id'), '%s' % request.id) self.assertEquals(data.get('requester'), requester.id) # Now with additional data additional_data = {'abc': 123, 'z': ['y', 'z', 1]} token = toolbox.create_token(request, data=additional_data) data = toolbox.get_default_signer().load(token) additional_data['id'] = '%s' % request.id additional_data['requester'] = requester.id self.assertDictEqual(data, additional_data)
def test_request_does_not_exist(self): request = toolbox.add_request('abc', requester=self.user) token = toolbox.create_token(request) request.delete() http_request = self.factory.get('/something') http_request.user = self.user self.assertRaises(Http404, serve_file, http_request, token)
def test_invalid_token(self): with override_settings(MEDIA_ROOT=self.tempdir, MEDIA_URL='/'): request = toolbox.add_request('abc', requester=self.user) toolbox.attach_file(request, ContentFile(b'abc')) token = toolbox.create_token(request) http_request = self.factory.get('/something') http_request.user = self.user self.assertRaises(SuspiciousToken, serve_file, http_request, token + 'a')
def test_other_user(self): other_user = User.objects.create_user('oho', '*****@*****.**', 'nono') with override_settings(MEDIA_ROOT=self.tempdir, MEDIA_URL='/'): request = toolbox.add_request('abc', requester=self.user) toolbox.attach_file(request, ContentFile(b'abc')) token = toolbox.create_token(request) http_request = self.factory.get('/something') http_request.user = other_user self.assertRaises(UserIsNotRequester, serve_file, http_request, token)
def test_token_expired(self, decode_mock): decode_mock.side_effect = SignatureExpired with override_settings(MEDIA_ROOT=self.tempdir, MEDIA_URL='/'): request = toolbox.add_request('abc', requester=self.user) toolbox.attach_file(request, ContentFile(b'abc')) token = toolbox.create_token(request) http_request = self.factory.get('/something') http_request.user = self.user self.assertRaises(SignatureHasExpired, serve_file, http_request, token)
def test_other_user_with_no_verification(self): other_user = User.objects.create_user('oho', '*****@*****.**', 'nono') with override_settings(MEDIA_ROOT=self.tempdir, MEDIA_URL='/'): request = toolbox.add_request('abc', requester=self.user) toolbox.attach_file(request, ContentFile(b'abc')) token = toolbox.create_token(request) http_request = self.factory.get('/something') http_request.user = other_user response = serve_file(http_request, token, verify_requester=False) self.assertEqual(response.status_code, 200)
def test(self): requester = User.objects.create_user('ownow', '*****@*****.**', 'mypassword') request = toolbox.add_request('abc', requester=requester) token = toolbox.create_token(request) # Clear the requester request.requester = None request.save() self.assertRaises(FileRequest.DoesNotExist, toolbox.decode, token, require_requester=True) request.requester = requester request.save() found, data = toolbox.decode(token, require_requester=True) self.assertEqual(found, request)