@@ -46,3 +46,38 @@ func Test_CheckRequirements(t *testing.T) {
4646 assert .True (t , CheckRequirements (context .Background (), handler , req ))
4747 })
4848}
49+
50+ func Test_HandlesRequirements (t * testing.T ) {
51+ t .Parallel ()
52+ t .Run ("nil req always passes" , func (t * testing.T ) {
53+ assert .True (t , HandlesRequirements (RequirementsHandler {}, nil ))
54+ })
55+
56+ t .Run ("no fields always passes" , func (t * testing.T ) {
57+ assert .True (t , HandlesRequirements (RequirementsHandler {}, & sdk.Requirements {}))
58+ })
59+
60+ t .Run ("unknown proto fields" , func (t * testing.T ) {
61+ // Encode a field number (99) unknown to Requirements so proto.Unmarshal
62+ // preserves it as unknown bytes.
63+ b := protowire .AppendTag (nil , 99 , protowire .VarintType )
64+ b = protowire .AppendVarint (b , 1 )
65+ req := & sdk.Requirements {}
66+ require .NoError (t , proto .Unmarshal (b , req ))
67+
68+ assert .False (t , HandlesRequirements (RequirementsHandler {}, req ))
69+ })
70+
71+ t .Run ("required field with nil handler returns false" , func (t * testing.T ) {
72+ req := & sdk.Requirements {Tee : & sdk.Tee {}}
73+ assert .False (t , HandlesRequirements (RequirementsHandler {}, req ))
74+ })
75+
76+ t .Run ("handler present passes regardless of callback result" , func (t * testing.T ) {
77+ req := & sdk.Requirements {Tee : & sdk.Tee {}}
78+ // HandlesRequirements only checks coverage, not whether the callback passes,
79+ // so a handler that would fail CheckRequirements still handles the request.
80+ handler := RequirementsHandler {Tee : func (context.Context , * sdk.Tee ) bool { return false }}
81+ assert .True (t , HandlesRequirements (handler , req ))
82+ })
83+ }
0 commit comments