github.com/chalford/terraform@v0.3.7-0.20150113080010-a78c69a8c81f/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  }