| package graphdriver // import "github.com/docker/docker/daemon/graphdriver" |
| |
| import ( |
| "encoding/json" |
| "testing" |
| |
| "github.com/docker/docker/pkg/idtools" |
| "gotest.tools/v3/assert" |
| ) |
| |
| func TestGraphDriverInitRequestIsCompatible(t *testing.T) { |
| // Graph driver plugins may unmarshal into this version of the init |
| // request struct. Verify that the serialization of |
| // graphDriverInitRequest is fully backwards compatible. |
| |
| type graphDriverInitRequestV1 struct { |
| Home string |
| Opts []string `json:"Opts"` |
| UIDMaps []idtools.IDMap `json:"UIDMaps"` |
| GIDMaps []idtools.IDMap `json:"GIDMaps"` |
| } |
| |
| args := graphDriverInitRequest{ |
| Home: "homedir", |
| Opts: []string{"option1", "option2"}, |
| IdentityMapping: idtools.IdentityMapping{ |
| UIDMaps: []idtools.IDMap{{ContainerID: 123, HostID: 456, Size: 42}}, |
| GIDMaps: []idtools.IDMap{{ContainerID: 789, HostID: 1011, Size: 16}}, |
| }, |
| } |
| v, err := json.Marshal(&args) |
| assert.NilError(t, err) |
| |
| var got graphDriverInitRequestV1 |
| assert.NilError(t, json.Unmarshal(v, &got)) |
| want := graphDriverInitRequestV1{ |
| Home: args.Home, |
| Opts: args.Opts, |
| UIDMaps: args.UIDMaps, |
| GIDMaps: args.GIDMaps, |
| } |
| assert.DeepEqual(t, got, want) |
| } |