mirror of https://github.com/portainer/portainer
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package docker
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/docker/api/types/network"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestApplyVersionConstraint(t *testing.T) {
|
|
initialNet := network.NetworkingConfig{
|
|
EndpointsConfig: map[string]*network.EndpointSettings{
|
|
"key1": {
|
|
MacAddress: "mac1",
|
|
EndpointID: "endpointID1",
|
|
},
|
|
"key2": {
|
|
MacAddress: "mac2",
|
|
EndpointID: "endpointID2",
|
|
},
|
|
},
|
|
}
|
|
|
|
f := func(currentVer string, constraint string, success, emptyMac bool) {
|
|
t.Helper()
|
|
|
|
transformedNet, err := applyVersionConstraint(currentVer, constraint, initialNet, clearMacAddrs)
|
|
if success {
|
|
require.NoError(t, err)
|
|
} else {
|
|
require.Error(t, err)
|
|
}
|
|
|
|
require.Len(t, transformedNet.EndpointsConfig, len(initialNet.EndpointsConfig))
|
|
|
|
for k := range initialNet.EndpointsConfig {
|
|
if emptyMac {
|
|
require.NotEqual(t, initialNet.EndpointsConfig[k], transformedNet.EndpointsConfig[k])
|
|
require.Empty(t, transformedNet.EndpointsConfig[k].MacAddress)
|
|
|
|
continue
|
|
}
|
|
|
|
require.Equal(t, initialNet.EndpointsConfig[k], transformedNet.EndpointsConfig[k])
|
|
}
|
|
}
|
|
|
|
f("1.45", "< 1.44", true, false) // No transformation
|
|
f("1.43", "< 1.44", true, true) // Transformation
|
|
f("a.b.", "< 1.44", true, false) // Invalid current version
|
|
f("1.45", "z 1.44", false, false) // Invalid version constraint
|
|
}
|