github.com/bdwilliams/libcompose@v0.3.1-0.20160826154243-d81a9bdacff0/docker/volume/volume_test.go (about) 1 package volume 2 3 import ( 4 "testing" 5 6 "github.com/docker/engine-api/types" 7 "github.com/docker/libcompose/config" 8 "github.com/docker/libcompose/test" 9 ) 10 11 func TestVolumesFromServices(t *testing.T) { 12 cases := []struct { 13 volumeConfigs map[string]*config.VolumeConfig 14 services map[string]*config.ServiceConfig 15 volumeEnabled bool 16 expectedVolumes []*Volume 17 expectedError bool 18 }{ 19 {}, 20 { 21 volumeConfigs: map[string]*config.VolumeConfig{ 22 "vol1": {}, 23 }, 24 services: map[string]*config.ServiceConfig{}, 25 expectedVolumes: []*Volume{ 26 { 27 name: "vol1", 28 projectName: "prj", 29 }, 30 }, 31 expectedError: false, 32 }, 33 } 34 35 for index, c := range cases { 36 services := config.NewServiceConfigs() 37 for name, service := range c.services { 38 services.Add(name, service) 39 } 40 41 volumes, err := VolumesFromServices(&volumeClient{}, "prj", c.volumeConfigs, services, c.volumeEnabled) 42 if c.expectedError { 43 if err == nil { 44 t.Fatalf("%d: expected an error, got nothing", index) 45 } 46 } else { 47 if err != nil { 48 t.Fatalf("%d: didn't expect an error, got one %s", index, err.Error()) 49 } 50 } 51 if volumes.volumeEnabled != c.volumeEnabled { 52 t.Fatalf("%d: expected volume enabled %v, got %v", index, c.volumeEnabled, volumes.volumeEnabled) 53 } 54 if len(volumes.volumes) != len(c.expectedVolumes) { 55 t.Fatalf("%d: expected %v, got %v", index, c.expectedVolumes, volumes.volumes) 56 } 57 for _, volume := range volumes.volumes { 58 testExpectedContainsVolume(t, index, c.expectedVolumes, volume) 59 } 60 } 61 } 62 63 func testExpectedContainsVolume(t *testing.T, index int, expected []*Volume, volume *Volume) { 64 found := false 65 for _, e := range expected { 66 if e.name == volume.name { 67 found = true 68 break 69 } 70 } 71 if !found { 72 t.Fatalf("%d: volume %v not found in %v", index, volume, expected) 73 } 74 } 75 76 type volumeClient struct { 77 test.NopClient 78 expectedName string 79 expectedVolumeCreate types.VolumeCreateRequest 80 inspectError error 81 inspectVolumeDriver string 82 inspectVolumeOptions map[string]string 83 removeError error 84 }