Skip to content

Commit 74990cf

Browse files
authored
fix: improve api key delete form validation and tests (ietf-tools#5236)
1 parent 9a1de57 commit 74990cf

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

ietf/ietfauth/tests.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from ietf.mailinglists.models import Subscribed
4040
from ietf.meeting.factories import MeetingFactory
4141
from ietf.nomcom.factories import NomComFactory
42-
from ietf.person.factories import PersonFactory, EmailFactory, UserFactory
42+
from ietf.person.factories import PersonFactory, EmailFactory, UserFactory, PersonalApiKeyFactory
4343
from ietf.person.models import Person, Email, PersonalApiKey
4444
from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
4545
from ietf.review.models import ReviewWish, UnavailablePeriod
@@ -723,8 +723,20 @@ def test_apikey_management(self):
723723
url = urlreverse('ietf.ietfauth.views.apikey_disable')
724724
r = self.client.get(url)
725725

726+
self.assertEqual(r.status_code, 200)
726727
self.assertContains(r, 'Disable a personal API key')
727728
self.assertContains(r, 'Key')
729+
730+
# Try to delete something that doesn't exist
731+
r = self.client.post(url, {'hash': key.hash()+'bad'})
732+
self.assertEqual(r.status_code, 200)
733+
self.assertContains(r,"Key validation failed; key not disabled")
734+
735+
# Try to delete someone else's key
736+
otherkey = PersonalApiKeyFactory()
737+
r = self.client.post(url, {'hash': otherkey.hash()})
738+
self.assertEqual(r.status_code, 200)
739+
self.assertContains(r,"Key validation failed; key not disabled")
728740

729741
# Delete a key
730742
r = self.client.post(url, {'hash': key.hash()})

ietf/ietfauth/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,7 @@ def apikey_disable(request):
781781
#
782782
class KeyDeleteForm(forms.Form):
783783
hash = forms.ChoiceField(label='Key', choices=choices)
784-
def clean_key(self):
784+
def clean_hash(self):
785785
hash = force_bytes(self.cleaned_data['hash'])
786786
key = PersonalApiKey.validate_key(hash)
787787
if key and key.person == request.user.person:
@@ -792,7 +792,7 @@ def clean_key(self):
792792
if request.method == 'POST':
793793
form = KeyDeleteForm(request.POST)
794794
if form.is_valid():
795-
hash = force_bytes(form.data['hash'])
795+
hash = force_bytes(form.cleaned_data['hash'])
796796
key = PersonalApiKey.validate_key(hash)
797797
key.valid = False
798798
key.save()

0 commit comments

Comments
 (0)