func (t *targetVerifier) VerifyBlobTarget(host string, port uint16, accessKey, secretKey, bucketName string) (bool, error) { s3Auth := aws.Auth{ AccessKey: accessKey, SecretKey: secretKey, } config := config.New(persister.NewMemPersister()) config.SetBlobTarget(host, port, accessKey, secretKey, bucketName) s3S3 := s3.New(s3Auth, awsRegion, &http.Client{ Transport: &http.Transport{ Proxy: config.BlobTarget().Proxy(), Dial: (&net.Dialer{ Timeout: 5 * time.Second, KeepAlive: 5 * time.Second, }).Dial, TLSHandshakeTimeout: 10 * time.Second, }, }) s3S3.AttemptStrategy = aws.AttemptStrategy{} blobStore := blob_store.NewBlobStore(config, s3S3) blobBucket := blobStore.Bucket(config.BlobTarget().BucketName) if _, err := blobBucket.List("", "/", "", 1); err != nil { if httpError, ok := err.(*s3.Error); ok { switch httpError.StatusCode { case 403: return false, fmt.Errorf("unauthorized") default: return false, fmt.Errorf("%s", httpError) } } return false, fmt.Errorf("blob target is down: %s", err) } return true, nil }
stdinReader *io.PipeReader stdinWriter *io.PipeWriter outputBuffer *gbytes.Buffer terminalUI terminal.UI config *config_package.Config fakeTargetVerifier *fake_target_verifier.FakeTargetVerifier fakeExitHandler *fake_exit_handler.FakeExitHandler ) BeforeEach(func() { stdinReader, stdinWriter = io.Pipe() outputBuffer = gbytes.NewBuffer() fakeTargetVerifier = &fake_target_verifier.FakeTargetVerifier{} fakeExitHandler = new(fake_exit_handler.FakeExitHandler) terminalUI = terminal.NewUI(stdinReader, outputBuffer, nil) config = config_package.New(persister.NewMemPersister()) }) Describe("TargetBlobCommand", func() { var targetBlobCommand cli.Command BeforeEach(func() { commandFactory := command_factory.NewConfigCommandFactory(config, terminalUI, fakeTargetVerifier, fakeExitHandler) targetBlobCommand = commandFactory.MakeTargetBlobCommand() }) Context("displaying the blob target", func() { It("outputs the current target", func() { config.SetBlobTarget("192.168.11.11", 8980, "datkeyyo", "supersecretJKJK", "bucket") config.Save()
var _ = Describe("CliAppFactory", func() { var ( fakeTargetVerifier *fake_target_verifier.FakeTargetVerifier fakeExitHandler *fake_exit_handler.FakeExitHandler outputBuffer *gbytes.Buffer terminalUI terminal.UI cliApp *cli.App cliConfig *config.Config latticeVersion, diegoVersion string ) BeforeEach(func() { fakeTargetVerifier = &fake_target_verifier.FakeTargetVerifier{} fakeExitHandler = new(fake_exit_handler.FakeExitHandler) memPersister := persister.NewMemPersister() outputBuffer = gbytes.NewBuffer() terminalUI = terminal.NewUI(nil, outputBuffer, nil) cliConfig = config.New(memPersister) latticeVersion, diegoVersion = "v0.2.Test", "0.12345.0" }) JustBeforeEach(func() { cliApp = cli_app_factory.MakeCliApp( diegoVersion, latticeVersion, "~/", fakeExitHandler, cliConfig, lager.NewLogger("test"), fakeTargetVerifier,
subCommandTemplate := `NAME: {{.Name}} - {{.Usage}} USAGE: {{.Name}} command{{if .Flags}} [command options]{{end}} [arguments...] ` BeforeEach(func() { outputBuffer = gbytes.NewBuffer() fakeReceptorClientCreator = &fake_receptor_client_creator.FakeCreator{} cliApp = cli_app_factory.MakeCliApp( "", "", "~/", nil, config.New(persister.NewMemPersister()), nil, fakeReceptorClientCreator, nil, terminal.NewUI(nil, outputBuffer, nil), ) }) Describe("ShowHelp", func() { It("shows help for all commands", func() { Expect(cliApp.Commands).NotTo(BeEmpty()) cli_app_factory.ShowHelp(outputBuffer, dummyTemplate, cliApp) outputBytes, err := ioutil.ReadAll(outputBuffer)
configPersister persister.Persister fakeTargetVerifier *fake_target_verifier.FakeTargetVerifier fakeBlobStoreVerifier *fake_blob_store_verifier.FakeBlobStoreVerifier fakeExitHandler *fake_exit_handler.FakeExitHandler fakePasswordReader *fake_password_reader.FakePasswordReader ) BeforeEach(func() { stdinReader, stdinWriter = io.Pipe() outputBuffer = gbytes.NewBuffer() fakeExitHandler = &fake_exit_handler.FakeExitHandler{} fakePasswordReader = &fake_password_reader.FakePasswordReader{} terminalUI = terminal.NewUI(stdinReader, outputBuffer, fakePasswordReader) fakeTargetVerifier = &fake_target_verifier.FakeTargetVerifier{} fakeBlobStoreVerifier = &fake_blob_store_verifier.FakeBlobStoreVerifier{} configPersister = persister.NewMemPersister() config = config_package.New(configPersister) }) Describe("TargetCommand", func() { var targetCommand cli.Command verifyOldTargetStillSet := func() { newConfig := config_package.New(configPersister) Expect(newConfig.Load()).To(Succeed()) Expect(newConfig.Receptor()).To(Equal("http://*****:*****@receptor.oldtarget.com")) } BeforeEach(func() { commandFactory := command_factory.NewConfigCommandFactory(config, terminalUI, fakeTargetVerifier, fakeBlobStoreVerifier, fakeExitHandler)
) var _ = Describe("HelpHelpers", func() { var ( fakeTargetVerifier *fake_target_verifier.FakeTargetVerifier outputBuffer *gbytes.Buffer terminalUI terminal.UI cliConfig *config.Config cliApp *cli.App ) BeforeEach(func() { fakeTargetVerifier = &fake_target_verifier.FakeTargetVerifier{} outputBuffer = gbytes.NewBuffer() terminalUI = terminal.NewUI(nil, outputBuffer, nil) cliConfig = config.New(persister.NewMemPersister()) cliApp = cli_app_factory.MakeCliApp( "", "~/", nil, cliConfig, nil, fakeTargetVerifier, terminalUI, ) }) Describe("MatchArgAndFlags", func() { It("Checks for badflag", func() { cliAppArgs := []string{"ltc", "create", "--badflag"} flags := main.GetCommandFlags(cliApp, cliAppArgs[1])