Skip to content

Commit e476ca4

Browse files
committed
workflows/host: add unit tests for HandlesRequirements
1 parent 0d2b4e4 commit e476ca4

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

pkg/workflows/host/requirements_helper_gen_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)