88 lines
1.5 KiB
Go
Executable File
88 lines
1.5 KiB
Go
Executable File
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)
|
|
}
|