7 // MockResourceProvider implements ResourceProvider but mocks out all the
8 // calls for testing purposes.
9 type MockResourceProvider struct {
12 // Anything you want, in case you need to store extra data with the mock.
18 GetSchemaRequest *ProviderSchemaRequest
19 GetSchemaReturn *ProviderSchema
20 GetSchemaReturnError error
23 InputConfig *ResourceConfig
24 InputReturnConfig *ResourceConfig
25 InputReturnError error
26 InputFn func(UIInput, *ResourceConfig) (*ResourceConfig, error)
28 ApplyInfo *InstanceInfo
29 ApplyState *InstanceState
30 ApplyDiff *InstanceDiff
31 ApplyFn func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error)
32 ApplyReturn *InstanceState
33 ApplyReturnError error
35 ConfigureConfig *ResourceConfig
36 ConfigureFn func(*ResourceConfig) error
37 ConfigureReturnError error
39 DiffInfo *InstanceInfo
40 DiffState *InstanceState
41 DiffDesired *ResourceConfig
42 DiffFn func(*InstanceInfo, *InstanceState, *ResourceConfig) (*InstanceDiff, error)
43 DiffReturn *InstanceDiff
46 RefreshInfo *InstanceInfo
47 RefreshState *InstanceState
48 RefreshFn func(*InstanceInfo, *InstanceState) (*InstanceState, error)
49 RefreshReturn *InstanceState
50 RefreshReturnError error
52 ResourcesReturn []ResourceType
53 ReadDataApplyCalled bool
54 ReadDataApplyInfo *InstanceInfo
55 ReadDataApplyDiff *InstanceDiff
56 ReadDataApplyFn func(*InstanceInfo, *InstanceDiff) (*InstanceState, error)
57 ReadDataApplyReturn *InstanceState
58 ReadDataApplyReturnError error
59 ReadDataDiffCalled bool
60 ReadDataDiffInfo *InstanceInfo
61 ReadDataDiffDesired *ResourceConfig
62 ReadDataDiffFn func(*InstanceInfo, *ResourceConfig) (*InstanceDiff, error)
63 ReadDataDiffReturn *InstanceDiff
64 ReadDataDiffReturnError error
68 DataSourcesCalled bool
69 DataSourcesReturn []DataSource
71 ValidateConfig *ResourceConfig
72 ValidateFn func(*ResourceConfig) ([]string, []error)
73 ValidateReturnWarns []string
74 ValidateReturnErrors []error
75 ValidateResourceFn func(string, *ResourceConfig) ([]string, []error)
76 ValidateResourceCalled bool
77 ValidateResourceType string
78 ValidateResourceConfig *ResourceConfig
79 ValidateResourceReturnWarns []string
80 ValidateResourceReturnErrors []error
81 ValidateDataSourceFn func(string, *ResourceConfig) ([]string, []error)
82 ValidateDataSourceCalled bool
83 ValidateDataSourceType string
84 ValidateDataSourceConfig *ResourceConfig
85 ValidateDataSourceReturnWarns []string
86 ValidateDataSourceReturnErrors []error
88 ImportStateCalled bool
89 ImportStateInfo *InstanceInfo
91 ImportStateReturn []*InstanceState
92 ImportStateReturnError error
93 ImportStateFn func(*InstanceInfo, string) ([]*InstanceState, error)
96 func (p *MockResourceProvider) Close() error {
101 func (p *MockResourceProvider) GetSchema(req *ProviderSchemaRequest) (*ProviderSchema, error) {
105 p.GetSchemaCalled = true
106 p.GetSchemaRequest = req
107 return p.GetSchemaReturn, p.GetSchemaReturnError
110 func (p *MockResourceProvider) Input(
111 input UIInput, c *ResourceConfig) (*ResourceConfig, error) {
117 if p.InputFn != nil {
118 return p.InputFn(input, c)
120 return p.InputReturnConfig, p.InputReturnError
123 func (p *MockResourceProvider) Validate(c *ResourceConfig) ([]string, []error) {
127 p.ValidateCalled = true
129 if p.ValidateFn != nil {
130 return p.ValidateFn(c)
132 return p.ValidateReturnWarns, p.ValidateReturnErrors
135 func (p *MockResourceProvider) ValidateResource(t string, c *ResourceConfig) ([]string, []error) {
139 p.ValidateResourceCalled = true
140 p.ValidateResourceType = t
141 p.ValidateResourceConfig = c
143 if p.ValidateResourceFn != nil {
144 return p.ValidateResourceFn(t, c)
147 return p.ValidateResourceReturnWarns, p.ValidateResourceReturnErrors
150 func (p *MockResourceProvider) Configure(c *ResourceConfig) error {
154 p.ConfigureCalled = true
155 p.ConfigureConfig = c
157 if p.ConfigureFn != nil {
158 return p.ConfigureFn(c)
161 return p.ConfigureReturnError
164 func (p *MockResourceProvider) Stop() error {
173 return p.StopReturnError
176 func (p *MockResourceProvider) Apply(
178 state *InstanceState,
179 diff *InstanceDiff) (*InstanceState, error) {
180 // We only lock while writing data. Reading is fine
188 if p.ApplyFn != nil {
189 return p.ApplyFn(info, state, diff)
192 return p.ApplyReturn.DeepCopy(), p.ApplyReturnError
195 func (p *MockResourceProvider) Diff(
197 state *InstanceState,
198 desired *ResourceConfig) (*InstanceDiff, error) {
205 p.DiffDesired = desired
208 return p.DiffFn(info, state, desired)
211 return p.DiffReturn.DeepCopy(), p.DiffReturnError
214 func (p *MockResourceProvider) Refresh(
216 s *InstanceState) (*InstanceState, error) {
220 p.RefreshCalled = true
224 if p.RefreshFn != nil {
225 return p.RefreshFn(info, s)
228 return p.RefreshReturn.DeepCopy(), p.RefreshReturnError
231 func (p *MockResourceProvider) Resources() []ResourceType {
235 p.ResourcesCalled = true
236 return p.ResourcesReturn
239 func (p *MockResourceProvider) ImportState(info *InstanceInfo, id string) ([]*InstanceState, error) {
243 p.ImportStateCalled = true
244 p.ImportStateInfo = info
246 if p.ImportStateFn != nil {
247 return p.ImportStateFn(info, id)
250 var result []*InstanceState
251 if p.ImportStateReturn != nil {
252 result = make([]*InstanceState, len(p.ImportStateReturn))
253 for i, v := range p.ImportStateReturn {
254 result[i] = v.DeepCopy()
258 return result, p.ImportStateReturnError
261 func (p *MockResourceProvider) ValidateDataSource(t string, c *ResourceConfig) ([]string, []error) {
265 p.ValidateDataSourceCalled = true
266 p.ValidateDataSourceType = t
267 p.ValidateDataSourceConfig = c
269 if p.ValidateDataSourceFn != nil {
270 return p.ValidateDataSourceFn(t, c)
273 return p.ValidateDataSourceReturnWarns, p.ValidateDataSourceReturnErrors
276 func (p *MockResourceProvider) ReadDataDiff(
278 desired *ResourceConfig) (*InstanceDiff, error) {
282 p.ReadDataDiffCalled = true
283 p.ReadDataDiffInfo = info
284 p.ReadDataDiffDesired = desired
285 if p.ReadDataDiffFn != nil {
286 return p.ReadDataDiffFn(info, desired)
289 return p.ReadDataDiffReturn.DeepCopy(), p.ReadDataDiffReturnError
292 func (p *MockResourceProvider) ReadDataApply(
294 d *InstanceDiff) (*InstanceState, error) {
298 p.ReadDataApplyCalled = true
299 p.ReadDataApplyInfo = info
300 p.ReadDataApplyDiff = d
302 if p.ReadDataApplyFn != nil {
303 return p.ReadDataApplyFn(info, d)
306 return p.ReadDataApplyReturn.DeepCopy(), p.ReadDataApplyReturnError
309 func (p *MockResourceProvider) DataSources() []DataSource {
313 p.DataSourcesCalled = true
314 return p.DataSourcesReturn