package monitor import ( "io/ioutil" "local/sandbox/arlo-cleaner/arlo" "local/sandbox/arlo-cleaner/config" "os" "path" "strings" "testing" "time" ) func mockDrive(t *testing.T) (*Drive, func()) { arlo, def := mockArlo(t) d := &Drive{ rclone: arlo.rclone, } return d, def } func TestDriveFilters(t *testing.T) { d := &Drive{} videos := []string{expVideo()} videos = d.filters(videos) if len(videos) != 1 { t.Error(videos) } } func TestDriveExpired(t *testing.T) { d := &Drive{} if exp := d.expired(expVideo()); !exp { t.Error(exp) } if exp := d.expired(nonExpVideo()); exp { t.Error(exp) } } func TestDriveDeletes(t *testing.T) { d, def := mockDrive(t) defer def() if err := d.deletes(nil); err != nil { t.Error(err) } if err := d.deletes([]string{}); err != nil { t.Error(err) } if err := d.deletes([]string{expVideo()}); err != nil { t.Error(err) } } func TestDriveDelete(t *testing.T) { d, def := mockDrive(t) defer def() video := expVideo() abspath := path.Join(strings.TrimPrefix(config.RCloneName, "local:"), video) if err := ioutil.WriteFile(abspath, []byte("hi"), os.ModePerm); err != nil { t.Fatal(err) } if err := d.delete(expVideo()); err != nil { t.Error(err) } if _, err := os.Stat(abspath); err == nil { t.Fatal(err) } } func expVideo() string { config.ArchiveLength = time.Duration(0) return videoName() } func nonExpVideo() string { config.ArchiveLength = time.Hour return videoName() } func videoName() string { return time.Now().UTC().Format(arlo.TSFormat) }