def test_clean_signature_empty(self): form = Fido2AuthenticationForm({ 'client_data': 'e30=', 'credential_id': 'AA==', 'authenticator_data': AUTHENTICATOR_DATA, 'signature': '' }) self.assertFalse(form.is_valid()) self.assertEqual(form.errors, {'signature': ["Operation wasn't completed."]})
def test_clean_signature_invalid(self): form = Fido2AuthenticationForm({ 'client_data': 'e30=', 'credential_id': 'AA==', 'authenticator_data': AUTHENTICATOR_DATA, 'signature': 'A' }) self.assertFalse(form.is_valid()) self.assertEqual(form.errors, {'signature': ['FIDO 2 response is malformed.']})
def test_clean_client_data(self): form = Fido2AuthenticationForm({ 'client_data': 'eyJjaGFsbGVuZ2UiOiAiR2F6cGFjaG8hIn0=', 'credential_id': 'AA==', 'authenticator_data': AUTHENTICATOR_DATA, 'signature': 'AA==' }) self.assertTrue(form.is_valid()) cleaned_data = { 'credential_id': b'\0', 'client_data': ClientData(b'{"challenge": "Gazpacho!"}'), 'authenticator_data': AuthenticatorData(base64.b64decode(AUTHENTICATOR_DATA)), 'signature': b'\0' } self.assertEqual(form.cleaned_data, cleaned_data)
def test_clean_signature(self): form = Fido2AuthenticationForm({ 'client_data': 'e30=', 'credential_id': 'AA==', 'authenticator_data': AUTHENTICATOR_DATA, 'signature': 'GAZPACHO' }) self.assertTrue(form.is_valid()) cleaned_data = { 'credential_id': b'\0', 'client_data': ClientData(b'{}'), 'authenticator_data': AuthenticatorData(base64.b64decode(AUTHENTICATOR_DATA)), 'signature': base64.b64decode('GAZPACHO') } self.assertEqual(form.cleaned_data, cleaned_data)