// testExecution sets up boiler plate mocked objects then delegates to a more // specific tester, then asserts general expectations on the mocked objects. // It is the responsibility of the inner tester to set up expectations // and assert specific result conditions. func testExecution(t *testing.T, commandtester CommandTester) { // create mocked objects mockCancelFlag := new(task.MockCancelFlag) mockExecuter := new(executers.MockCommandExecuter) mockS3Uploader := new(pluginutil.MockDefaultPlugin) // create plugin p := new(Plugin) p.StdoutFileName = "stdout" p.StderrFileName = "stderr" p.MaxStdoutLength = 1000 p.MaxStderrLength = 1000 p.OutputTruncatedSuffix = "-more-" p.UploadToS3Sync = true p.ExecuteCommand = pluginutil.CommandExecuter(mockExecuter.Execute) p.ExecuteUploadOutputToS3Bucket = pluginutil.UploadOutputToS3BucketExecuter(mockS3Uploader.UploadOutputToS3Bucket) // run inner command tester commandtester(p, mockCancelFlag, mockExecuter, mockS3Uploader) // assert that the expectations were met mockExecuter.AssertExpectations(t) mockCancelFlag.AssertExpectations(t) mockS3Uploader.AssertExpectations(t) }
func TestExecute(t *testing.T) { pluginInput := createStubPluginInput() pluginInput.TargetVersion = "" config := contracts.Configuration{} p := make([]interface{}, 1) p[0] = pluginInput config.Properties = p plugin := &Plugin{} pluginInput.TargetVersion = "" mockCancelFlag := new(task.MockCancelFlag) mockContext := context.NewMockDefault() // Create stub updateAgent = func( p *Plugin, config contracts.Configuration, log log.T, manager pluginHelper, util updateutil.T, rawPluginInput interface{}, cancelFlag task.CancelFlag, outputS3BucketName string, outputS3KeyPrefix string, startTime time.Time) (out UpdatePluginOutput) { out = UpdatePluginOutput{} out.ExitCode = 1 out.Stderr = "error" return out } // Setup mocks mockCancelFlag.On("Canceled").Return(false) mockCancelFlag.On("ShutDown").Return(false) mockCancelFlag.On("Wait").Return(false).After(100 * time.Millisecond) result := plugin.Execute(mockContext, config, mockCancelFlag) assert.Equal(t, result.Code, 1) assert.Contains(t, result.Output, "error") }
func setCancelFlagExpectations(mockCancelFlag *task.MockCancelFlag) { mockCancelFlag.On("Canceled").Return(false) mockCancelFlag.On("ShutDown").Return(false) }