From 5f7a2ba691c68b51e09dba6c7a3ce142807428cf Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 31 Mar 2018 12:11:38 +0200 Subject: [PATCH] oauth2: add command oauth2-create-client (fixes #22949) --- .../management/commands/oauth2-create-client.py | 24 ++++++++++++++++++++++ tests/test_oauth2.py | 23 +++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 fargo/oauth2/management/commands/oauth2-create-client.py diff --git a/fargo/oauth2/management/commands/oauth2-create-client.py b/fargo/oauth2/management/commands/oauth2-create-client.py new file mode 100644 index 0000000..9aa50a4 --- /dev/null +++ b/fargo/oauth2/management/commands/oauth2-create-client.py @@ -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) diff --git a/tests/test_oauth2.py b/tests/test_oauth2.py index 6ebac9f..3b54629 100644 --- a/tests/test_oauth2.py +++ b/tests/test_oauth2.py @@ -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' -- 2.16.3