class TestFilterPermissionFilter(TestCase):
    """
    test filter
    """

    def setUp(self):
        self.filterperm = FilterPermission()
        self.me = User.objects.create(username="******", password='******')
        self.userok = User.objects.create(username="******", password='******')
        self.not_admin = User.objects.create(username="******", password='******')
        self.wrong = User.objects.create(username="******", password='******')
        self.admin = User.objects.create_superuser(username="******", password="******", email="")
        self.user_ct = ContentType.objects.get_by_natural_key("auth", "user")
        self.q = Q(Q(username='******') | Q(username='******'))
        self.qserializer = QSerializer(base64=True)
        self.myfilter = self.qserializer.dumps(self.q)
        self.fpm = FilterPermissionModel.objects.create(user=self.me,
                                                        content_type=self.user_ct,
                                                        filter=self.myfilter)
        self.request = HttpRequest()
        self.request.user = self.me
        self.queryset = User.objects.all()
        self.filterbackend = FilterPermissionBackend()


    def test_manager_valid(self):
        filter = self.filterbackend.filter_queryset(self.request, self.queryset, None)
        self.assertEqual(len(filter.all()), 2)
        self.assertEqual(filter.get(username='******'), self.userok)

    def test_manager_not_valid(self):
        filter = self.filterbackend.filter_queryset(self.request, self.queryset, None)
        self.assertEqual(len(filter.all()), 2)
        with self.assertRaises(User.DoesNotExist):
            filter.get(username='******')

    def test_superuser(self):
        self.request.user = self.admin
        filter = self.filterbackend.filter_queryset(self.request, self.queryset, None)
        self.assertEqual(len(filter.all()), 5)

    def test_no_filter(self):
        self.request.user = self.not_admin
        filter = self.filterbackend.filter_queryset(self.request, self.queryset, None)
        self.assertEqual(len(filter.all()), 5)
 def setUp(self):
     self.filterperm = FilterPermission()
     self.me = User.objects.create(username="******", password='******')
     self.userok = User.objects.create(username="******", password='******')
     self.not_admin = User.objects.create(username="******", password='******')
     self.wrong = User.objects.create(username="******", password='******')
     self.admin = User.objects.create_superuser(username="******", password="******", email="")
     self.user_ct = ContentType.objects.get_by_natural_key("auth", "user")
     self.q = Q(Q(username='******') | Q(username='******'))
     self.qserializer = QSerializer(base64=True)
     self.myfilter = self.qserializer.dumps(self.q)
     self.fpm = FilterPermissionModel.objects.create(user=self.me,
                                                     content_type=self.user_ct,
                                                     filter=self.myfilter)
     self.request = HttpRequest()
     self.request.user = self.me
     self.queryset = User.objects.all()
     self.filterbackend = FilterPermissionBackend()