packer-cn/builder/triton/step_create_source_machine_...

161 lines
3.7 KiB
Go

package triton
import (
"context"
"errors"
"testing"
"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
)
func TestStepCreateSourceMachine(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
if action := step.Run(context.Background(), state); action != multistep.ActionContinue {
t.Fatalf("bad action: %#v", action)
}
machineIdRaw, ok := state.GetOk("machine")
if !ok {
t.Fatalf("should have machine")
}
step.Cleanup(state)
if driver.DeleteMachineId != machineIdRaw.(string) {
t.Fatalf("should've deleted machine (%s != %s)", driver.DeleteMachineId, machineIdRaw.(string))
}
}
func TestStepCreateSourceMachine_CreateMachineError(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
driver.CreateMachineErr = errors.New("error")
if action := step.Run(context.Background(), state); action != multistep.ActionHalt {
t.Fatalf("bad action: %#v", action)
}
if _, ok := state.GetOk("error"); !ok {
t.Fatalf("should have error")
}
if _, ok := state.GetOk("machine"); ok {
t.Fatalf("should NOT have machine")
}
}
func TestStepCreateSourceMachine_WaitForMachineStateError(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
driver.WaitForMachineStateErr = errors.New("error")
if action := step.Run(context.Background(), state); action != multistep.ActionHalt {
t.Fatalf("bad action: %#v", action)
}
if _, ok := state.GetOk("error"); !ok {
t.Fatalf("should have error")
}
if _, ok := state.GetOk("machine"); ok {
t.Fatalf("should NOT have machine")
}
}
func TestStepCreateSourceMachine_StopMachineError(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
if action := step.Run(context.Background(), state); action != multistep.ActionContinue {
t.Fatalf("bad action: %#v", action)
}
_, ok := state.GetOk("machine")
if !ok {
t.Fatalf("should have machine")
}
driver.StopMachineErr = errors.New("error")
step.Cleanup(state)
if _, ok := state.GetOk("error"); !ok {
t.Fatalf("should have error")
}
if _, ok := state.GetOk("machine"); !ok {
t.Fatalf("should have machine")
}
}
func TestStepCreateSourceMachine_WaitForMachineStoppedError(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
if action := step.Run(context.Background(), state); action != multistep.ActionContinue {
t.Fatalf("bad action: %#v", action)
}
_, ok := state.GetOk("machine")
if !ok {
t.Fatalf("should have machine")
}
driver.WaitForMachineStateErr = errors.New("error")
step.Cleanup(state)
if _, ok := state.GetOk("error"); !ok {
t.Fatalf("should have error")
}
if _, ok := state.GetOk("machine"); !ok {
t.Fatalf("should have machine")
}
}
func TestStepCreateSourceMachine_DeleteMachineError(t *testing.T) {
state := testState(t)
step := new(StepCreateSourceMachine)
defer step.Cleanup(state)
driver := state.Get("driver").(*DriverMock)
if action := step.Run(context.Background(), state); action != multistep.ActionContinue {
t.Fatalf("bad action: %#v", action)
}
_, ok := state.GetOk("machine")
if !ok {
t.Fatalf("should have machine")
}
driver.DeleteMachineErr = errors.New("error")
step.Cleanup(state)
if _, ok := state.GetOk("error"); !ok {
t.Fatalf("should have error")
}
if _, ok := state.GetOk("machine"); !ok {
t.Fatalf("should have machine")
}
}