67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package googlecompute
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
|
|
"github.com/hashicorp/packer/packer-plugin-sdk/template/config"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestStepWaitStartupScript(t *testing.T) {
|
|
state := testState(t)
|
|
step := new(StepWaitStartupScript)
|
|
c := state.Get("config").(*Config)
|
|
d := state.Get("driver").(*DriverMock)
|
|
|
|
testZone := "test-zone"
|
|
testInstanceName := "test-instance-name"
|
|
|
|
c.Zone = testZone
|
|
state.Put("instance_name", testInstanceName)
|
|
|
|
// This step stops when it gets Done back from the metadata.
|
|
d.GetInstanceMetadataResult = StartupScriptStatusDone
|
|
|
|
// Run the step.
|
|
assert.Equal(t, step.Run(context.Background(), state), multistep.ActionContinue, "Step should have passed and continued.")
|
|
|
|
// Check that GetInstanceMetadata was called properly.
|
|
assert.Equal(t, d.GetInstanceMetadataZone, testZone, "Incorrect zone passed to GetInstanceMetadata.")
|
|
assert.Equal(t, d.GetInstanceMetadataName, testInstanceName, "Incorrect instance name passed to GetInstanceMetadata.")
|
|
}
|
|
|
|
func TestStepWaitStartupScript_withWrapStartupScript(t *testing.T) {
|
|
tt := []struct {
|
|
WrapStartup config.Trilean
|
|
Result, Zone, MetadataName string
|
|
}{
|
|
{WrapStartup: config.TriTrue, Result: StartupScriptStatusDone, Zone: "test-zone", MetadataName: "test-instance-name"},
|
|
{WrapStartup: config.TriFalse},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
tc := tc
|
|
state := testState(t)
|
|
step := new(StepWaitStartupScript)
|
|
c := state.Get("config").(*Config)
|
|
d := state.Get("driver").(*DriverMock)
|
|
|
|
c.StartupScriptFile = "startup.sh"
|
|
c.WrapStartupScriptFile = tc.WrapStartup
|
|
c.Zone = "test-zone"
|
|
state.Put("instance_name", "test-instance-name")
|
|
|
|
// This step stops when it gets Done back from the metadata.
|
|
d.GetInstanceMetadataResult = tc.Result
|
|
|
|
// Run the step.
|
|
assert.Equal(t, step.Run(context.Background(), state), multistep.ActionContinue, "Step should have continued.")
|
|
|
|
assert.Equal(t, d.GetInstanceMetadataResult, tc.Result, "MetadataResult was not the expected value.")
|
|
assert.Equal(t, d.GetInstanceMetadataZone, tc.Zone, "Zone was not the expected value.")
|
|
assert.Equal(t, d.GetInstanceMetadataName, tc.MetadataName, "Instance name was not the expected value.")
|
|
}
|
|
}
|