Commit d198b1ab by Andrea Grandi

Add Django manage command to create a DRF user Token

parent 823eea2d
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment