You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
#!/usr/bin/env vpython3
|
|
# coding=utf-8
|
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# [VPYTHON:BEGIN]
|
|
# python_version: "3.11"
|
|
# wheel: <
|
|
# name: "infra/python/wheels/cffi/${vpython_platform}"
|
|
# version: "version:1.15.1.chromium.2"
|
|
# >
|
|
# wheel: <
|
|
# name: "infra/python/wheels/cryptography/${vpython_platform}"
|
|
# version: "version:43.0.0"
|
|
# >
|
|
# wheel: <
|
|
# name: "infra/python/wheels/pycparser-py2_py3"
|
|
# version: "version:2.21"
|
|
# >
|
|
# wheel: <
|
|
# name: "infra/python/wheels/fido2-py3"
|
|
# version: "version:2.0.0"
|
|
# >
|
|
# [VPYTHON:END]
|
|
"""Unit tests for luci_auth_fido2_plugin.py."""
|
|
|
|
import logging
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from fido2.webauthn import PublicKeyCredentialDescriptor
|
|
from fido2.webauthn import PublicKeyCredentialRequestOptions
|
|
from fido2.webauthn import PublicKeyCredentialType
|
|
from fido2.webauthn import UserVerificationRequirement
|
|
|
|
import luci_auth_fido2_plugin as plugin
|
|
|
|
|
|
class TestFido2Plugin(unittest.TestCase):
|
|
|
|
def test_parse_plugin_request(self):
|
|
req = b'{"type":"get","origin":"https://accounts.google.com","requestData":{"rpId":"google.com","challenge":"alice-==","timeout":30000,"allowCredentials":[{"type":"public-key","id":"key="}],"userVerification":"preferred","extensions":{"appid":"google.com"}}}'
|
|
got = plugin.parse_plugin_request(req)
|
|
want = plugin.PluginRequest(
|
|
origin='https://accounts.google.com',
|
|
public_key_credential_request=PublicKeyCredentialRequestOptions(
|
|
challenge=b'jX\x9c{',
|
|
timeout=30_000,
|
|
rp_id='google.com',
|
|
allow_credentials=[
|
|
PublicKeyCredentialDescriptor(
|
|
type=PublicKeyCredentialType.PUBLIC_KEY,
|
|
id=b'\x91\xec',
|
|
)
|
|
],
|
|
user_verification=UserVerificationRequirement.DISCOURAGED,
|
|
),
|
|
)
|
|
self.assertEqual(got, want)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
logging.basicConfig(
|
|
level=logging.DEBUG if '-v' in sys.argv else logging.ERROR)
|
|
unittest.main()
|