github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/unbind_running_group_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("unbind-running-security-group Command", func() {
    19  	var (
    20  		cmd             UnbindRunningSecurityGroupCommand
    21  		testUI          *ui.UI
    22  		fakeConfig      *commandfakes.FakeConfig
    23  		fakeSharedActor *commandfakes.FakeSharedActor
    24  		fakeActor       *v7fakes.FakeActor
    25  		binaryName      string
    26  		executeErr      error
    27  	)
    28  
    29  	BeforeEach(func() {
    30  		testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer())
    31  		fakeConfig = new(commandfakes.FakeConfig)
    32  		fakeSharedActor = new(commandfakes.FakeSharedActor)
    33  		fakeActor = new(v7fakes.FakeActor)
    34  
    35  		cmd = UnbindRunningSecurityGroupCommand{
    36  			BaseCommand: BaseCommand{
    37  				UI:          testUI,
    38  				Config:      fakeConfig,
    39  				SharedActor: fakeSharedActor,
    40  				Actor:       fakeActor,
    41  			},
    42  		}
    43  
    44  		binaryName = "faceman"
    45  		fakeConfig.BinaryNameReturns(binaryName)
    46  
    47  		cmd.RequiredArgs.SecurityGroup = "some-security-group"
    48  
    49  		fakeActor.GetCurrentUserReturns(
    50  			configv3.User{Name: "some-user"},
    51  			nil)
    52  	})
    53  
    54  	JustBeforeEach(func() {
    55  		executeErr = cmd.Execute(nil)
    56  	})
    57  
    58  	When("the command executes successfully", func() {
    59  		BeforeEach(func() {
    60  			fakeActor.UpdateSecurityGroupGloballyEnabledReturns(
    61  				v7action.Warnings{"get security group warning"},
    62  				nil)
    63  		})
    64  
    65  		It("unbinds the security group from being available globally for running", func() {
    66  			Expect(executeErr).NotTo(HaveOccurred())
    67  			Expect(testUI.Out).To(Say("Unbinding security group %s from defaults for running as some-user...", cmd.RequiredArgs.SecurityGroup))
    68  			Expect(testUI.Out).To(Say("OK"))
    69  			Expect(testUI.Out).To(Say(`TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart \(for running\) or restage \(for staging\) to apply to existing applications\.`))
    70  
    71  			Expect(testUI.Err).To(Say("get security group warning"))
    72  		})
    73  	})
    74  
    75  	When("the security group does not exist", func() {
    76  		BeforeEach(func() {
    77  			fakeActor.UpdateSecurityGroupGloballyEnabledReturns(
    78  				v7action.Warnings{"update security group warning"},
    79  				actionerror.SecurityGroupNotFoundError{Name: cmd.RequiredArgs.SecurityGroup})
    80  		})
    81  
    82  		It("displays OK, warning and exits without error", func() {
    83  			Expect(testUI.Err).To(Say("update security group warning"))
    84  			Expect(testUI.Err).To(Say("Security group '%s' not found.", cmd.RequiredArgs.SecurityGroup))
    85  			Expect(testUI.Out).To(Say("OK"))
    86  			Expect(executeErr).NotTo(HaveOccurred())
    87  		})
    88  	})
    89  
    90  	When("updating the security group fails", func() {
    91  		BeforeEach(func() {
    92  			fakeActor.UpdateSecurityGroupGloballyEnabledReturns(
    93  				v7action.Warnings{"update security group warning"},
    94  				errors.New("update security group error"))
    95  		})
    96  
    97  		It("returns the error", func() {
    98  			Expect(testUI.Err).To(Say("update security group warning"))
    99  			Expect(executeErr).To(MatchError("update security group error"))
   100  		})
   101  	})
   102  })