|
|
|
package container
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/containrrr/watchtower/container/mocks"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestWatchtowerContainersFilter(t *testing.T) {
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
|
|
|
|
container.On("IsWatchtower").Return(true)
|
|
|
|
|
|
|
|
assert.True(t, WatchtowerContainersFilter(container))
|
|
|
|
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNoFilter(t *testing.T) {
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
|
|
|
|
assert.True(t, noFilter(container))
|
|
|
|
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFilterByNames(t *testing.T) {
|
|
|
|
var names []string
|
|
|
|
|
|
|
|
filter := filterByNames(names, nil)
|
|
|
|
assert.Nil(t, filter)
|
|
|
|
|
|
|
|
names = append(names, "test")
|
|
|
|
|
|
|
|
filter = filterByNames(names, noFilter)
|
|
|
|
assert.NotNil(t, filter)
|
|
|
|
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("test")
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("NoTest")
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFilterByEnableLabel(t *testing.T) {
|
|
|
|
filter := filterByEnableLabel(noFilter)
|
|
|
|
assert.NotNil(t, filter)
|
|
|
|
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(true, true)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, true)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, false)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFilterByDisabledLabel(t *testing.T) {
|
|
|
|
filter := filterByDisabledLabel(noFilter)
|
|
|
|
assert.NotNil(t, filter)
|
|
|
|
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(true, true)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, true)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, false)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBuildFilter(t *testing.T) {
|
|
|
|
var names []string
|
|
|
|
names = append(names, "test")
|
|
|
|
|
|
|
|
filter := BuildFilter(names, false)
|
|
|
|
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("Invalid")
|
|
|
|
container.On("Enabled").Return(false, false)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("test")
|
|
|
|
container.On("Enabled").Return(false, false)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("Invalid")
|
|
|
|
container.On("Enabled").Return(true, true)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("test")
|
|
|
|
container.On("Enabled").Return(true, true)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, true)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBuildFilterEnableLabel(t *testing.T) {
|
|
|
|
var names []string
|
|
|
|
names = append(names, "test")
|
|
|
|
|
|
|
|
filter := BuildFilter(names, true)
|
|
|
|
|
|
|
|
container := new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, false)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("Invalid")
|
|
|
|
container.On("Enabled").Twice().Return(true, true)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Name").Return("test")
|
|
|
|
container.On("Enabled").Twice().Return(true, true)
|
|
|
|
assert.True(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
|
|
|
|
container = new(mocks.FilterableContainer)
|
|
|
|
container.On("Enabled").Return(false, true)
|
|
|
|
assert.False(t, filter(container))
|
|
|
|
container.AssertExpectations(t)
|
|
|
|
}
|