diff --git a/terraform/resource_provisioner_mock.go b/terraform/resource_provisioner_mock.go new file mode 100644 index 000000000..e50342416 --- /dev/null +++ b/terraform/resource_provisioner_mock.go @@ -0,0 +1,36 @@ +package terraform + +// MockResourceProvisioner implements ResourceProvisioner but mocks out all the +// calls for testing purposes. +type MockResourceProvisioner struct { + // Anything you want, in case you need to store extra data with the mock. + Meta interface{} + + ApplyCalled bool + ApplyState *ResourceState + ApplyConfig *ResourceConfig + ApplyFn func(*ResourceState, *ResourceConfig) (*ResourceState, error) + ApplyReturn *ResourceState + ApplyReturnError error + + ValidateCalled bool + ValidateConfig *ResourceConfig + ValidateReturnWarns []string + ValidateReturnErrors []error +} + +func (p *MockResourceProvisioner) Validate(c *ResourceConfig) ([]string, []error) { + p.ValidateCalled = true + p.ValidateConfig = c + return p.ValidateReturnWarns, p.ValidateReturnErrors +} + +func (p *MockResourceProvisioner) Apply(state *ResourceState, c *ResourceConfig) (*ResourceState, error) { + p.ApplyCalled = true + p.ApplyState = state + p.ApplyConfig = c + if p.ApplyFn != nil { + return p.ApplyFn(state, c) + } + return p.ApplyReturn, p.ApplyReturnError +} diff --git a/terraform/resource_provisioner_mock_test.go b/terraform/resource_provisioner_mock_test.go new file mode 100644 index 000000000..57795b425 --- /dev/null +++ b/terraform/resource_provisioner_mock_test.go @@ -0,0 +1,9 @@ +package terraform + +import ( + "testing" +) + +func TestMockResourceProvisioner_impl(t *testing.T) { + var _ ResourceProvisioner = new(MockResourceProvisioner) +}