diff --git a/builder/googlecompute/config_test.go b/builder/googlecompute/config_test.go index 4db82040b..f562d4b8f 100644 --- a/builder/googlecompute/config_test.go +++ b/builder/googlecompute/config_test.go @@ -431,7 +431,8 @@ func testConfig(t *testing.T) (config map[string]interface{}, tempAccountFile st "image_licenses": []string{ "test-license", }, - "zone": "us-east1-a", + "metadata_files": map[string]string{}, + "zone": "us-east1-a", } return config, tempAccountFile @@ -484,6 +485,21 @@ func testAccountFile(t *testing.T) string { return tf.Name() } +const testMetadataFileContent = `testMetadata` + +func testMetadataFile(t *testing.T) string { + tf, err := ioutil.TempFile("", "packer") + if err != nil { + t.Fatalf("err: %s", err) + } + defer tf.Close() + if _, err := tf.Write([]byte(testMetadataFileContent)); err != nil { + t.Fatalf("err: %s", err) + } + + return tf.Name() +} + // This is just some dummy data that doesn't actually work (it was revoked // a long time ago). const testAccountContent = `{}` diff --git a/builder/googlecompute/step_create_instance_test.go b/builder/googlecompute/step_create_instance_test.go index 8468fd92e..8f765d34f 100644 --- a/builder/googlecompute/step_create_instance_test.go +++ b/builder/googlecompute/step_create_instance_test.go @@ -325,3 +325,20 @@ func TestCreateInstanceMetadata_noPublicKey(t *testing.T) { // ensure the ssh metadata hasn't changed assert.Equal(t, metadata["sshKeys"], sshKeys, "Instance metadata should not have been modified") } + +func TestCreateInstanceMetadata_metadataFile(t *testing.T) { + state := testState(t) + c := state.Get("config").(*Config) + image := StubImage("test-image", "test-project", []string{}, 100) + content := testMetadataFileContent + fileName := testMetadataFile(t) + c.MetadataFiles["user-data"] = fileName + + // create our metadata + metadata, err := c.createInstanceMetadata(image, "", state) + + assert.True(t, err == nil, "Metadata creation should have succeeded.") + + // ensure the user-data key in metadata is updated with file content + assert.Equal(t, metadata["user-data"], content, "user-data field of the instance metadata should have been updated.") +}