package actions import ( "regexp" "testing" "github.com/CenturyLinkLabs/watchtower/container" "github.com/samalba/dockerclient" "github.com/stretchr/testify/assert" ) func TestContainerFilter_StraightMatch(t *testing.T) { c := newTestContainer("foo", []string{}) f := containerFilter([]string{"foo"}) assert.True(t, f(c)) } func TestContainerFilter_SlashMatch(t *testing.T) { c := newTestContainer("/foo", []string{}) f := containerFilter([]string{"foo"}) assert.True(t, f(c)) } func TestContainerFilter_NoMatch(t *testing.T) { c := newTestContainer("/bar", []string{}) f := containerFilter([]string{"foo"}) assert.False(t, f(c)) } func TestContainerFilter_NoFilters(t *testing.T) { c := newTestContainer("/bar", []string{}) f := containerFilter([]string{}) assert.True(t, f(c)) } func TestCheckDependencies(t *testing.T) { cs := []container.Container{ newTestContainer("1", []string{}), newTestContainer("2", []string{"1:"}), newTestContainer("3", []string{"2:"}), newTestContainer("4", []string{"3:"}), newTestContainer("5", []string{"4:"}), newTestContainer("6", []string{"5:"}), } cs[3].Stale = true checkDependencies(cs) assert.False(t, cs[0].Stale) assert.False(t, cs[1].Stale) assert.False(t, cs[2].Stale) assert.True(t, cs[3].Stale) assert.True(t, cs[4].Stale) assert.True(t, cs[5].Stale) } func TestRandName(t *testing.T) { validPattern := regexp.MustCompile(`^[a-zA-Z0-9][a-zA-Z0-9_.-]+$`) name := randName() assert.True(t, validPattern.MatchString(name)) } func newTestContainer(name string, links []string) container.Container { return *container.NewContainer( &dockerclient.ContainerInfo{ Name: name, HostConfig: &dockerclient.HostConfig{ Links: links, }, }, nil, ) }