github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/cf/commands/serviceauthtoken/service_auth_tokens_test.go (about)

     1  package serviceauthtoken_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/cf/api/apifakes"
     5  	"code.cloudfoundry.org/cli/cf/commandregistry"
     6  	"code.cloudfoundry.org/cli/cf/configuration/coreconfig"
     7  	"code.cloudfoundry.org/cli/cf/flags"
     8  	"code.cloudfoundry.org/cli/cf/models"
     9  	"code.cloudfoundry.org/cli/cf/requirements"
    10  	"code.cloudfoundry.org/cli/cf/requirements/requirementsfakes"
    11  	testcmd "code.cloudfoundry.org/cli/cf/util/testhelpers/commands"
    12  	testconfig "code.cloudfoundry.org/cli/cf/util/testhelpers/configuration"
    13  	testterm "code.cloudfoundry.org/cli/cf/util/testhelpers/terminal"
    14  
    15  	"code.cloudfoundry.org/cli/cf/commands/serviceauthtoken"
    16  	. "code.cloudfoundry.org/cli/cf/util/testhelpers/matchers"
    17  	. "github.com/onsi/ginkgo"
    18  	. "github.com/onsi/gomega"
    19  )
    20  
    21  var _ = Describe("service-auth-tokens command", func() {
    22  	var (
    23  		ui                  *testterm.FakeUI
    24  		configRepo          coreconfig.Repository
    25  		authTokenRepo       *apifakes.OldFakeAuthTokenRepo
    26  		requirementsFactory *requirementsfakes.FakeFactory
    27  		deps                commandregistry.Dependency
    28  	)
    29  
    30  	updateCommandDependency := func(pluginCall bool) {
    31  		deps.UI = ui
    32  		deps.RepoLocator = deps.RepoLocator.SetServiceAuthTokenRepository(authTokenRepo)
    33  		deps.Config = configRepo
    34  		commandregistry.Commands.SetCommand(commandregistry.Commands.FindCommand("service-auth-tokens").SetDependency(deps, pluginCall))
    35  	}
    36  
    37  	BeforeEach(func() {
    38  		ui = &testterm.FakeUI{Inputs: []string{"y"}}
    39  		authTokenRepo = new(apifakes.OldFakeAuthTokenRepo)
    40  		configRepo = testconfig.NewRepositoryWithDefaults()
    41  		requirementsFactory = new(requirementsfakes.FakeFactory)
    42  	})
    43  
    44  	runCommand := func(args ...string) bool {
    45  		return testcmd.RunCLICommand("service-auth-tokens", args, requirementsFactory, updateCommandDependency, false, ui)
    46  	}
    47  
    48  	Describe("requirements", func() {
    49  		It("fails when not logged in", func() {
    50  			requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"})
    51  			Expect(runCommand()).To(BeFalse())
    52  		})
    53  
    54  		Context("when arguments are provided", func() {
    55  			var cmd commandregistry.Command
    56  			var flagContext flags.FlagContext
    57  
    58  			BeforeEach(func() {
    59  				cmd = &serviceauthtoken.ListServiceAuthTokens{}
    60  				cmd.SetDependency(deps, false)
    61  				flagContext = flags.NewFlagContext(cmd.MetaData().Flags)
    62  			})
    63  
    64  			It("should fail with usage", func() {
    65  				flagContext.Parse("blahblah")
    66  
    67  				reqs, err := cmd.Requirements(requirementsFactory, flagContext)
    68  				Expect(err).NotTo(HaveOccurred())
    69  
    70  				err = testcmd.RunRequirements(reqs)
    71  				Expect(err).To(HaveOccurred())
    72  				Expect(err.Error()).To(ContainSubstring("Incorrect Usage"))
    73  				Expect(err.Error()).To(ContainSubstring("No argument required"))
    74  			})
    75  		})
    76  
    77  		It("requires CC API version 2.47 or greater", func() {
    78  			requirementsFactory.NewMaxAPIVersionRequirementReturns(requirements.Failing{Message: "max api 2.47"})
    79  			requirementsFactory.NewLoginRequirementReturns(requirements.Passing{})
    80  			Expect(runCommand()).To(BeFalse())
    81  		})
    82  	})
    83  
    84  	Context("when logged in and some service auth tokens exist", func() {
    85  		BeforeEach(func() {
    86  			requirementsFactory.NewLoginRequirementReturns(requirements.Passing{})
    87  			requirementsFactory.NewMaxAPIVersionRequirementReturns(requirements.Passing{})
    88  
    89  			authTokenRepo.FindAllAuthTokens = []models.ServiceAuthTokenFields{
    90  				{Label: "a label", Provider: "a provider"},
    91  				{Label: "a second label", Provider: "a second provider"},
    92  			}
    93  		})
    94  
    95  		It("shows you the service auth tokens", func() {
    96  			runCommand()
    97  
    98  			Expect(ui.Outputs()).To(ContainSubstrings(
    99  				[]string{"Getting service auth tokens as", "my-user"},
   100  				[]string{"OK"},
   101  				[]string{"label", "provider"},
   102  				[]string{"a label", "a provider"},
   103  				[]string{"a second label", "a second provider"},
   104  			))
   105  		})
   106  	})
   107  })