5 // MockResourceProvider implements ResourceProvider but mocks out all the
6 // calls for testing purposes.
7 type MockResourceProvider struct {
10 // Anything you want, in case you need to store extra data with the mock.
17 InputConfig *ResourceConfig
18 InputReturnConfig *ResourceConfig
19 InputReturnError error
20 InputFn func(UIInput, *ResourceConfig) (*ResourceConfig, error)
22 ApplyInfo *InstanceInfo
23 ApplyState *InstanceState
24 ApplyDiff *InstanceDiff
25 ApplyFn func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error)
26 ApplyReturn *InstanceState
27 ApplyReturnError error
29 ConfigureConfig *ResourceConfig
30 ConfigureFn func(*ResourceConfig) error
31 ConfigureReturnError error
33 DiffInfo *InstanceInfo
34 DiffState *InstanceState
35 DiffDesired *ResourceConfig
36 DiffFn func(*InstanceInfo, *InstanceState, *ResourceConfig) (*InstanceDiff, error)
37 DiffReturn *InstanceDiff
40 RefreshInfo *InstanceInfo
41 RefreshState *InstanceState
42 RefreshFn func(*InstanceInfo, *InstanceState) (*InstanceState, error)
43 RefreshReturn *InstanceState
44 RefreshReturnError error
46 ResourcesReturn []ResourceType
47 ReadDataApplyCalled bool
48 ReadDataApplyInfo *InstanceInfo
49 ReadDataApplyDiff *InstanceDiff
50 ReadDataApplyFn func(*InstanceInfo, *InstanceDiff) (*InstanceState, error)
51 ReadDataApplyReturn *InstanceState
52 ReadDataApplyReturnError error
53 ReadDataDiffCalled bool
54 ReadDataDiffInfo *InstanceInfo
55 ReadDataDiffDesired *ResourceConfig
56 ReadDataDiffFn func(*InstanceInfo, *ResourceConfig) (*InstanceDiff, error)
57 ReadDataDiffReturn *InstanceDiff
58 ReadDataDiffReturnError error
62 DataSourcesCalled bool
63 DataSourcesReturn []DataSource
65 ValidateConfig *ResourceConfig
66 ValidateFn func(*ResourceConfig) ([]string, []error)
67 ValidateReturnWarns []string
68 ValidateReturnErrors []error
69 ValidateResourceFn func(string, *ResourceConfig) ([]string, []error)
70 ValidateResourceCalled bool
71 ValidateResourceType string
72 ValidateResourceConfig *ResourceConfig
73 ValidateResourceReturnWarns []string
74 ValidateResourceReturnErrors []error
75 ValidateDataSourceFn func(string, *ResourceConfig) ([]string, []error)
76 ValidateDataSourceCalled bool
77 ValidateDataSourceType string
78 ValidateDataSourceConfig *ResourceConfig
79 ValidateDataSourceReturnWarns []string
80 ValidateDataSourceReturnErrors []error
82 ImportStateCalled bool
83 ImportStateInfo *InstanceInfo
85 ImportStateReturn []*InstanceState
86 ImportStateReturnError error
87 ImportStateFn func(*InstanceInfo, string) ([]*InstanceState, error)
90 func (p *MockResourceProvider) Close() error {
95 func (p *MockResourceProvider) Input(
96 input UIInput, c *ResourceConfig) (*ResourceConfig, error) {
100 if p.InputFn != nil {
101 return p.InputFn(input, c)
103 return p.InputReturnConfig, p.InputReturnError
106 func (p *MockResourceProvider) Validate(c *ResourceConfig) ([]string, []error) {
110 p.ValidateCalled = true
112 if p.ValidateFn != nil {
113 return p.ValidateFn(c)
115 return p.ValidateReturnWarns, p.ValidateReturnErrors
118 func (p *MockResourceProvider) ValidateResource(t string, c *ResourceConfig) ([]string, []error) {
122 p.ValidateResourceCalled = true
123 p.ValidateResourceType = t
124 p.ValidateResourceConfig = c
126 if p.ValidateResourceFn != nil {
127 return p.ValidateResourceFn(t, c)
130 return p.ValidateResourceReturnWarns, p.ValidateResourceReturnErrors
133 func (p *MockResourceProvider) Configure(c *ResourceConfig) error {
137 p.ConfigureCalled = true
138 p.ConfigureConfig = c
140 if p.ConfigureFn != nil {
141 return p.ConfigureFn(c)
144 return p.ConfigureReturnError
147 func (p *MockResourceProvider) Stop() error {
156 return p.StopReturnError
159 func (p *MockResourceProvider) Apply(
161 state *InstanceState,
162 diff *InstanceDiff) (*InstanceState, error) {
163 // We only lock while writing data. Reading is fine
171 if p.ApplyFn != nil {
172 return p.ApplyFn(info, state, diff)
175 return p.ApplyReturn.DeepCopy(), p.ApplyReturnError
178 func (p *MockResourceProvider) Diff(
180 state *InstanceState,
181 desired *ResourceConfig) (*InstanceDiff, error) {
188 p.DiffDesired = desired
190 return p.DiffFn(info, state, desired)
193 return p.DiffReturn.DeepCopy(), p.DiffReturnError
196 func (p *MockResourceProvider) Refresh(
198 s *InstanceState) (*InstanceState, error) {
202 p.RefreshCalled = true
206 if p.RefreshFn != nil {
207 return p.RefreshFn(info, s)
210 return p.RefreshReturn.DeepCopy(), p.RefreshReturnError
213 func (p *MockResourceProvider) Resources() []ResourceType {
217 p.ResourcesCalled = true
218 return p.ResourcesReturn
221 func (p *MockResourceProvider) ImportState(info *InstanceInfo, id string) ([]*InstanceState, error) {
225 p.ImportStateCalled = true
226 p.ImportStateInfo = info
228 if p.ImportStateFn != nil {
229 return p.ImportStateFn(info, id)
232 var result []*InstanceState
233 if p.ImportStateReturn != nil {
234 result = make([]*InstanceState, len(p.ImportStateReturn))
235 for i, v := range p.ImportStateReturn {
236 result[i] = v.DeepCopy()
240 return result, p.ImportStateReturnError
243 func (p *MockResourceProvider) ValidateDataSource(t string, c *ResourceConfig) ([]string, []error) {
247 p.ValidateDataSourceCalled = true
248 p.ValidateDataSourceType = t
249 p.ValidateDataSourceConfig = c
251 if p.ValidateDataSourceFn != nil {
252 return p.ValidateDataSourceFn(t, c)
255 return p.ValidateDataSourceReturnWarns, p.ValidateDataSourceReturnErrors
258 func (p *MockResourceProvider) ReadDataDiff(
260 desired *ResourceConfig) (*InstanceDiff, error) {
264 p.ReadDataDiffCalled = true
265 p.ReadDataDiffInfo = info
266 p.ReadDataDiffDesired = desired
267 if p.ReadDataDiffFn != nil {
268 return p.ReadDataDiffFn(info, desired)
271 return p.ReadDataDiffReturn.DeepCopy(), p.ReadDataDiffReturnError
274 func (p *MockResourceProvider) ReadDataApply(
276 d *InstanceDiff) (*InstanceState, error) {
280 p.ReadDataApplyCalled = true
281 p.ReadDataApplyInfo = info
282 p.ReadDataApplyDiff = d
284 if p.ReadDataApplyFn != nil {
285 return p.ReadDataApplyFn(info, d)
288 return p.ReadDataApplyReturn.DeepCopy(), p.ReadDataApplyReturnError
291 func (p *MockResourceProvider) DataSources() []DataSource {
295 p.DataSourcesCalled = true
296 return p.DataSourcesReturn