0
0
Fork 0
mirror of https://github.com/crazy-max/diun.git synced 2025-04-10 05:47:34 +00:00
crazy-max_diun/internal/provider/file/file_test.go
2023-09-16 11:47:52 +02:00

181 lines
4 KiB
Go

package file
import (
"testing"
"github.com/crazy-max/diun/v4/internal/model"
"github.com/crazy-max/diun/v4/pkg/registry"
"github.com/crazy-max/diun/v4/pkg/utl"
"github.com/stretchr/testify/assert"
)
var (
defaultImageDefaults = model.Image{
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
}
bintrayFile = []model.Job{
{
Provider: "file",
Image: model.Image{
Name: "jfrog-docker-reg2.bintray.io/jfrog/artifactory-oss:4.0.0",
RegOpt: "bintrayoptions",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
{
Provider: "file",
Image: model.Image{
Name: "docker.bintray.io/jfrog/xray-server:2.8.6",
WatchRepo: utl.NewTrue(),
NotifyOn: []model.NotifyOn{
model.NotifyOnNew,
},
SortTags: registry.SortTagLexicographical,
MaxTags: 50,
},
},
}
dockerhubFile = []model.Job{
{
Provider: "file",
Image: model.Image{
Name: "docker.io/crazymax/nextcloud:latest",
RegOpt: "myregistry",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
{
Provider: "file",
Image: model.Image{
Name: "crazymax/swarm-cronjob",
WatchRepo: utl.NewTrue(),
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagSemver,
IncludeTags: []string{
`^1\.2\..*`,
},
},
},
{
Provider: "file",
Image: model.Image{
Name: "docker.io/portainer/portainer",
WatchRepo: utl.NewTrue(),
NotifyOn: model.NotifyOnDefaults,
MaxTags: 10,
SortTags: registry.SortTagReverse,
IncludeTags: []string{
`^(0|[1-9]\d*)\..*`,
},
},
},
{
Provider: "file",
Image: model.Image{
Name: "traefik",
WatchRepo: utl.NewTrue(),
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagDefault,
},
},
{
Provider: "file",
Image: model.Image{
Name: "alpine",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
Platform: model.ImagePlatform{
OS: "linux",
Arch: "arm64",
Variant: "v8",
},
},
},
{
Provider: "file",
Image: model.Image{
Name: "docker.io/graylog/graylog:3.2.0",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
{
Provider: "file",
Image: model.Image{
Name: "jacobalberty/unifi:5.9",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
{
Provider: "file",
Image: model.Image{
Name: "crazymax/ddns-route53",
WatchRepo: utl.NewTrue(),
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
IncludeTags: []string{
`^1\..*`,
},
},
},
}
quayFile = []model.Job{
{
Provider: "file",
Image: model.Image{
Name: "quay.io/coreos/hyperkube",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
{
Provider: "file",
Image: model.Image{
Name: "quay.io/coreos/hyperkube:v1.1.7-coreos.1",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
},
},
}
lscrFile = []model.Job{
{
Provider: "file",
Image: model.Image{
Name: "lscr.io/linuxserver/heimdall",
NotifyOn: model.NotifyOnDefaults,
SortTags: registry.SortTagReverse,
HubLink: "https://fleet.linuxserver.io/image?name=linuxserver/heimdall",
},
},
}
)
func TestListJobFilename(t *testing.T) {
fc := New(&model.PrdFile{
Filename: "./fixtures/dockerhub.yml",
}, &defaultImageDefaults)
assert.Equal(t, dockerhubFile, fc.ListJob())
}
func TestListJobDirectory(t *testing.T) {
fc := New(&model.PrdFile{
Directory: "./fixtures",
}, &defaultImageDefaults)
assert.Equal(t, append(append(bintrayFile, dockerhubFile...), append(lscrFile, quayFile...)...), fc.ListJob())
}
func TestDefaultImageOptions(t *testing.T) {
fc := New(&model.PrdFile{
Filename: "./fixtures/dockerhub.yml",
}, &model.Image{WatchRepo: utl.NewTrue()})
for _, job := range fc.ListJob() {
assert.True(t, *job.Image.WatchRepo)
}
}