(t *testing.T)
| 38 | ) |
| 39 | |
| 40 | func TestDown(t *testing.T) { |
| 41 | mockCtrl := gomock.NewController(t) |
| 42 | defer mockCtrl.Finish() |
| 43 | |
| 44 | api, cli := prepareMocks(mockCtrl) |
| 45 | tested, err := NewComposeService(cli) |
| 46 | assert.NilError(t, err) |
| 47 | |
| 48 | api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt(false)).Return( |
| 49 | client.ContainerListResult{Items: []container.Summary{ |
| 50 | testContainer("service1", "123", false), |
| 51 | testContainer("service2", "456", false), |
| 52 | testContainer("service2", "789", false), |
| 53 | testContainer("service_orphan", "321", true), |
| 54 | }}, nil) |
| 55 | api.EXPECT().VolumeList( |
| 56 | gomock.Any(), |
| 57 | client.VolumeListOptions{ |
| 58 | Filters: projectFilter(strings.ToLower(testProject)), |
| 59 | }). |
| 60 | Return(client.VolumeListResult{}, nil) |
| 61 | |
| 62 | // network names are not guaranteed to be unique, ensure Compose handles |
| 63 | // cleanup properly if duplicates are inadvertently created |
| 64 | api.EXPECT().NetworkList(gomock.Any(), client.NetworkListOptions{Filters: projectFilter(strings.ToLower(testProject))}). |
| 65 | Return(client.NetworkListResult{Items: []network.Summary{ |
| 66 | {Network: network.Network{ID: "abc123", Name: "myProject_default", Labels: map[string]string{compose.NetworkLabel: "default"}}}, |
| 67 | {Network: network.Network{ID: "def456", Name: "myProject_default", Labels: map[string]string{compose.NetworkLabel: "default"}}}, |
| 68 | }}, nil) |
| 69 | |
| 70 | stopOptions := client.ContainerStopOptions{} |
| 71 | api.EXPECT().ContainerStop(gomock.Any(), "123", stopOptions).Return(client.ContainerStopResult{}, nil) |
| 72 | api.EXPECT().ContainerStop(gomock.Any(), "456", stopOptions).Return(client.ContainerStopResult{}, nil) |
| 73 | api.EXPECT().ContainerStop(gomock.Any(), "789", stopOptions).Return(client.ContainerStopResult{}, nil) |
| 74 | |
| 75 | api.EXPECT().ContainerRemove(gomock.Any(), "123", client.ContainerRemoveOptions{Force: true}).Return(client.ContainerRemoveResult{}, nil) |
| 76 | api.EXPECT().ContainerRemove(gomock.Any(), "456", client.ContainerRemoveOptions{Force: true}).Return(client.ContainerRemoveResult{}, nil) |
| 77 | api.EXPECT().ContainerRemove(gomock.Any(), "789", client.ContainerRemoveOptions{Force: true}).Return(client.ContainerRemoveResult{}, nil) |
| 78 | |
| 79 | api.EXPECT().NetworkList(gomock.Any(), client.NetworkListOptions{ |
| 80 | Filters: projectFilter(strings.ToLower(testProject)).Add("label", networkFilter("default")), |
| 81 | }).Return(client.NetworkListResult{Items: []network.Summary{ |
| 82 | {Network: network.Network{ID: "abc123", Name: "myProject_default"}}, |
| 83 | {Network: network.Network{ID: "def456", Name: "myProject_default"}}, |
| 84 | }}, nil) |
| 85 | api.EXPECT().NetworkInspect(gomock.Any(), "abc123", gomock.Any()).Return(client.NetworkInspectResult{ |
| 86 | Network: network.Inspect{Network: network.Network{ID: "abc123"}}, |
| 87 | }, nil) |
| 88 | api.EXPECT().NetworkInspect(gomock.Any(), "def456", gomock.Any()).Return(client.NetworkInspectResult{ |
| 89 | Network: network.Inspect{Network: network.Network{ID: "def456"}}, |
| 90 | }, nil) |
| 91 | api.EXPECT().NetworkRemove(gomock.Any(), "abc123", gomock.Any()).Return(client.NetworkRemoveResult{}, nil) |
| 92 | api.EXPECT().NetworkRemove(gomock.Any(), "def456", gomock.Any()).Return(client.NetworkRemoveResult{}, nil) |
| 93 | |
| 94 | err = tested.Down(t.Context(), strings.ToLower(testProject), compose.DownOptions{}) |
| 95 | assert.NilError(t, err) |
| 96 | } |
| 97 |
nothing calls this directly
no test coverage detected