mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-25 16:00:49 +03:00
Add Django manage command to create a DRF user Token
This commit is contained in:
parent
823eea2d59
commit
d198b1abe6
0
rest_framework/authtoken/management/__init__.py
Normal file
0
rest_framework/authtoken/management/__init__.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from django.contrib.auth.models import User
|
||||
from django.core.management.base import BaseCommand
|
||||
from rest_framework.authtoken.models import Token
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Create DRF Token for a given user'
|
||||
|
||||
def create_user_token(self, username):
|
||||
user = User.objects.get(username=username)
|
||||
token = Token.objects.get_or_create(user=user)
|
||||
return token[0]
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('username', type=str, nargs='+')
|
||||
|
||||
def handle(self, *args, **options):
|
||||
username = options['username']
|
||||
token = self.create_user_token(username)
|
||||
print('Generated token {0} for user {1}'.format(token.key, username))
|
|
@ -4,6 +4,8 @@ from django.contrib.auth.models import User
|
|||
from django.test import TestCase
|
||||
|
||||
from rest_framework.authtoken.admin import TokenAdmin
|
||||
from rest_framework.authtoken.management.commands.drf_create_token import \
|
||||
Command as AuthTokenCommand
|
||||
from rest_framework.authtoken.models import Token
|
||||
from rest_framework.authtoken.serializers import AuthTokenSerializer
|
||||
from rest_framework.exceptions import ValidationError
|
||||
|
@ -33,3 +35,16 @@ class AuthTokenTests(TestCase):
|
|||
self.user.set_password(data['password'])
|
||||
self.user.save()
|
||||
assert AuthTokenSerializer(data=data).is_valid()
|
||||
|
||||
|
||||
class AuthTokenCommandTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.site = site
|
||||
self.user = User.objects.create_user(username='test_user')
|
||||
|
||||
def test_command_create_user_token(self):
|
||||
token = AuthTokenCommand().create_user_token(self.user.username)
|
||||
assert token is not None
|
||||
token_saved = Token.objects.first()
|
||||
assert token.key == token_saved.key
|
||||
|
|
Loading…
Reference in New Issue
Block a user