@@ -45,6 +45,29 @@ def setup
4545 assert_not api_key . allows_scope? ( "admin" )
4646 end
4747
48+ test "allows_scope? with blank scopes in simple mode allows all" do
49+ # In simple mode (no key_types configured), blank scopes = unrestricted
50+ api_key = ApiKeys ::ApiKey . create! ( owner : @user , name : "No Scopes" , scopes : [ ] )
51+ assert api_key . allows_scope? ( "read" )
52+ assert api_key . allows_scope? ( "admin" )
53+ assert api_key . allows_scope? ( "anything" )
54+ end
55+
56+ test "allows_scope? with blank scopes in key_types mode denies all" do
57+ # In key_types mode, blank scopes = no permissions
58+ original_key_types = ApiKeys . configuration . key_types
59+ ApiKeys . configuration . key_types = {
60+ publishable : { prefix : "pk" , permissions : %w[ read ] } ,
61+ secret : { prefix : "sk" , permissions : :all }
62+ }
63+
64+ api_key = ApiKeys ::ApiKey . create! ( owner : @user , name : "Empty Scopes" , scopes : [ ] )
65+ assert_not api_key . allows_scope? ( "read" )
66+ assert_not api_key . allows_scope? ( "admin" )
67+ ensure
68+ ApiKeys . configuration . key_types = original_key_types
69+ end
70+
4871 test "creates with sha256 digest by default" do
4972 api_key = ApiKeys ::ApiKey . create! ( owner : @user , name : "SHA256 Default" )
5073 assert_equal "sha256" , api_key . digest_algorithm
0 commit comments