package operation_setting import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestGetMonitorSetting_ChannelTestEnabledEnvOverridesEnabledConfig(t *testing.T) { orig := monitorSetting t.Cleanup(func() { monitorSetting = orig }) t.Setenv("CHANNEL_TEST_ENABLED", "false") t.Setenv("CHANNEL_TEST_FREQUENCY", "5") monitorSetting = MonitorSetting{ AutoTestChannelEnabled: true, AutoTestChannelMinutes: 20, } setting := GetMonitorSetting() require.NotNil(t, setting) assert.False(t, setting.AutoTestChannelEnabled) assert.Equal(t, float64(5), setting.AutoTestChannelMinutes) } func TestGetMonitorSetting_ChannelTestEnabledEnvCanEnableDisabledConfig(t *testing.T) { orig := monitorSetting t.Cleanup(func() { monitorSetting = orig }) t.Setenv("CHANNEL_TEST_ENABLED", "true") monitorSetting = MonitorSetting{ AutoTestChannelEnabled: false, AutoTestChannelMinutes: 12, } setting := GetMonitorSetting() require.NotNil(t, setting) assert.True(t, setting.AutoTestChannelEnabled) assert.Equal(t, float64(12), setting.AutoTestChannelMinutes) } func TestGetMonitorSettingPreservesAutoBanOnlyMode(t *testing.T) { orig := monitorSetting t.Cleanup(func() { monitorSetting = orig }) t.Setenv("CHANNEL_TEST_ENABLED", "") t.Setenv("CHANNEL_TEST_FREQUENCY", "") monitorSetting = MonitorSetting{ChannelTestMode: ChannelTestModeAutoBanOnly} setting := GetMonitorSetting() require.NotNil(t, setting) assert.Equal(t, ChannelTestModeAutoBanOnly, setting.ChannelTestMode) } func TestGetMonitorSettingNormalizesChannelTestConcurrency(t *testing.T) { orig := monitorSetting t.Cleanup(func() { monitorSetting = orig }) tests := []struct { name string concurrency int want int }{ {name: "missing uses safe default", concurrency: 0, want: DefaultChannelTestConcurrency}, {name: "configured value is preserved", concurrency: 8, want: 8}, {name: "oversized value is capped", concurrency: MaxChannelTestConcurrency + 1, want: MaxChannelTestConcurrency}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { monitorSetting = MonitorSetting{ChannelTestConcurrency: test.concurrency} setting := GetMonitorSetting() require.NotNil(t, setting) assert.Equal(t, test.want, setting.ChannelTestConcurrency) }) } } func TestValidateChannelTestConcurrency(t *testing.T) { require.NoError(t, ValidateChannelTestConcurrency("1")) require.NoError(t, ValidateChannelTestConcurrency("32")) assert.Error(t, ValidateChannelTestConcurrency("0")) assert.Error(t, ValidateChannelTestConcurrency("33")) assert.Error(t, ValidateChannelTestConcurrency("1.5")) }