github.com/adamar/terraform@v0.2.2-0.20141016210445-2e703afdad0e/terraform/resource_provider_mock.go (about) 1 package terraform 2 3 import ( 4 "sync" 5 ) 6 7 // MockResourceProvider implements ResourceProvider but mocks out all the 8 // calls for testing purposes. 9 type MockResourceProvider struct { 10 sync.Mutex 11 12 // Anything you want, in case you need to store extra data with the mock. 13 Meta interface{} 14 15 InputCalled bool 16 InputInput UIInput 17 InputConfig *ResourceConfig 18 InputReturnConfig *ResourceConfig 19 InputReturnError error 20 InputFn func(UIInput, *ResourceConfig) (*ResourceConfig, error) 21 ApplyCalled bool 22 ApplyInfo *InstanceInfo 23 ApplyState *InstanceState 24 ApplyDiff *InstanceDiff 25 ApplyFn func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error) 26 ApplyReturn *InstanceState 27 ApplyReturnError error 28 ConfigureCalled bool 29 ConfigureConfig *ResourceConfig 30 ConfigureFn func(*ResourceConfig) error 31 ConfigureReturnError error 32 DiffCalled bool 33 DiffInfo *InstanceInfo 34 DiffState *InstanceState 35 DiffDesired *ResourceConfig 36 DiffFn func(*InstanceInfo, *InstanceState, *ResourceConfig) (*InstanceDiff, error) 37 DiffReturn *InstanceDiff 38 DiffReturnError error 39 RefreshCalled bool 40 RefreshInfo *InstanceInfo 41 RefreshState *InstanceState 42 RefreshFn func(*InstanceInfo, *InstanceState) (*InstanceState, error) 43 RefreshReturn *InstanceState 44 RefreshReturnError error 45 ResourcesCalled bool 46 ResourcesReturn []ResourceType 47 ValidateCalled bool 48 ValidateConfig *ResourceConfig 49 ValidateFn func(*ResourceConfig) ([]string, []error) 50 ValidateReturnWarns []string 51 ValidateReturnErrors []error 52 ValidateResourceFn func(string, *ResourceConfig) ([]string, []error) 53 ValidateResourceCalled bool 54 ValidateResourceType string 55 ValidateResourceConfig *ResourceConfig 56 ValidateResourceReturnWarns []string 57 ValidateResourceReturnErrors []error 58 } 59 60 func (p *MockResourceProvider) Input( 61 input UIInput, c *ResourceConfig) (*ResourceConfig, error) { 62 p.InputCalled = true 63 p.InputInput = input 64 p.InputConfig = c 65 if p.InputFn != nil { 66 return p.InputFn(input, c) 67 } 68 return p.InputReturnConfig, p.InputReturnError 69 } 70 71 func (p *MockResourceProvider) Validate(c *ResourceConfig) ([]string, []error) { 72 p.Lock() 73 defer p.Unlock() 74 75 p.ValidateCalled = true 76 p.ValidateConfig = c 77 if p.ValidateFn != nil { 78 return p.ValidateFn(c) 79 } 80 return p.ValidateReturnWarns, p.ValidateReturnErrors 81 } 82 83 func (p *MockResourceProvider) ValidateResource(t string, c *ResourceConfig) ([]string, []error) { 84 p.Lock() 85 defer p.Unlock() 86 87 p.ValidateResourceCalled = true 88 p.ValidateResourceType = t 89 p.ValidateResourceConfig = c 90 91 if p.ValidateResourceFn != nil { 92 return p.ValidateResourceFn(t, c) 93 } 94 95 return p.ValidateResourceReturnWarns, p.ValidateResourceReturnErrors 96 } 97 98 func (p *MockResourceProvider) Configure(c *ResourceConfig) error { 99 p.Lock() 100 defer p.Unlock() 101 102 p.ConfigureCalled = true 103 p.ConfigureConfig = c 104 105 if p.ConfigureFn != nil { 106 return p.ConfigureFn(c) 107 } 108 109 return p.ConfigureReturnError 110 } 111 112 func (p *MockResourceProvider) Apply( 113 info *InstanceInfo, 114 state *InstanceState, 115 diff *InstanceDiff) (*InstanceState, error) { 116 p.Lock() 117 defer p.Unlock() 118 119 p.ApplyCalled = true 120 p.ApplyInfo = info 121 p.ApplyState = state 122 p.ApplyDiff = diff 123 if p.ApplyFn != nil { 124 return p.ApplyFn(info, state, diff) 125 } 126 127 return p.ApplyReturn, p.ApplyReturnError 128 } 129 130 func (p *MockResourceProvider) Diff( 131 info *InstanceInfo, 132 state *InstanceState, 133 desired *ResourceConfig) (*InstanceDiff, error) { 134 p.Lock() 135 defer p.Unlock() 136 137 p.DiffCalled = true 138 p.DiffInfo = info 139 p.DiffState = state 140 p.DiffDesired = desired 141 if p.DiffFn != nil { 142 return p.DiffFn(info, state, desired) 143 } 144 145 return p.DiffReturn, p.DiffReturnError 146 } 147 148 func (p *MockResourceProvider) Refresh( 149 info *InstanceInfo, 150 s *InstanceState) (*InstanceState, error) { 151 p.Lock() 152 defer p.Unlock() 153 154 p.RefreshCalled = true 155 p.RefreshInfo = info 156 p.RefreshState = s 157 158 if p.RefreshFn != nil { 159 return p.RefreshFn(info, s) 160 } 161 162 return p.RefreshReturn, p.RefreshReturnError 163 } 164 165 func (p *MockResourceProvider) Resources() []ResourceType { 166 p.Lock() 167 defer p.Unlock() 168 169 p.ResourcesCalled = true 170 return p.ResourcesReturn 171 }