Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

Commit

Permalink
Bugfix + tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jackieleng committed Jul 5, 2016
1 parent 1065f50 commit b010f24
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lizard_auth_server/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class JWTField(forms.CharField):
the JWT. Therefore the 'secret_key' field must be set manually. Typically
you can do this in the __init__ method of your Form.
"""
def __init__(self, allowed_keys=None, secret_key=None, *args, **kwargs):
def __init__(self, allowed_keys=(), secret_key='', *args, **kwargs):
super(JWTField, self).__init__(*args, **kwargs)
self.allowed_keys = allowed_keys
self.secret_key = secret_key
Expand Down
59 changes: 59 additions & 0 deletions lizard_auth_server/tests/test_forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
from django.forms import ValidationError
from django.test import TestCase
import jwt

from lizard_auth_server.forms import (
JWTField,
JWTDecryptForm,
)

ALGORITHM = 'HS256'


class TestFormField(TestCase):

def setUp(self):
self.sso_key = "some sso key"
self.secret_key = "a secret"
self.payload = {
"foo": "bar"
}
self.message = jwt.encode(self.payload, self.secret_key,
algorithm=ALGORITHM)

def test_smoke(self):
jwtfield = JWTField()
self.assertTrue(jwtfield is not None)

def test_jwt_field_no_secret_key(self):
"""Test that the JWTField gives an exception when the secret key
isn't set"""
jwtfield = JWTField()
with self.assertRaises(ValidationError):
jwtfield.clean(self.message)

def test_jwt_field_validates(self):
"""JWTField validates with the correct secret key."""
jwtfield = JWTField()
jwtfield.secret_key = self.secret_key
jwtfield.clean(self.message)

def test_jwt_field_wrong_key(self):
"""JWTField doesn't validate with the wrong secret key."""
jwtfield = JWTField()
jwtfield.secret_key = "not the right key"
with self.assertRaises(ValidationError):
jwtfield.clean(self.message)

def test_jwt_field_unallowed_keys(self):
"""JWTField doesn't validate with unknown allowed_keys."""
jwtfield = JWTField(allowed_keys=('unknown_key',))
jwtfield.secret_key = self.secret_key
with self.assertRaises(ValidationError):
jwtfield.clean(self.message)

def test_jwt_field_allowed_keys(self):
"""JWTField validates with correct allowed_keys."""
jwtfield = JWTField(allowed_keys=('foo',))
jwtfield.secret_key = self.secret_key
jwtfield.clean(self.message)

0 comments on commit b010f24

Please sign in to comment.