github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/resource/resource_check_test.go (about)

     1  package resource_test
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"errors"
     7  	"io"
     8  
     9  	"github.com/pf-qiu/concourse/v6/atc"
    10  	"github.com/pf-qiu/concourse/v6/atc/resource"
    11  	"github.com/pf-qiu/concourse/v6/atc/runtime"
    12  	"github.com/pf-qiu/concourse/v6/atc/runtime/runtimefakes"
    13  
    14  	. "github.com/onsi/ginkgo"
    15  	. "github.com/onsi/gomega"
    16  )
    17  
    18  var _ = Describe("Resource Check", func() {
    19  	var (
    20  		ctx             context.Context
    21  		someProcessSpec runtime.ProcessSpec
    22  		fakeRunnable    runtimefakes.FakeRunner
    23  
    24  		fakeStdout, fakeStderr io.Writer
    25  
    26  		checkVersions []atc.Version
    27  
    28  		source  atc.Source
    29  		params  atc.Params
    30  		version atc.Version
    31  
    32  		resource resource.Resource
    33  
    34  		checkErr error
    35  	)
    36  
    37  	BeforeEach(func() {
    38  		ctx = context.Background()
    39  
    40  		source = atc.Source{"some": "source"}
    41  		version = atc.Version{"some": "version"}
    42  		params = atc.Params{"some": "params"}
    43  
    44  		someProcessSpec.Path = "some/fake/path"
    45  		someProcessSpec.Args = []string{"some", "args"}
    46  
    47  		fakeStdout = bytes.NewBufferString("out")
    48  		someProcessSpec.StdoutWriter = fakeStdout
    49  
    50  		fakeStderr = bytes.NewBufferString("err")
    51  		someProcessSpec.StderrWriter = fakeStderr
    52  
    53  		resource = resourceFactory.NewResource(source, params, version)
    54  	})
    55  
    56  	JustBeforeEach(func() {
    57  		checkVersions, checkErr = resource.Check(ctx, someProcessSpec, &fakeRunnable)
    58  	})
    59  
    60  	Context("when Runnable -> RunScript succeeds", func() {
    61  		BeforeEach(func() {
    62  			fakeRunnable.RunScriptReturns(nil)
    63  		})
    64  
    65  		It("Invokes Runnable -> RunScript with the correct arguments", func() {
    66  			actualCtx, actualSpecPath, actualArgs,
    67  				actualInput, actualVersionResultRef, actualSpecStdErrWriter,
    68  				actualRecoverableBool := fakeRunnable.RunScriptArgsForCall(0)
    69  
    70  			signature, err := resource.Signature()
    71  			Expect(err).ToNot(HaveOccurred())
    72  
    73  			Expect(actualCtx).To(Equal(ctx))
    74  			Expect(actualSpecPath).To(Equal(someProcessSpec.Path))
    75  			Expect(actualArgs).To(Equal(someProcessSpec.Args))
    76  			Expect(actualInput).To(Equal(signature))
    77  			Expect(actualVersionResultRef).To(Equal(&checkVersions))
    78  			Expect(actualSpecStdErrWriter).To(Equal(fakeStderr))
    79  			Expect(actualRecoverableBool).To(BeFalse())
    80  		})
    81  
    82  		It("doesnt return an error", func() {
    83  			Expect(checkErr).To(BeNil())
    84  		})
    85  	})
    86  
    87  	Context("when Runnable -> RunScript returns an error", func() {
    88  		var disasterErr = errors.New("there was an issue")
    89  		BeforeEach(func() {
    90  			fakeRunnable.RunScriptReturns(disasterErr)
    91  		})
    92  		It("returns the error", func() {
    93  			Expect(checkErr).To(Equal(disasterErr))
    94  		})
    95  	})
    96  
    97  })