mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Closes #6899: Add filterset tests for Token
This commit is contained in:
parent
51d1b6e0d6
commit
34aa231436
@ -65,10 +65,39 @@ class TokenFilterSet(BaseFilterSet):
|
|||||||
method='search',
|
method='search',
|
||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='user',
|
||||||
|
queryset=User.objects.all(),
|
||||||
|
label='User',
|
||||||
|
)
|
||||||
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='user__username',
|
||||||
|
queryset=User.objects.all(),
|
||||||
|
to_field_name='username',
|
||||||
|
label='User (name)',
|
||||||
|
)
|
||||||
|
created = django_filters.DateTimeFilter()
|
||||||
|
created__gte = django_filters.DateTimeFilter(
|
||||||
|
field_name='created',
|
||||||
|
lookup_expr='gte'
|
||||||
|
)
|
||||||
|
created__lte = django_filters.DateTimeFilter(
|
||||||
|
field_name='created',
|
||||||
|
lookup_expr='lte'
|
||||||
|
)
|
||||||
|
expires = django_filters.DateTimeFilter()
|
||||||
|
expires__gte = django_filters.DateTimeFilter(
|
||||||
|
field_name='expires',
|
||||||
|
lookup_expr='gte'
|
||||||
|
)
|
||||||
|
expires__lte = django_filters.DateTimeFilter(
|
||||||
|
field_name='expires',
|
||||||
|
lookup_expr='lte'
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Token
|
model = Token
|
||||||
fields = ['id', 'user', 'created', 'expires', 'key', 'write_enabled']
|
fields = ['id', 'key', 'write_enabled']
|
||||||
|
|
||||||
|
|
||||||
class ObjectPermissionFilterSet(BaseFilterSet):
|
class ObjectPermissionFilterSet(BaseFilterSet):
|
||||||
|
@ -209,7 +209,7 @@ class Token(BigIDModel):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
# Only display the last 24 bits of the token to avoid accidental exposure.
|
# Only display the last 24 bits of the token to avoid accidental exposure.
|
||||||
return "{} ({})".format(self.key[-6:], self.user)
|
return f"{self.key[-6:]} ({self.user})"
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.key:
|
if not self.key:
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth.models import Group, User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.utils.timezone import make_aware
|
||||||
|
|
||||||
from users.filtersets import GroupFilterSet, ObjectPermissionFilterSet, UserFilterSet
|
from users import filtersets
|
||||||
from users.models import ObjectPermission
|
from users.models import ObjectPermission, Token
|
||||||
from utilities.testing import BaseFilterSetTests
|
from utilities.testing import BaseFilterSetTests
|
||||||
|
|
||||||
|
|
||||||
class UserTestCase(TestCase, BaseFilterSetTests):
|
class UserTestCase(TestCase, BaseFilterSetTests):
|
||||||
queryset = User.objects.all()
|
queryset = User.objects.all()
|
||||||
filterset = UserFilterSet
|
filterset = filtersets.UserFilterSet
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
@ -94,7 +97,7 @@ class UserTestCase(TestCase, BaseFilterSetTests):
|
|||||||
|
|
||||||
class GroupTestCase(TestCase, BaseFilterSetTests):
|
class GroupTestCase(TestCase, BaseFilterSetTests):
|
||||||
queryset = Group.objects.all()
|
queryset = Group.objects.all()
|
||||||
filterset = GroupFilterSet
|
filterset = filtersets.GroupFilterSet
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
@ -113,7 +116,7 @@ class GroupTestCase(TestCase, BaseFilterSetTests):
|
|||||||
|
|
||||||
class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
|
class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
|
||||||
queryset = ObjectPermission.objects.all()
|
queryset = ObjectPermission.objects.all()
|
||||||
filterset = ObjectPermissionFilterSet
|
filterset = filtersets.ObjectPermissionFilterSet
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
@ -179,3 +182,53 @@ class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
|
|||||||
object_types = ContentType.objects.filter(model__in=['site', 'rack'])
|
object_types = ContentType.objects.filter(model__in=['site', 'rack'])
|
||||||
params = {'object_types': [object_types[0].pk, object_types[1].pk]}
|
params = {'object_types': [object_types[0].pk, object_types[1].pk]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
|
||||||
|
class TokenTestCase(TestCase, BaseFilterSetTests):
|
||||||
|
queryset = Token.objects.all()
|
||||||
|
filterset = filtersets.TokenFilterSet
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
|
||||||
|
users = (
|
||||||
|
User(username='User1'),
|
||||||
|
User(username='User2'),
|
||||||
|
User(username='User3'),
|
||||||
|
)
|
||||||
|
User.objects.bulk_create(users)
|
||||||
|
|
||||||
|
future_date = make_aware(datetime.datetime(3000, 1, 1))
|
||||||
|
past_date = make_aware(datetime.datetime(2000, 1, 1))
|
||||||
|
tokens = (
|
||||||
|
Token(user=users[0], key=Token.generate_key(), expires=future_date, write_enabled=True),
|
||||||
|
Token(user=users[1], key=Token.generate_key(), expires=future_date, write_enabled=True),
|
||||||
|
Token(user=users[2], key=Token.generate_key(), expires=past_date, write_enabled=False),
|
||||||
|
)
|
||||||
|
Token.objects.bulk_create(tokens)
|
||||||
|
|
||||||
|
def test_user(self):
|
||||||
|
users = User.objects.order_by('id')[:2]
|
||||||
|
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
params = {'user': [users[0].username, users[1].username]}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
def test_expires(self):
|
||||||
|
params = {'expires': '3000-01-01T00:00:00'}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
params = {'expires__gte': '2021-01-01T00:00:00'}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
params = {'expires__lte': '2021-01-01T00:00:00'}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
||||||
|
|
||||||
|
def test_key(self):
|
||||||
|
tokens = Token.objects.all()[:2]
|
||||||
|
params = {'key': [tokens[0].key, tokens[1].key]}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
def test_write_enabled(self):
|
||||||
|
params = {'write_enabled': True}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
params = {'write_enabled': False}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user