github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/org_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	"code.cloudfoundry.org/cli/actor/v7action"
     8  	"code.cloudfoundry.org/cli/command/commandfakes"
     9  	. "code.cloudfoundry.org/cli/command/v7"
    10  	"code.cloudfoundry.org/cli/command/v7/v7fakes"
    11  	"code.cloudfoundry.org/cli/util/configv3"
    12  	"code.cloudfoundry.org/cli/util/ui"
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  	. "github.com/onsi/gomega/gbytes"
    16  )
    17  
    18  var _ = Describe("org Command", func() {
    19  	var (
    20  		cmd             OrgCommand
    21  		testUI          *ui.UI
    22  		fakeConfig      *commandfakes.FakeConfig
    23  		fakeSharedActor *commandfakes.FakeSharedActor
    24  		fakeActor       *v7fakes.FakeOrgActor
    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.FakeOrgActor)
    34  
    35  		cmd = OrgCommand{
    36  			UI:          testUI,
    37  			Config:      fakeConfig,
    38  			SharedActor: fakeSharedActor,
    39  			Actor:       fakeActor,
    40  		}
    41  
    42  		binaryName = "faceman"
    43  		fakeConfig.BinaryNameReturns(binaryName)
    44  		cmd.RequiredArgs.Organization = "some-org"
    45  	})
    46  
    47  	JustBeforeEach(func() {
    48  		executeErr = cmd.Execute(nil)
    49  	})
    50  
    51  	When("checking the target fails", func() {
    52  		BeforeEach(func() {
    53  			fakeSharedActor.CheckTargetReturns(
    54  				actionerror.NotLoggedInError{BinaryName: binaryName})
    55  		})
    56  
    57  		It("returns an error", func() {
    58  			Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName}))
    59  
    60  			Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1))
    61  			targetedOrganizationRequired, targetedSpaceRequired := fakeSharedActor.CheckTargetArgsForCall(0)
    62  			Expect(targetedOrganizationRequired).To(Equal(false))
    63  			Expect(targetedSpaceRequired).To(Equal(false))
    64  		})
    65  	})
    66  
    67  	When("the --guid flag is provided", func() {
    68  		BeforeEach(func() {
    69  			cmd.GUID = true
    70  		})
    71  
    72  		When("no errors occur", func() {
    73  			BeforeEach(func() {
    74  				fakeActor.GetOrganizationByNameReturns(
    75  					v7action.Organization{GUID: "some-org-guid"},
    76  					v7action.Warnings{"warning-1", "warning-2"},
    77  					nil)
    78  			})
    79  
    80  			It("displays the org guid and outputs all warnings", func() {
    81  				Expect(executeErr).ToNot(HaveOccurred())
    82  
    83  				Expect(testUI.Out).To(Say("some-org-guid"))
    84  				Expect(testUI.Err).To(Say("warning-1"))
    85  				Expect(testUI.Err).To(Say("warning-2"))
    86  
    87  				Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1))
    88  				orgName := fakeActor.GetOrganizationByNameArgsForCall(0)
    89  				Expect(orgName).To(Equal("some-org"))
    90  			})
    91  		})
    92  
    93  		When("getting the org returns an error", func() {
    94  			When("the error is translatable", func() {
    95  				BeforeEach(func() {
    96  					fakeActor.GetOrganizationByNameReturns(
    97  						v7action.Organization{},
    98  						v7action.Warnings{"warning-1", "warning-2"},
    99  						actionerror.OrganizationNotFoundError{Name: "some-org"})
   100  				})
   101  
   102  				It("returns a translatable error and outputs all warnings", func() {
   103  					Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: "some-org"}))
   104  
   105  					Expect(testUI.Err).To(Say("warning-1"))
   106  					Expect(testUI.Err).To(Say("warning-2"))
   107  				})
   108  			})
   109  
   110  			When("the error is not translatable", func() {
   111  				var expectedErr error
   112  
   113  				BeforeEach(func() {
   114  					expectedErr = errors.New("get org error")
   115  					fakeActor.GetOrganizationByNameReturns(
   116  						v7action.Organization{},
   117  						v7action.Warnings{"warning-1", "warning-2"},
   118  						expectedErr)
   119  				})
   120  
   121  				It("returns the error and all warnings", func() {
   122  					Expect(executeErr).To(MatchError(expectedErr))
   123  
   124  					Expect(testUI.Err).To(Say("warning-1"))
   125  					Expect(testUI.Err).To(Say("warning-2"))
   126  				})
   127  			})
   128  		})
   129  	})
   130  
   131  	When("the --guid flag is not provided", func() {
   132  		When("no errors occur", func() {
   133  			BeforeEach(func() {
   134  				fakeConfig.CurrentUserReturns(
   135  					configv3.User{
   136  						Name: "some-user",
   137  					},
   138  					nil)
   139  
   140  				fakeActor.GetOrganizationSummaryByNameReturns(
   141  					v7action.OrganizationSummary{
   142  						Organization: v7action.Organization{
   143  							Name: "some-org",
   144  							GUID: "some-org-guid",
   145  						},
   146  						DomainNames: []string{
   147  							"a-shared.com",
   148  							"b-private.com",
   149  							"c-shared.com",
   150  							"d-private.com",
   151  						},
   152  						SpaceNames: []string{
   153  							"space1",
   154  							"space2",
   155  						},
   156  						DefaultIsolationSegmentGUID: "default-isolation-segment-guid",
   157  					},
   158  					v7action.Warnings{"warning-1", "warning-2"},
   159  					nil)
   160  			})
   161  
   162  			When("API version is above isolation segments minimum version", func() {
   163  				When("something", func() {
   164  					BeforeEach(func() {
   165  						fakeActor.GetIsolationSegmentsByOrganizationReturns(
   166  							[]v7action.IsolationSegment{
   167  								{
   168  									Name: "isolation-segment-1",
   169  									GUID: "default-isolation-segment-guid",
   170  								}, {
   171  									Name: "isolation-segment-2",
   172  									GUID: "some-other-isolation-segment-guid",
   173  								},
   174  							},
   175  							v7action.Warnings{"warning-3", "warning-4"},
   176  							nil)
   177  					})
   178  
   179  					It("displays warnings and a table with org domains, spaces and isolation segments", func() {
   180  						Expect(executeErr).To(BeNil())
   181  
   182  						Expect(testUI.Out).To(Say(`Getting info for org %s as some-user\.\.\.`, cmd.RequiredArgs.Organization))
   183  						Expect(testUI.Err).To(Say("warning-1"))
   184  						Expect(testUI.Err).To(Say("warning-2"))
   185  						Expect(testUI.Err).To(Say("warning-3"))
   186  						Expect(testUI.Err).To(Say("warning-4"))
   187  
   188  						Expect(testUI.Out).To(Say(`name:\s+%s`, cmd.RequiredArgs.Organization))
   189  						Expect(testUI.Out).To(Say(`domains:\s+a-shared.com, b-private.com, c-shared.com, d-private.com`))
   190  						Expect(testUI.Out).To(Say(`spaces:\s+space1, space2`))
   191  						Expect(testUI.Out).To(Say(`isolation segments:\s+isolation-segment-1 \(default\), isolation-segment-2`))
   192  
   193  						Expect(fakeConfig.CurrentUserCallCount()).To(Equal(1))
   194  
   195  						Expect(fakeActor.GetOrganizationSummaryByNameCallCount()).To(Equal(1))
   196  						orgName := fakeActor.GetOrganizationSummaryByNameArgsForCall(0)
   197  						Expect(orgName).To(Equal("some-org"))
   198  
   199  						Expect(fakeActor.GetIsolationSegmentsByOrganizationCallCount()).To(Equal(1))
   200  						orgGuid := fakeActor.GetIsolationSegmentsByOrganizationArgsForCall(0)
   201  						Expect(orgGuid).To(Equal("some-org-guid"))
   202  					})
   203  				})
   204  
   205  				When("getting the org isolation segments returns an error", func() {
   206  					var expectedErr error
   207  
   208  					BeforeEach(func() {
   209  						expectedErr = errors.New("get org iso segs error")
   210  						fakeActor.GetIsolationSegmentsByOrganizationReturns(
   211  							nil,
   212  							v7action.Warnings{"get iso seg warning"},
   213  							expectedErr)
   214  					})
   215  
   216  					It("returns the error and all warnings", func() {
   217  						Expect(executeErr).To(MatchError(expectedErr))
   218  						Expect(testUI.Err).To(Say("get iso seg warning"))
   219  					})
   220  				})
   221  			})
   222  		})
   223  
   224  		When("getting the current user returns an error", func() {
   225  			var expectedErr error
   226  
   227  			BeforeEach(func() {
   228  				expectedErr = errors.New("getting current user error")
   229  				fakeConfig.CurrentUserReturns(
   230  					configv3.User{},
   231  					expectedErr)
   232  			})
   233  
   234  			It("returns the error", func() {
   235  				Expect(executeErr).To(MatchError(expectedErr))
   236  			})
   237  		})
   238  
   239  		When("getting the org summary returns an error", func() {
   240  			When("the error is translatable", func() {
   241  				BeforeEach(func() {
   242  					fakeActor.GetOrganizationSummaryByNameReturns(
   243  						v7action.OrganizationSummary{},
   244  						v7action.Warnings{"warning-1", "warning-2"},
   245  						actionerror.OrganizationNotFoundError{Name: "some-org"})
   246  				})
   247  
   248  				It("returns a translatable error and outputs all warnings", func() {
   249  					Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: "some-org"}))
   250  
   251  					Expect(testUI.Err).To(Say("warning-1"))
   252  					Expect(testUI.Err).To(Say("warning-2"))
   253  				})
   254  			})
   255  
   256  			When("the error is not translatable", func() {
   257  				var expectedErr error
   258  
   259  				BeforeEach(func() {
   260  					expectedErr = errors.New("get org error")
   261  					fakeActor.GetOrganizationSummaryByNameReturns(
   262  						v7action.OrganizationSummary{},
   263  						v7action.Warnings{"warning-1", "warning-2"},
   264  						expectedErr)
   265  				})
   266  
   267  				It("returns the error and all warnings", func() {
   268  					Expect(executeErr).To(MatchError(expectedErr))
   269  
   270  					Expect(testUI.Err).To(Say("warning-1"))
   271  					Expect(testUI.Err).To(Say("warning-2"))
   272  				})
   273  			})
   274  		})
   275  	})
   276  })