oauth2: add command oauth2-create-client (fixes #22949)

This commit is contained in:
Benjamin Dauvergne 2018-03-31 12:11:38 +02:00
parent cbf2f6132b
commit 76532ef64a
4 changed files with 47 additions and 0 deletions

View File

View File

@ -0,0 +1,24 @@
from django.core.management.base import BaseCommand
from fargo.oauth2.models import OAuth2Client
class Command(BaseCommand):
help = 'Create an OAuth2 client'
def add_arguments(self, parser):
parser.add_argument('client_name')
parser.add_argument('redirect_uris')
parser.add_argument('--client-id', required=False, default=None)
parser.add_argument('--client-secret', required=False, default=None)
def handle(self, client_name, redirect_uris, client_id, client_secret, **options):
kwargs = {
'client_name': client_name,
'redirect_uris': redirect_uris,
}
if client_id:
kwargs['client_id'] = client_id
if client_secret:
kwargs['client_secret'] = client_secret
client = OAuth2Client.objects.create(**kwargs)

View File

@ -6,6 +6,7 @@ import urlparse
from django.core.urlresolvers import reverse
from django.utils.http import urlencode
from django.core.management import call_command
from fargo.oauth2.models import OAuth2Client, OAuth2Authorize, OAuth2TempFile
from fargo.fargo.models import UserDocument
@ -205,3 +206,25 @@ def test_idp_authentication(mocked_post, settings, app, oauth2_client, john_doe,
url = reverse('oauth2-get-document')
app.authorization = ('Bearer', str(auth.access_token))
resp = app.get(url, status=200)
def test_command_create_client(db):
call_command('oauth2-create-client', 'test', 'https://example.com/')
client = OAuth2Client.objects.get()
assert client.client_name == 'test'
assert client.redirect_uris == 'https://example.com/'
assert client.client_id
assert client.client_secret
OAuth2Client.objects.all().delete()
call_command('oauth2-create-client',
'test',
'https://example.com/',
'--client-id=wtf',
'--client-secret=whocares')
client = OAuth2Client.objects.get()
assert client.client_name == 'test'
assert client.redirect_uris == 'https://example.com/'
assert client.client_id == 'wtf'
assert client.client_secret == 'whocares'