github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/allow_space_ssh_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror"
     7  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action"
     8  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/commandfakes"
     9  	. "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7"
    10  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/v7fakes"
    11  	"github.com/LukasHeimann/cloudfoundrycli/v8/util/configv3"
    12  	"github.com/LukasHeimann/cloudfoundrycli/v8/util/ui"
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  	. "github.com/onsi/gomega/gbytes"
    16  )
    17  
    18  var _ = Describe("allow-space-ssh Command", func() {
    19  	var (
    20  		cmd             AllowSpaceSSHCommand
    21  		testUI          *ui.UI
    22  		fakeConfig      *commandfakes.FakeConfig
    23  		fakeSharedActor *commandfakes.FakeSharedActor
    24  		fakeActor       *v7fakes.FakeActor
    25  
    26  		binaryName      string
    27  		currentUserName string
    28  		executeErr      error
    29  	)
    30  
    31  	BeforeEach(func() {
    32  		testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer())
    33  		fakeConfig = new(commandfakes.FakeConfig)
    34  		fakeSharedActor = new(commandfakes.FakeSharedActor)
    35  		fakeActor = new(v7fakes.FakeActor)
    36  
    37  		cmd = AllowSpaceSSHCommand{
    38  			BaseCommand: BaseCommand{
    39  				UI:          testUI,
    40  				Config:      fakeConfig,
    41  				SharedActor: fakeSharedActor,
    42  				Actor:       fakeActor,
    43  			},
    44  		}
    45  
    46  		cmd.RequiredArgs.Space = "some-space"
    47  
    48  		binaryName = "faceman"
    49  		fakeConfig.BinaryNameReturns(binaryName)
    50  		currentUserName = "some-user"
    51  		fakeActor.GetCurrentUserReturns(configv3.User{Name: currentUserName}, nil)
    52  	})
    53  
    54  	JustBeforeEach(func() {
    55  		executeErr = cmd.Execute(nil)
    56  	})
    57  
    58  	When("checking target fails", func() {
    59  		BeforeEach(func() {
    60  			fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})
    61  		})
    62  
    63  		It("returns an error", func() {
    64  			Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}))
    65  
    66  			Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1))
    67  			checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0)
    68  			Expect(checkTargetedOrg).To(BeTrue())
    69  			Expect(checkTargetedSpace).To(BeFalse())
    70  		})
    71  	})
    72  
    73  	When("checking the current user fails", func() {
    74  		BeforeEach(func() {
    75  			fakeActor.GetCurrentUserReturns(configv3.User{}, errors.New("uh oh"))
    76  		})
    77  
    78  		It("returns the error", func() {
    79  			Expect(executeErr).To(MatchError("uh oh"))
    80  		})
    81  	})
    82  
    83  	When("the user is logged in", func() {
    84  		When("no errors occur", func() {
    85  			BeforeEach(func() {
    86  				fakeActor.UpdateSpaceFeatureReturns(
    87  					v7action.Warnings{"some-warning"},
    88  					nil,
    89  				)
    90  			})
    91  
    92  			It("allows ssh for the space", func() {
    93  				Expect(executeErr).ToNot(HaveOccurred())
    94  
    95  				Expect(fakeActor.UpdateSpaceFeatureCallCount()).To(Equal(1))
    96  
    97  				Expect(testUI.Out).To(Say("Enabling ssh support for space %s as %s...", cmd.RequiredArgs.Space, currentUserName))
    98  				Expect(testUI.Out).To(Say("OK"))
    99  				Expect(testUI.Err).To(Say("some-warning"))
   100  			})
   101  		})
   102  
   103  		When("ssh is already allowed", func() {
   104  			BeforeEach(func() {
   105  				fakeActor.UpdateSpaceFeatureReturns(
   106  					v7action.Warnings{"some-warning"},
   107  					actionerror.SpaceSSHAlreadyEnabledError{Space: "some-space"},
   108  				)
   109  			})
   110  
   111  			It("allows ssh for the space", func() {
   112  				Expect(executeErr).ToNot(HaveOccurred())
   113  
   114  				Expect(fakeActor.UpdateSpaceFeatureCallCount()).To(Equal(1))
   115  
   116  				Expect(testUI.Out).To(Say("Enabling ssh support for space %s as %s...", cmd.RequiredArgs.Space, currentUserName))
   117  				Expect(testUI.Out).To(Say("ssh support for space '%s' is already enabled.", cmd.RequiredArgs.Space))
   118  				Expect(testUI.Out).To(Say("OK"))
   119  				Expect(testUI.Err).To(Say("some-warning"))
   120  			})
   121  		})
   122  
   123  		When("an error occurs while enabling SSH", func() {
   124  			BeforeEach(func() {
   125  				fakeActor.UpdateSpaceFeatureReturns(
   126  					v7action.Warnings{"some-warning"},
   127  					errors.New("allow-ssh-error"),
   128  				)
   129  			})
   130  
   131  			It("does not display OK and returns the error", func() {
   132  				Expect(testUI.Out).NotTo(Say("OK"))
   133  				Expect(testUI.Err).To(Say("some-warning"))
   134  				Expect(executeErr).To(MatchError("allow-ssh-error"))
   135  			})
   136  		})
   137  	})
   138  })