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