@@ -49,7 +49,7 @@ def test_generate_registration_options
4949 assert_equal 120_000 , options_for_registration . timeout
5050 assert_equal relying_party , options_for_registration . relying_party
5151
52- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
52+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
5353
5454 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
5555
@@ -83,7 +83,7 @@ def test_generate_registration_options_with_overrides
8383 assert_equal extensions , options_for_registration . extensions
8484 assert_equal expected_exclude_credentials , options_for_registration . exclude_credentials
8585
86- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
86+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
8787
8888 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
8989
@@ -110,7 +110,7 @@ def test_generate_registration_options_with_customized_relying_party_id
110110 assert_equal 120_000 , options_for_registration . timeout
111111 assert_equal relying_party , options_for_registration . relying_party
112112
113- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
113+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
114114
115115 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
116116
@@ -297,6 +297,10 @@ def test_registration_challenge
297297
298298 assert_equal challenge , @test_class . registration_challenge
299299 end
300+
301+ def test_authenticator_selection_options
302+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , @test_class . authenticator_selection_options
303+ end
300304end
301305
302306class Warden ::TestRegistrationHelpersCustomChallengeKey < Minitest ::Test
@@ -353,7 +357,7 @@ def test_generate_registration_options
353357 assert_equal 120_000 , options_for_registration . timeout
354358 assert_equal relying_party , options_for_registration . relying_party
355359
356- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
360+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
357361
358362 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
359363
@@ -387,7 +391,7 @@ def test_generate_registration_options_with_overrides
387391 assert_equal extensions , options_for_registration . extensions
388392 assert_equal expected_exclude_credentials , options_for_registration . exclude_credentials
389393
390- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
394+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
391395
392396 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
393397
@@ -414,7 +418,7 @@ def test_generate_registration_options_with_customized_relying_party_id
414418 assert_equal 120_000 , options_for_registration . timeout
415419 assert_equal relying_party , options_for_registration . relying_party
416420
417- assert_equal ( { user_verification : "required" } ) , options_for_registration . authenticator_selection
421+ assert_equal ( { resident_key : "required" , user_verification : "required" } ) , options_for_registration . authenticator_selection
418422
419423 assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
420424
@@ -600,4 +604,55 @@ def test_registration_challenge
600604
601605 assert_equal challenge , @test_class . registration_challenge
602606 end
603- end
607+ end
608+
609+ class Warden ::TestRegistrationHelpersCustomAuthenticatorSelection < Minitest ::Test
610+ include WebAuthnTestHelpers
611+
612+ class TestClass
613+ include Warden ::WebAuthn ::RegistrationHelpers
614+
615+ attr_accessor :session , :params
616+
617+ def initialize
618+ self . session = { }
619+ self . params = { }
620+ end
621+
622+ def authenticator_selection_options
623+ { resident_key : "preferred" , user_verification : "preferred" }
624+ end
625+ end
626+
627+ def setup
628+ @test_class = TestClass . new
629+ end
630+
631+ def test_authenticator_selection_options
632+ assert_equal ( { resident_key : "preferred" , user_verification : "preferred" } ) , @test_class . authenticator_selection_options
633+ end
634+
635+ def test_generate_registration_options
636+ relying_party = example_relying_party
637+ user_details = { name : "Test User" , id : WebAuthn . generate_user_id }
638+ options_for_registration = @test_class . generate_registration_options ( relying_party : relying_party , user_details : user_details )
639+
640+ assert_kind_of WebAuthn ::PublicKeyCredential ::CreationOptions , options_for_registration
641+ assert_empty options_for_registration . exclude
642+ assert_empty options_for_registration . exclude_credentials
643+ assert_equal ( { } ) , options_for_registration . extensions
644+ assert_nil options_for_registration . rp . id
645+
646+ assert_equal 120_000 , options_for_registration . timeout
647+ assert_equal relying_party , options_for_registration . relying_party
648+
649+ assert_equal ( { resident_key : "preferred" , user_verification : "preferred" } ) , options_for_registration . authenticator_selection
650+
651+ assert_kind_of WebAuthn ::PublicKeyCredential ::UserEntity , options_for_registration . user
652+
653+ assert_equal "Test User" , options_for_registration . user . name
654+ assert_equal "Test User" , options_for_registration . user . display_name
655+ refute_nil options_for_registration . user . id
656+ refute_nil options_for_registration . challenge
657+ end
658+ end
0 commit comments