Add some tests.
This commit is contained in:
parent
010e27a007
commit
09fbaa7b3d
12
README.rst
12
README.rst
|
@ -19,7 +19,7 @@ Install the package using pip.
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
pip install git+https://github.com/juanifioren/django-openid-provider.git#egg=openid_provider
|
pip install git+https://github.com/juanifioren/django-oidc-provider.git#egg=openid_provider
|
||||||
|
|
||||||
|
|
||||||
Add it to your apps.
|
Add it to your apps.
|
||||||
|
@ -216,6 +216,16 @@ You can copy the sample html here and edit them with your own styles.
|
||||||
<h3>{{ error }}</h3>
|
<h3>{{ error }}</h3>
|
||||||
<p>{{ description }}</p>
|
<p>{{ description }}</p>
|
||||||
|
|
||||||
|
*************
|
||||||
|
Running tests
|
||||||
|
*************
|
||||||
|
|
||||||
|
Just run them as normal Django tests.
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
$ python manage.py test openid_provider
|
||||||
|
|
||||||
************
|
************
|
||||||
Contributing
|
Contributing
|
||||||
************
|
************
|
||||||
|
|
0
openid_provider/tests/__init__.py
Normal file
0
openid_provider/tests/__init__.py
Normal file
29
openid_provider/tests/test_code_flow.py
Normal file
29
openid_provider/tests/test_code_flow.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.test import RequestFactory
|
||||||
|
from django.test import TestCase
|
||||||
|
from openid_provider.tests.utils import *
|
||||||
|
from openid_provider.views import *
|
||||||
|
|
||||||
|
|
||||||
|
class CodeFlowTestCase(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.user = create_fake_user()
|
||||||
|
self.client = create_fake_client(response_type='code')
|
||||||
|
|
||||||
|
def test_authorize_invalid_parameters(self):
|
||||||
|
"""
|
||||||
|
If the request fails due to a missing, invalid, or mismatching
|
||||||
|
redirection URI, or if the client identifier is missing or invalid,
|
||||||
|
the authorization server SHOULD inform the resource owner of the error.
|
||||||
|
|
||||||
|
See: https://tools.ietf.org/html/rfc6749#section-4.1.2.1
|
||||||
|
"""
|
||||||
|
url = reverse('openid_provider:authorize')
|
||||||
|
request = self.factory.get(url)
|
||||||
|
|
||||||
|
response = AuthorizeView.as_view()(request)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(bool(response.content), True)
|
36
openid_provider/tests/utils.py
Normal file
36
openid_provider/tests/utils.py
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
from openid_provider.models import *
|
||||||
|
|
||||||
|
|
||||||
|
def create_fake_user():
|
||||||
|
"""
|
||||||
|
Create a test user.
|
||||||
|
|
||||||
|
Return a User object.
|
||||||
|
"""
|
||||||
|
user = User()
|
||||||
|
user.username = 'johndoe'
|
||||||
|
user.email = 'johndoe@example.com'
|
||||||
|
user.set_password('1234')
|
||||||
|
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
return user
|
||||||
|
|
||||||
|
def create_fake_client(response_type):
|
||||||
|
"""
|
||||||
|
Create a test client, response_type argument MUST be:
|
||||||
|
'code', 'id_token' or 'id_token token'.
|
||||||
|
|
||||||
|
Return a Client object.
|
||||||
|
"""
|
||||||
|
client = Client()
|
||||||
|
client.name = 'Some Client'
|
||||||
|
client.client_id = '123'
|
||||||
|
client.client_secret = '456'
|
||||||
|
client.response_type = response_type
|
||||||
|
client.redirect_uris = ['http://example.com/']
|
||||||
|
|
||||||
|
client.save()
|
||||||
|
|
||||||
|
return client
|
|
@ -1,12 +1,12 @@
|
||||||
from django.conf.urls import patterns, include, url
|
from django.conf.urls import patterns, include, url
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
from openid_provider.views import *
|
from openid_provider.views import *
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^authorize/$', AuthorizeView.as_view(), name='authorize'),
|
|
||||||
url(r'^token/$', csrf_exempt(TokenView.as_view()), name='token'),
|
url(r'^authorize/$', AuthorizeView.as_view(), name='authorize'),
|
||||||
url(r'^userinfo/$', csrf_exempt(userinfo), name='userinfo'),
|
url(r'^token/$', csrf_exempt(TokenView.as_view()), name='token'),
|
||||||
|
url(r'^userinfo/$', csrf_exempt(userinfo), name='userinfo'),
|
||||||
|
|
||||||
)
|
)
|
|
@ -1,5 +1,4 @@
|
||||||
from django.contrib.auth.views import redirect_to_login
|
from django.contrib.auth.views import redirect_to_login
|
||||||
from django.core.urlresolvers import reverse
|
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
|
|
6
setup.py
6
setup.py
|
@ -8,14 +8,14 @@ with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
|
||||||
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
|
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='django-openid-provider',
|
name='django-oidc-provider',
|
||||||
version='0.1',
|
version='0.0.0',
|
||||||
packages=['openid_provider'],
|
packages=['openid_provider'],
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
license='MIT License',
|
license='MIT License',
|
||||||
description='A simple OpenID Connect Provider implementation for Djangonauts.',
|
description='A simple OpenID Connect Provider implementation for Djangonauts.',
|
||||||
long_description=README,
|
long_description=README,
|
||||||
url='http://github.com/juanifioren/django-openid-provider',
|
url='http://github.com/juanifioren/django-oidc-provider',
|
||||||
author='Juan Ignacio Fiorentino',
|
author='Juan Ignacio Fiorentino',
|
||||||
author_email='juanifioren@gmail.com',
|
author_email='juanifioren@gmail.com',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
|
|
Loading…
Reference in a new issue