]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/hashicorp/terraform/terraform/resource_provisioner_mock.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / resource_provisioner_mock.go
1 package terraform
2
3 import (
4 "sync"
5
6 "github.com/hashicorp/terraform/configs/configschema"
7 )
8
9 // MockResourceProvisioner implements ResourceProvisioner but mocks out all the
10 // calls for testing purposes.
11 type MockResourceProvisioner struct {
12 sync.Mutex
13 // Anything you want, in case you need to store extra data with the mock.
14 Meta interface{}
15
16 GetConfigSchemaCalled bool
17 GetConfigSchemaReturnSchema *configschema.Block
18 GetConfigSchemaReturnError error
19
20 ApplyCalled bool
21 ApplyOutput UIOutput
22 ApplyState *InstanceState
23 ApplyConfig *ResourceConfig
24 ApplyFn func(*InstanceState, *ResourceConfig) error
25 ApplyReturnError error
26
27 ValidateCalled bool
28 ValidateConfig *ResourceConfig
29 ValidateFn func(c *ResourceConfig) ([]string, []error)
30 ValidateReturnWarns []string
31 ValidateReturnErrors []error
32
33 StopCalled bool
34 StopFn func() error
35 StopReturnError error
36 }
37
38 var _ ResourceProvisioner = (*MockResourceProvisioner)(nil)
39
40 func (p *MockResourceProvisioner) GetConfigSchema() (*configschema.Block, error) {
41 p.GetConfigSchemaCalled = true
42 return p.GetConfigSchemaReturnSchema, p.GetConfigSchemaReturnError
43 }
44
45 func (p *MockResourceProvisioner) Validate(c *ResourceConfig) ([]string, []error) {
46 p.Lock()
47 defer p.Unlock()
48
49 p.ValidateCalled = true
50 p.ValidateConfig = c
51 if p.ValidateFn != nil {
52 return p.ValidateFn(c)
53 }
54 return p.ValidateReturnWarns, p.ValidateReturnErrors
55 }
56
57 func (p *MockResourceProvisioner) Apply(
58 output UIOutput,
59 state *InstanceState,
60 c *ResourceConfig) error {
61 p.Lock()
62
63 p.ApplyCalled = true
64 p.ApplyOutput = output
65 p.ApplyState = state
66 p.ApplyConfig = c
67 if p.ApplyFn != nil {
68 fn := p.ApplyFn
69 p.Unlock()
70 return fn(state, c)
71 }
72
73 defer p.Unlock()
74 return p.ApplyReturnError
75 }
76
77 func (p *MockResourceProvisioner) Stop() error {
78 p.Lock()
79 defer p.Unlock()
80
81 p.StopCalled = true
82 if p.StopFn != nil {
83 return p.StopFn()
84 }
85
86 return p.StopReturnError
87 }