})

		AfterEach(func() {
			testhelpers.DeleteVirtualGuest(virtualGuest.Id)
			testhelpers.DeleteSshKey(createdSshKey.Id)
		})

		It("issues set_vm_metadata to cpi", func() {
			pwd, err := os.Getwd()
			Expect(err).ToNot(HaveOccurred())
			rootTemplatePath := filepath.Join(pwd, "..", "..")

			jsonPayload, err := testhelperscpi.GenerateCpiJsonPayload("set_vm_metadata", rootTemplatePath, replacementMap)
			Expect(err).ToNot(HaveOccurred())

			tmpConfigPath, err := testhelperscpi.CreateTmpConfigPath(rootTemplatePath, configPath, username, apiKey)
			Expect(err).ToNot(HaveOccurred())

			_, err = testhelperscpi.RunCpi(rootTemplatePath, tmpConfigPath, jsonPayload)
			Expect(err).ToNot(HaveOccurred())

			err = os.RemoveAll(tmpConfigPath)
			Expect(err).ToNot(HaveOccurred())

			tagReferences, err := virtualGuestService.GetTagReferences(virtualGuest.Id)
			Expect(err).ToNot(HaveOccurred())

			tagReferencesJSON, err := json.Marshal(tagReferences)
			Expect(err).ToNot(HaveOccurred())

			Ω(tagReferencesJSON).Should(ContainSubstring("cpi-test"))
									"tags": "some, tags"
								}
							],
							"context": {
								"director_uuid": "some director UUID"
							}
						}`

			_, err := testhelpers.RunCpi(rootTemplatePath, configPath, payload)
			Expect(err).ToNot(HaveOccurred())
		})
	})

	Context("#CreateTmpConfigPath", func() {
		It("creates a config.json in temp dir with new config template values", func() {
			tmpConfigPath, err := testhelpers.CreateTmpConfigPath(rootTemplatePath, "test_fixtures/cpi_methods/config.json", "some username", "some ApiKey")
			Expect(err).ToNot(HaveOccurred())

			fileInfo, err := os.Stat(tmpConfigPath)
			Expect(err).ToNot(HaveOccurred())
			Expect(fileInfo.Mode().IsRegular()).To(BeTrue())

			err = os.RemoveAll(tmpConfigPath)
			Expect(err).ToNot(HaveOccurred())
		})
	})

	Context("#GenerateCpiJsonPayload", func() {
		Context("set_vm_metadata CPI method", func() {
			BeforeEach(func() {
				cpiTemplate = testhelpers.CpiTemplate{