package operation_setting import ( "testing" "github.com/stretchr/testify/require" ) func TestParseHTTPStatusCodeRanges_CommaSeparated(t *testing.T) { ranges, err := ParseHTTPStatusCodeRanges("401,403,500-599") require.NoError(t, err) require.Equal(t, []StatusCodeRange{ {Start: 401, End: 401}, {Start: 403, End: 403}, {Start: 500, End: 599}, }, ranges) } func TestParseHTTPStatusCodeRanges_MergeAndNormalize(t *testing.T) { ranges, err := ParseHTTPStatusCodeRanges("500-505,504,401,403,402") require.NoError(t, err) require.Equal(t, []StatusCodeRange{ {Start: 401, End: 403}, {Start: 500, End: 505}, }, ranges) } func TestParseHTTPStatusCodeRanges_Invalid(t *testing.T) { _, err := ParseHTTPStatusCodeRanges("99,600,foo,500-400,500-") require.Error(t, err) } func TestParseHTTPStatusCodeRanges_NoComma_IsInvalid(t *testing.T) { _, err := ParseHTTPStatusCodeRanges("401 403") require.Error(t, err) } func TestShouldDisableByStatusCode(t *testing.T) { orig := AutomaticDisableStatusCodeRanges t.Cleanup(func() { AutomaticDisableStatusCodeRanges = orig }) AutomaticDisableStatusCodeRanges = []StatusCodeRange{ {Start: 401, End: 403}, {Start: 500, End: 599}, } require.True(t, ShouldDisableByStatusCode(401)) require.True(t, ShouldDisableByStatusCode(403)) require.False(t, ShouldDisableByStatusCode(404)) require.True(t, ShouldDisableByStatusCode(500)) require.False(t, ShouldDisableByStatusCode(200)) }