func TestResourceProvider_windowsInstallChefClient(t *testing.T) { cases := map[string]struct { Config *terraform.ResourceConfig Commands map[string]bool UploadScripts map[string]string }{ "Default": { Config: testConfig(t, map[string]interface{}{ "node_name": "nodename1", "run_list": []interface{}{"cookbook::recipe"}, "server_url": "https://chef.local", "validation_client_name": "validator", "validation_key_path": "validator.pem", }), Commands: map[string]bool{ "powershell -NoProfile -ExecutionPolicy Bypass -File ChefClient.ps1": true, }, UploadScripts: map[string]string{ "ChefClient.ps1": defaultWindowsInstallScript, }, }, "Proxy": { Config: testConfig(t, map[string]interface{}{ "http_proxy": "http://proxy.local", "no_proxy": []interface{}{"http://local.local", "http://local.org"}, "node_name": "nodename1", "run_list": []interface{}{"cookbook::recipe"}, "server_url": "https://chef.local", "validation_client_name": "validator", "validation_key_path": "validator.pem", }), Commands: map[string]bool{ "powershell -NoProfile -ExecutionPolicy Bypass -File ChefClient.ps1": true, }, UploadScripts: map[string]string{ "ChefClient.ps1": proxyWindowsInstallScript, }, }, "Version": { Config: testConfig(t, map[string]interface{}{ "node_name": "nodename1", "run_list": []interface{}{"cookbook::recipe"}, "server_url": "https://chef.local", "validation_client_name": "validator", "validation_key_path": "validator.pem", "version": "11.18.6", }), Commands: map[string]bool{ "powershell -NoProfile -ExecutionPolicy Bypass -File ChefClient.ps1": true, }, UploadScripts: map[string]string{ "ChefClient.ps1": versionWindowsInstallScript, }, }, } r := new(ResourceProvisioner) o := new(terraform.MockUIOutput) c := new(communicator.MockCommunicator) for k, tc := range cases { c.Commands = tc.Commands c.UploadScripts = tc.UploadScripts p, err := r.decodeConfig(tc.Config) if err != nil { t.Fatalf("Error: %v", err) } p.useSudo = false err = p.windowsInstallChefClient(o, c) if err != nil { t.Fatalf("Test %q failed: %v", k, err) } } }