def setUp(self):
     self.filterperm = FilterPermission()
     self.request = HttpRequest()
     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.user = self.me
class TestFilterPermission(TestCase):
    """
    test filter permission
    """

    def setUp(self):
        self.filterperm = FilterPermission()
        self.request = HttpRequest()
        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.user = self.me

    def test_superuser(self):
        self.request.user = self.admin
        res = self.filterperm.has_object_permission(self.request, None, None)
        self.assertTrue(res)

    def test_no_filter(self):
        self.request.user = self.not_admin
        res = self.filterperm.has_object_permission(self.request, None, self.userok)
        self.assertTrue(res)
        res = self.filterperm.has_object_permission(self.request, None, self.wrong)
        self.assertTrue(res)

    def test_obj_valid(self):
        res = self.filterperm.has_object_permission(self.request, None, self.userok)
        self.assertTrue(res)

    def test_obj_not_valid(self):
        res = self.filterperm.has_object_permission(self.request, None, self.wrong)
        self.assertFalse(res)