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 })