mirror of https://github.com/docker/docs.git
234 lines
5.3 KiB
Go
234 lines
5.3 KiB
Go
package commands
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"errors"
|
|
|
|
"github.com/docker/machine/commands/commandstest"
|
|
"github.com/docker/machine/drivers/fakedriver"
|
|
"github.com/docker/machine/libmachine/host"
|
|
"github.com/docker/machine/libmachine/libmachinetest"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCmdRmMissingMachineName(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{}
|
|
api := &libmachinetest.FakeAPI{}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
|
|
assert.Equal(t, ErrNoMachineSpecified, err)
|
|
assert.True(t, commandLine.HelpShown)
|
|
}
|
|
|
|
func TestCmdRm(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1", "machineToRemove2"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": true,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
{
|
|
Name: "machineToRemove2",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
{
|
|
Name: "machine",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.NoError(t, err)
|
|
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove2"))
|
|
assert.True(t, libmachinetest.Exists(api, "machine"))
|
|
}
|
|
|
|
func TestCmdRmforcefully(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1", "machineToRemove2"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"force": true,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
{
|
|
Name: "machineToRemove2",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.NoError(t, err)
|
|
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove2"))
|
|
}
|
|
|
|
func TestCmdRmforceDoesAutoConfirm(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1", "machineToRemove2"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": false,
|
|
"force": true,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
{
|
|
Name: "machineToRemove2",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.NoError(t, err)
|
|
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove2"))
|
|
}
|
|
|
|
func TestCmdRmforceConfirmUnset(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": false,
|
|
"force": false,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.NoError(t, err)
|
|
|
|
assert.True(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
}
|
|
|
|
type DriverWithRemoveWhichFail struct {
|
|
fakedriver.Driver
|
|
}
|
|
|
|
func (d *DriverWithRemoveWhichFail) Remove() error {
|
|
return errors.New("unknown error")
|
|
}
|
|
|
|
func TestDontStopWhenADriverRemovalFails(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1", "machineToRemove2", "machineToRemove3"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": true,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
{
|
|
Name: "machineToRemove2",
|
|
Driver: &DriverWithRemoveWhichFail{},
|
|
},
|
|
{
|
|
Name: "machineToRemove3",
|
|
Driver: &fakedriver.Driver{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.EqualError(t, err, "Error removing host \"machineToRemove2\": unknown error")
|
|
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
assert.True(t, libmachinetest.Exists(api, "machineToRemove2"))
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove3"))
|
|
}
|
|
|
|
func TestForceRemoveEvenWhenItFails(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": true,
|
|
"force": true,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &DriverWithRemoveWhichFail{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.NoError(t, err)
|
|
|
|
assert.False(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
}
|
|
|
|
func TestDontRemoveMachineIsRemovalFailsAndNotForced(t *testing.T) {
|
|
commandLine := &commandstest.FakeCommandLine{
|
|
CliArgs: []string{"machineToRemove1"},
|
|
LocalFlags: &commandstest.FakeFlagger{
|
|
Data: map[string]interface{}{
|
|
"y": true,
|
|
"force": false,
|
|
},
|
|
},
|
|
}
|
|
api := &libmachinetest.FakeAPI{
|
|
Hosts: []*host.Host{
|
|
{
|
|
Name: "machineToRemove1",
|
|
Driver: &DriverWithRemoveWhichFail{},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := cmdRm(commandLine, api)
|
|
assert.EqualError(t, err, "Error removing host \"machineToRemove1\": unknown error")
|
|
|
|
assert.True(t, libmachinetest.Exists(api, "machineToRemove1"))
|
|
}
|