Files
moby/integration/system/version_test.go
Sebastiaan van Stijn dae3650dcc client: rename/deprecate WithVersion, WithVersionFromEnv
Add WithAPIVersion and WithAPIVersionFromEnv to be more clear on
the intent, and to align with other related options and fields.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-11-12 22:39:05 +01:00

62 lines
2.0 KiB
Go

package system
import (
"fmt"
"strconv"
"strings"
"testing"
"github.com/moby/moby/api/types/system"
"github.com/moby/moby/client"
"github.com/moby/moby/v2/internal/testutil/request"
"gotest.tools/v3/assert"
is "gotest.tools/v3/assert/cmp"
)
func TestVersion(t *testing.T) {
ctx := setupTest(t)
apiClient := testEnv.APIClient()
version, err := apiClient.ServerVersion(ctx, client.ServerVersionOptions{})
assert.NilError(t, err)
assert.Check(t, len(version.Components) > 0, "expected at least one component in version.Components")
var engine system.ComponentVersion
var found bool
for _, comp := range version.Components {
if comp.Name == "Engine" {
engine = comp
found = true
break
}
}
assert.Check(t, found, "Engine component not found in version.Components")
assert.Equal(t, engine.Name, "Engine")
assert.Check(t, engine.Version != "")
assert.Equal(t, engine.Details["ApiVersion"], version.APIVersion)
assert.Equal(t, engine.Details["MinAPIVersion"], version.MinAPIVersion)
assert.Check(t, is.Equal(testEnv.DaemonInfo.OSType, engine.Details["Os"]))
experimentalStr := engine.Details["Experimental"]
experimentalBool, err := strconv.ParseBool(experimentalStr)
assert.NilError(t, err, "Experimental field in Engine details is not a valid boolean string")
assert.Equal(t, testEnv.DaemonInfo.ExperimentalBuild, experimentalBool)
}
func TestAPIClientVersionOldNotSupported(t *testing.T) {
ctx := setupTest(t)
minApiVersion := testEnv.DaemonMinAPIVersion
major, minor, _ := strings.Cut(minApiVersion, ".")
vMinInt, err := strconv.Atoi(minor)
assert.NilError(t, err)
vMinInt--
version := fmt.Sprintf("%s.%d", major, vMinInt)
apiClient := request.NewAPIClient(t, client.WithAPIVersion(version))
expectedErrorMessage := fmt.Sprintf("Error response from daemon: client version %s is too old. Minimum supported API version is %s, please upgrade your client to a newer version", version, minApiVersion)
_, err = apiClient.ServerVersion(ctx, client.ServerVersionOptions{})
assert.Error(t, err, expectedErrorMessage)
}