"github.com/cloudfoundry-incubator/ltc/blob_store/s3_blob_store" config_package "github.com/cloudfoundry-incubator/ltc/config" ) var _ = Describe("S3BlobStore", func() { var ( verifier *s3_blob_store.Verifier fakeServer *ghttp.Server config *config_package.Config ) BeforeEach(func() { fakeServer = ghttp.NewServer() verifier = &s3_blob_store.Verifier{fakeServer.URL()} config = config_package.New(nil) config.SetS3BlobStore("some-access-key", "some-secret-key", "bucket", "some-region") }) Describe("Verify", func() { Context("when the blob store credentials are valid", func() { It("returns authorized as true", func() { responseBody := ` <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>bucket</Name> <Prefix/> <Marker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> </ListBucketResult> `
Context("when no blob store username is set", func() { BeforeEach(func() { config.SetBlobStore("blobtarget.com", "8444", "", "") Expect(config.Save()).To(Succeed()) }) It("only prints the blob store host", func() { Expect(outputBuffer).To(test_helpers.SayLine("Droplet store:\tblobtarget.com:8444")) }) }) }) Context("when a S3 blob store is targeted", func() { BeforeEach(func() { config.SetS3BlobStore("access", "secret", "bucket", "region") Expect(config.Save()).To(Succeed()) }) It("outputs the s3 bucket and region", func() { Expect(outputBuffer).To(test_helpers.SayLine("Droplet store:\ts3://bucket (region)")) }) }) }) Context("when --domain is pased", func() { JustBeforeEach(func() { test_helpers.ExecuteCommandWithArgs(targetCommand, []string{"--domain"}) }) It("outputs just the target host", func() {
var config *config_package.Config BeforeEach(func() { config = config_package.New(nil) config.SetBlobStore("some-host", "some-port", "some-user", "some-password") }) It("returns a new DavBlobStore Verifier", func() { verifier.Verify(config) Expect(fakeDAVVerifier.VerifyCallCount()).To(Equal(1)) Expect(fakeS3Verifier.VerifyCallCount()).To(Equal(0)) }) }) Context("when an s3 blob store is targeted", func() { var config *config_package.Config BeforeEach(func() { config = config_package.New(nil) config.SetS3BlobStore("", "", "some-bucket-name", "") }) It("returns a new S3BlobStore Verifier", func() { verifier.Verify(config) Expect(fakeS3Verifier.VerifyCallCount()).To(Equal(1)) Expect(fakeDAVVerifier.VerifyCallCount()).To(Equal(0)) }) }) }) })
It("returns errors from loading the config", func() { testPersister.err = errors.New("Error") err := testConfig.Load() Expect(err).To(MatchError("Error")) }) }) Describe("ActiveBlobStore", func() { It("defaults to 'dav'", func() { Expect(testConfig.ActiveBlobStore().String()).To(Equal("dav")) }) It("reports the active blobstore", func() { testConfig.SetS3BlobStore("some-access-key", "some-secret-key", "some-bucket-name", "some-s3-region") Expect(testConfig.ActiveBlobStore().String()).To(Equal("s3")) }) }) Describe("TargetBlob", func() { It("sets the blob target", func() { testConfig.SetBlobStore("some-host", "7474", "some-username", "some-password") Expect(testConfig.BlobStore()).To(Equal(config.BlobStoreConfig{ Host: "some-host", Port: "7474", Username: "******", Password: "******", })) })