From ce9027b40153d616a707b98148fcb95ef5b0e807 Mon Sep 17 00:00:00 2001 From: Jeremy Gonzalez Date: Wed, 13 Apr 2022 10:44:04 -0600 Subject: [PATCH] allow no cron entries in cron plugin when enabled (#21) --- cron/cron.go | 3 ++- cron/cron_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/cron/cron.go b/cron/cron.go index 5d649b0..362941c 100644 --- a/cron/cron.go +++ b/cron/cron.go @@ -138,7 +138,8 @@ func (c *CronSubsystem) getOptions(s *server.Server) (*Options, error) { cronJobsValue, ok := s.Options.GlobalConfig["cron"] if !ok { - return &options, fmt.Errorf("getOptions: no cron jobs provided") + options.CronJobs = cronJobs + return &options, nil } if cronJobsInterface, ok := cronJobsValue.([]map[string]interface{}); ok { diff --git a/cron/cron_test.go b/cron/cron_test.go index 27b0504..5a27061 100644 --- a/cron/cron_test.go +++ b/cron/cron_test.go @@ -267,6 +267,32 @@ func TestCron(t *testing.T) { assert.Equal(t, "test_job_2", jobTwo.Type) }) }) + + t.Run("allows no cron jobs", func(t *testing.T) { + system := new(CronSubsystem) + configDir := createConfigDir(t) + runSystem(configDir, func(s *server.Server) { + s.Options.GlobalConfig["cron_plugin"] = map[string]interface{}{ + "enabled": true, + } + err := system.Start(s) + assert.Nil(t, err) + assert.Len(t, system.Cron.Entries(), 0) + assert.True(t, system.Options.Enabled) + assert.Len(t, system.Options.CronJobs, 0) + + cronJob := map[string]interface{}{ + "schedule": "* * * * *", + "job": map[string]interface{}{ + "type": "test_job", + }, + } + cronConfig := []map[string]interface{}{cronJob} + s.Options.GlobalConfig["cron"] = cronConfig + system.Reload(s) + assert.Len(t, system.Cron.Entries(), 1) + }) + }) } func runSystem(configDir string, runner func(s *server.Server)) {