func testStorage(v *Validator, input *data.Data, conf *config.VirtualContainerHostConfigSpec, t *testing.T) { tests := []struct { image string volumes map[string]string hasErr bool expectImage string expectVolumes map[string]string }{ {"LocalDS_0", map[string]string{"volume1": "LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}, false, "ds://LocalDS_0/test001", map[string]string{"volume1": "ds://LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}}, {"LocalDS_0/images", map[string]string{"volume1": "LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}, false, "ds://LocalDS_0/images", map[string]string{"volume1": "ds://LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}}, {"ds://LocalDS_0/images", map[string]string{"volume1": "LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}, false, "ds://LocalDS_0/images", map[string]string{"volume1": "ds://LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}}, {"ds://LocalDS_0/images/xyz", map[string]string{"volume1": "LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}, false, "ds://LocalDS_0/images/xyz", map[string]string{"volume1": "ds://LocalDS_0/volumes/volume1", "volume2": "ds://LocalDS_0/volumes/volume2"}}, {"ds://😗", map[string]string{"volume1": "😗/volumes/volume1", "volume2": "ds://😗/volumes/volume2"}, true, "ds://😗/test001", nil}, {"ds://LocalDS_0", map[string]string{"volume1": "LocalDS_1/volumes/volume1", "volume2": "ds://LocalDS_1/volumes/volume2"}, true, "ds://LocalDS_0/test001", nil}, {"LocalDS_0", map[string]string{"volume1": "LocalDS_1/volumes/volume1", "volume2": "ds://LocalDS_1/volumes/volume2"}, true, "ds://LocalDS_0/test001", nil}, {"LocalDS_0", map[string]string{"volume1": "LocalDS_1/volumes/volume1", "volume2": "ds://LocalDS_1/volumes/volume2"}, true, "ds://LocalDS_0/test001", nil}, {"", map[string]string{"volume1": "", "volume2": "ds://"}, true, "", nil}, {"ds://", map[string]string{"volume1": "", "volume2": "ds://"}, true, "", nil}, } for _, test := range tests { t.Logf("%+v", test) input.ImageDatastorePath = test.image input.VolumeLocations = test.volumes v.storage(v.Context, input, conf) v.ListIssues() if !test.hasErr { assert.Equal(t, 0, len(v.issues)) assert.Equal(t, test.expectImage, conf.ImageStores[0].String()) conf.ImageStores = conf.ImageStores[1:] for key, volume := range conf.VolumeLocations { assert.Equal(t, test.expectVolumes[key], volume.String()) } } else { assert.True(t, len(v.issues) > 0, "Should have errors") } v.issues = nil } }