package controller import "testing" func TestScheduleForK8up(t *testing.T) { cases := []struct { in string want string wantErr bool }{ {"@hourly", "@hourly", false}, {"@daily", "@daily", false}, {"@weekly", "@weekly", false}, {"@monthly", "@monthly", false}, {" @daily ", "@daily", false}, {"0 2 * * *", "0 2 * * *", false}, {"*/15 * * * *", "*/15 * * * *", false}, {"0 0 * * 1-5", "0 0 * * 1-5", false}, {"@bogus", "", true}, {"0 2 * *", "", true}, // 4 fields {"0 0 0 * * *", "", true}, // 6 fields not valid for k8up {"0 2 * * foo", "", true}, // invalid chars {"", "", true}, } for _, c := range cases { got, err := ScheduleForK8up(c.in) if c.wantErr { if err == nil { t.Errorf("ScheduleForK8up(%q) expected error, got %q", c.in, got) } continue } if err != nil { t.Errorf("ScheduleForK8up(%q) unexpected error: %v", c.in, err) continue } if got != c.want { t.Errorf("ScheduleForK8up(%q) = %q, want %q", c.in, got, c.want) } } } func TestScheduleForCNPG(t *testing.T) { cases := []struct { in string want string wantErr bool }{ {"@hourly", "0 0 * * * *", false}, {"@daily", "0 0 0 * * *", false}, {"@midnight", "0 0 0 * * *", false}, {"@weekly", "0 0 0 * * 0", false}, {"@monthly", "0 0 0 1 * *", false}, {"@yearly", "0 0 0 1 1 *", false}, {"@annually", "0 0 0 1 1 *", false}, {"0 2 * * *", "0 0 2 * * *", false}, // 5-field gains seconds {"*/15 * * * *", "0 */15 * * * *", false}, {"30 0 3 * * *", "30 0 3 * * *", false}, // already 6-field {" @daily ", "0 0 0 * * *", false}, {"@bogus", "", true}, {"0 2 * *", "", true}, // 4 fields {"1 2 3 4 5 6 7", "", true}, // 7 fields {"0 2 * * bad", "", true}, // invalid chars {"", "", true}, } for _, c := range cases { got, err := ScheduleForCNPG(c.in) if c.wantErr { if err == nil { t.Errorf("ScheduleForCNPG(%q) expected error, got %q", c.in, got) } continue } if err != nil { t.Errorf("ScheduleForCNPG(%q) unexpected error: %v", c.in, err) continue } if got != c.want { t.Errorf("ScheduleForCNPG(%q) = %q, want %q", c.in, got, c.want) } } }