options := map[string]interface{}{} blobstore := NewExternalBlobstore("fake-provider", options, fs, runner, uuidGen, configPath) err := blobstore.Validate() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("not found in PATH")) }) }) Describe("Get", func() { It("external get", func() { tempFile, err := fs.TempFile("bosh-blobstore-external-TestGet") Expect(err).ToNot(HaveOccurred()) fs.ReturnTempFile = tempFile defer fs.RemoveAll(tempFile.Name()) fileName, err := blobstore.Get("fake-blob-id", "") Expect(err).ToNot(HaveOccurred()) Expect(len(runner.RunCommands)).To(Equal(1)) Expect(runner.RunCommands[0]).To(Equal([]string{ "bosh-blobstore-fake-provider", "-c", configPath, "get", "fake-blob-id", tempFile.Name(), })) Expect(fileName).To(Equal(tempFile.Name())) Expect(fs.FileExists(tempFile.Name())).To(BeTrue()) })
var ( cmdRunner *fakesys.FakeCmdRunner fs *fakesys.FakeFileSystem deployer Deployer ) BeforeEach(func() { fs = fakesys.NewFakeFileSystem() cmdRunner = fakesys.NewFakeCmdRunner() directorInfo := bltaction.DirectorInfo{ UUID: "fake-director-uuid", URL: "fake-director-url", } boshCmd := boshsys.Command{Name: "bosh"} fs.ReturnTempFile = fakesys.NewFakeFile("cli-config-path", fs) cliRunner := bltclirunner.NewRunner(boshCmd, cmdRunner, fs) cliRunner.Configure() renderer := NewRenderer(fs) cmdRunner.AddCmdResult("bosh -n -c cli-config-path deploy", fakesys.FakeCmdResult{ Stdout: "Task 15 done", }) cmdRunner.AddCmdResult("bosh -n -c cli-config-path deploy", fakesys.FakeCmdResult{ Stdout: "Task 20 done", }) parameters := bftconfig.Parameters{ NameLength: []int{5, 10},
Expect(err).ToNot(HaveOccurred()) Expect(fakeStage.PerformCalls[0].Name).To(Equal("Downloading fake-description")) Expect(fakeStage.PerformCalls[0].SkipError.Error()).To(Equal("Found in local cache: Already downloaded")) }) }) Context("when tarball is not present in cache", func() { var ( tempDownloadFilePath string ) BeforeEach(func() { tempDownloadFile, err := ioutil.TempFile("", "temp-download-file") Expect(err).ToNot(HaveOccurred()) fs.ReturnTempFile = tempDownloadFile tempDownloadFilePath = tempDownloadFile.Name() sha1Calculator.SetCalculateBehavior(map[string]fakebicrypto.CalculateInput{ tempDownloadFilePath: {Sha1: "fake-sha1"}, }) }) AfterEach(func() { os.RemoveAll(tempDownloadFilePath) }) Context("when downloading succeds", func() { BeforeEach(func() { httpClient.SetGetBehavior("fake-body", 200, nil) httpClient.SetGetBehavior("fake-body", 200, nil) httpClient.SetGetBehavior("fake-body", 200, nil)
blobstore Blobstore ) BeforeEach(func() { fakeDavClient = fakeboshdavcli.NewFakeClient() fakeUUIDGenerator = fakeuuid.NewFakeGenerator() fs = fakesys.NewFakeFileSystem() logger := boshlog.NewLogger(boshlog.LevelNone) blobstore = NewBlobstore(fakeDavClient, fakeUUIDGenerator, fs, logger) }) Describe("Get", func() { BeforeEach(func() { fakeFile := fakesys.NewFakeFile("fake-destination-path", fs) fs.ReturnTempFile = fakeFile }) It("gets the blob from the blobstore", func() { fakeDavClient.GetContents = ioutil.NopCloser(strings.NewReader("fake-content")) localBlob, err := blobstore.Get("fake-blob-id") Expect(err).ToNot(HaveOccurred()) defer localBlob.DeleteSilently() Expect(fakeDavClient.GetPath).To(Equal("fake-blob-id")) }) It("saves the blob to the destination path", func() { fakeDavClient.GetContents = ioutil.NopCloser(strings.NewReader("fake-content"))