| 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) |
| } |