github.com/sleungcy/cli@v7.1.0+incompatible/actor/v7action/environment_variable_test.go (about)

     1  package v7action_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/actor/v7action/v7actionfakes"
     9  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
    11  	"code.cloudfoundry.org/cli/resources"
    12  	"code.cloudfoundry.org/cli/types"
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  )
    16  
    17  var _ = Describe("Environment Variable Actions", func() {
    18  	Describe("GetEnvironmentVariableGroup", func() {
    19  		var (
    20  			actor                     *Actor
    21  			fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
    22  			fetchedEnvVariables       EnvironmentVariableGroup
    23  			executeErr                error
    24  			warnings                  Warnings
    25  		)
    26  
    27  		BeforeEach(func() {
    28  			fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
    29  			actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
    30  		})
    31  
    32  		JustBeforeEach(func() {
    33  			fetchedEnvVariables, warnings, executeErr = actor.GetEnvironmentVariableGroup(constant.StagingEnvironmentVariableGroup)
    34  		})
    35  
    36  		When("getting the environment variable group fails", func() {
    37  			BeforeEach(func() {
    38  				fakeCloudControllerClient.GetEnvironmentVariableGroupReturns(
    39  					nil,
    40  					ccv3.Warnings{"get-env-var-group-warning"},
    41  					errors.New("get-env-var-group-error"),
    42  				)
    43  			})
    44  
    45  			It("fetches the environment variable group from CC", func() {
    46  				Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupCallCount()).To(Equal(1))
    47  				Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupArgsForCall(0)).To(Equal(constant.StagingEnvironmentVariableGroup))
    48  			})
    49  
    50  			It("returns warnings and error", func() {
    51  				Expect(executeErr).To(MatchError("get-env-var-group-error"))
    52  				Expect(warnings).To(ConsistOf("get-env-var-group-warning"))
    53  			})
    54  		})
    55  
    56  		When("getting the environment variable group succeeds", func() {
    57  			var envVars ccv3.EnvironmentVariables
    58  
    59  			BeforeEach(func() {
    60  				envVars = map[string]types.FilteredString{
    61  					"var_one": {IsSet: true, Value: "val_one"},
    62  				}
    63  
    64  				fakeCloudControllerClient.GetEnvironmentVariableGroupReturns(
    65  					envVars,
    66  					ccv3.Warnings{"get-env-var-group-warning"},
    67  					nil,
    68  				)
    69  			})
    70  
    71  			It("fetches the environment variable group from CC", func() {
    72  				Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupCallCount()).To(Equal(1))
    73  				Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupArgsForCall(0)).To(Equal(constant.StagingEnvironmentVariableGroup))
    74  			})
    75  
    76  			It("returns result and warnings", func() {
    77  				Expect(executeErr).NotTo(HaveOccurred())
    78  				Expect(fetchedEnvVariables).To(Equal(EnvironmentVariableGroup(envVars)))
    79  				Expect(warnings).To(ConsistOf("get-env-var-group-warning"))
    80  			})
    81  		})
    82  	})
    83  
    84  	Describe("SetEnvironmentVariableGroup", func() {
    85  		var (
    86  			actor                     *Actor
    87  			fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
    88  			executeErr                error
    89  			warnings                  Warnings
    90  			envVars                   ccv3.EnvironmentVariables
    91  		)
    92  
    93  		BeforeEach(func() {
    94  			envVars = ccv3.EnvironmentVariables{}
    95  			fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
    96  			actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
    97  		})
    98  
    99  		JustBeforeEach(func() {
   100  			warnings, executeErr = actor.SetEnvironmentVariableGroup(constant.RunningEnvironmentVariableGroup, envVars)
   101  		})
   102  
   103  		When("Setting the environment variable group fails", func() {
   104  			When("user passes some env var group", func() {
   105  				BeforeEach(func() {
   106  					envVars = ccv3.EnvironmentVariables{
   107  						"key1": {Value: "val1", IsSet: true},
   108  						"key2": {Value: "val2", IsSet: true},
   109  					}
   110  
   111  					fakeCloudControllerClient.UpdateEnvironmentVariableGroupReturns(
   112  						nil,
   113  						ccv3.Warnings{"update-env-var-group-warning"},
   114  						errors.New("update-env-var-group-error"),
   115  					)
   116  				})
   117  
   118  				It("sets the environment variable group via CC", func() {
   119  					Expect(fakeCloudControllerClient.UpdateEnvironmentVariableGroupCallCount()).To(Equal(1))
   120  					actualGroup, actualEnvPair := fakeCloudControllerClient.UpdateEnvironmentVariableGroupArgsForCall(0)
   121  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   122  					Expect(actualEnvPair).To(Equal(envVars))
   123  				})
   124  
   125  				It("returns warnings and error", func() {
   126  					Expect(executeErr).To(MatchError("update-env-var-group-error"))
   127  					Expect(warnings).To(ConsistOf("update-env-var-group-warning"))
   128  				})
   129  
   130  			})
   131  
   132  			When("user passes in '{}'", func() {
   133  				BeforeEach(func() {
   134  					fakeCloudControllerClient.GetEnvironmentVariableGroupReturns(
   135  						ccv3.EnvironmentVariables{},
   136  						ccv3.Warnings{},
   137  						errors.New("I love my corgi, Pancho!"),
   138  					)
   139  				})
   140  
   141  				It("propagates the error", func() {
   142  					Expect(executeErr).To(HaveOccurred())
   143  					Expect(executeErr).To(MatchError(errors.New("I love my corgi, Pancho!")))
   144  				})
   145  			})
   146  		})
   147  
   148  		When("Setting the environment variable group succeeds", func() {
   149  			When("user passes some env var group", func() {
   150  				BeforeEach(func() {
   151  					fakeCloudControllerClient.UpdateEnvironmentVariableGroupReturns(
   152  						ccv3.EnvironmentVariables{
   153  							"key1": {Value: "val1", IsSet: true},
   154  							"key2": {Value: "val2", IsSet: true},
   155  						},
   156  						ccv3.Warnings{"update-env-var-group-warning"},
   157  						nil,
   158  					)
   159  				})
   160  
   161  				It("makes the API call to update the environment variable group and returns all warnings", func() {
   162  					Expect(fakeCloudControllerClient.UpdateEnvironmentVariableGroupCallCount()).To(Equal(1))
   163  					actualGroup, actualEnvPair := fakeCloudControllerClient.UpdateEnvironmentVariableGroupArgsForCall(0)
   164  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   165  					Expect(actualEnvPair).To(Equal(envVars))
   166  					Expect(executeErr).ToNot(HaveOccurred())
   167  					Expect(warnings).To(ConsistOf("update-env-var-group-warning"))
   168  				})
   169  			})
   170  
   171  			When("user passes in '{}'", func() {
   172  				BeforeEach(func() {
   173  					fakeCloudControllerClient.GetEnvironmentVariableGroupReturns(
   174  						ccv3.EnvironmentVariables{
   175  							"delete-me1": {Value: "val1", IsSet: true},
   176  							"delete-me2": {Value: "val2", IsSet: true},
   177  						},
   178  						ccv3.Warnings{"get-env-var-group-warning"},
   179  						nil,
   180  					)
   181  					fakeCloudControllerClient.UpdateEnvironmentVariableGroupReturns(
   182  						ccv3.EnvironmentVariables{},
   183  						ccv3.Warnings{"update-env-var-group-warning"},
   184  						nil,
   185  					)
   186  				})
   187  
   188  				It("nils the values of existing vars", func() {
   189  					Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupCallCount()).To(Equal(1))
   190  					actualGroup := fakeCloudControllerClient.GetEnvironmentVariableGroupArgsForCall(0)
   191  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   192  
   193  					actualGroup, actualEnvPair := fakeCloudControllerClient.UpdateEnvironmentVariableGroupArgsForCall(0)
   194  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   195  
   196  					Expect(actualEnvPair).To(Equal(ccv3.EnvironmentVariables{
   197  						"delete-me1": {Value: "", IsSet: false},
   198  						"delete-me2": {Value: "", IsSet: false},
   199  					}))
   200  
   201  					Expect(executeErr).ToNot(HaveOccurred())
   202  					Expect(warnings).To(ConsistOf("get-env-var-group-warning", "update-env-var-group-warning"))
   203  				})
   204  			})
   205  
   206  			When("user excludes some existing env vars", func() {
   207  				BeforeEach(func() {
   208  					envVars = ccv3.EnvironmentVariables{
   209  						"keep-me": {Value: "val1", IsSet: true},
   210  					}
   211  					fakeCloudControllerClient.GetEnvironmentVariableGroupReturns(
   212  						ccv3.EnvironmentVariables{
   213  							"keep-me":   {Value: "val1", IsSet: true},
   214  							"delete-me": {Value: "val2", IsSet: true},
   215  						},
   216  						ccv3.Warnings{"get-env-var-group-warning"},
   217  						nil,
   218  					)
   219  					fakeCloudControllerClient.UpdateEnvironmentVariableGroupReturns(
   220  						envVars,
   221  						ccv3.Warnings{"update-env-var-group-warning"},
   222  						nil,
   223  					)
   224  				})
   225  
   226  				It("nils the values of excluded existing vars", func() {
   227  					Expect(fakeCloudControllerClient.GetEnvironmentVariableGroupCallCount()).To(Equal(1))
   228  					actualGroup := fakeCloudControllerClient.GetEnvironmentVariableGroupArgsForCall(0)
   229  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   230  
   231  					actualGroup, actualEnvPair := fakeCloudControllerClient.UpdateEnvironmentVariableGroupArgsForCall(0)
   232  					Expect(actualGroup).To(Equal(constant.RunningEnvironmentVariableGroup))
   233  					Expect(actualEnvPair).To(Equal(ccv3.EnvironmentVariables{
   234  						"keep-me":   {Value: "val1", IsSet: true},
   235  						"delete-me": {Value: "", IsSet: false},
   236  					}))
   237  
   238  					Expect(executeErr).ToNot(HaveOccurred())
   239  					Expect(warnings).To(ConsistOf("get-env-var-group-warning", "update-env-var-group-warning"))
   240  				})
   241  			})
   242  		})
   243  	})
   244  
   245  	Describe("GetEnvironmentVariablesByApplicationNameAndSpace", func() {
   246  		var (
   247  			actor                     *Actor
   248  			fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
   249  			appName                   string
   250  			spaceGUID                 string
   251  			fetchedEnvVariables       EnvironmentVariableGroups
   252  			executeErr                error
   253  			warnings                  Warnings
   254  		)
   255  
   256  		BeforeEach(func() {
   257  			fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
   258  			actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
   259  			appName = "some-app"
   260  			spaceGUID = "space-guid"
   261  		})
   262  
   263  		JustBeforeEach(func() {
   264  			fetchedEnvVariables, warnings, executeErr = actor.GetEnvironmentVariablesByApplicationNameAndSpace(appName, spaceGUID)
   265  		})
   266  
   267  		When("finding the app fails", func() {
   268  			BeforeEach(func() {
   269  				fakeCloudControllerClient.GetApplicationsReturns(nil, ccv3.Warnings{"get-application-warning"}, errors.New("get-application-error"))
   270  			})
   271  
   272  			It("returns an error", func() {
   273  				Expect(executeErr).To(MatchError("get-application-error"))
   274  				Expect(warnings).To(ConsistOf("get-application-warning"))
   275  			})
   276  		})
   277  
   278  		When("finding the app succeeds", func() {
   279  			BeforeEach(func() {
   280  				fakeCloudControllerClient.GetApplicationsReturns([]resources.Application{{Name: "some-app", GUID: "some-app-guid"}}, ccv3.Warnings{"get-application-warning"}, nil)
   281  			})
   282  
   283  			When("getting the app environment variables fails", func() {
   284  				BeforeEach(func() {
   285  					fakeCloudControllerClient.GetApplicationEnvironmentReturns(ccv3.Environment{}, ccv3.Warnings{"some-env-var-warnings"}, errors.New("some-env-var-error"))
   286  				})
   287  				It("returns an error", func() {
   288  					Expect(executeErr).To(MatchError("some-env-var-error"))
   289  					Expect(warnings).To(ConsistOf("get-application-warning", "some-env-var-warnings"))
   290  				})
   291  			})
   292  
   293  			When("getting the app environment variables succeeds", func() {
   294  				BeforeEach(func() {
   295  					fakeCloudControllerClient.GetApplicationEnvironmentReturns(
   296  						ccv3.Environment{
   297  							System:               map[string]interface{}{"system-var": "system-val"},
   298  							Application:          map[string]interface{}{"app-var": "app-val"},
   299  							EnvironmentVariables: map[string]interface{}{"user-var": "user-val"},
   300  							Running:              map[string]interface{}{"running-var": "running-val"},
   301  							Staging:              map[string]interface{}{"staging-var": "staging-val"},
   302  						},
   303  						ccv3.Warnings{"some-env-var-warnings"},
   304  						nil,
   305  					)
   306  				})
   307  
   308  				It("makes the API call to get the app environment variables and returns all warnings", func() {
   309  					Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1))
   310  					Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf(
   311  						ccv3.Query{Key: ccv3.NameFilter, Values: []string{appName}},
   312  						ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{spaceGUID}},
   313  					))
   314  
   315  					Expect(fakeCloudControllerClient.GetApplicationEnvironmentCallCount()).To(Equal(1))
   316  					Expect(fakeCloudControllerClient.GetApplicationEnvironmentArgsForCall(0)).To(Equal("some-app-guid"))
   317  					Expect(fetchedEnvVariables).To(Equal(EnvironmentVariableGroups{
   318  						System:               map[string]interface{}{"system-var": "system-val"},
   319  						Application:          map[string]interface{}{"app-var": "app-val"},
   320  						EnvironmentVariables: map[string]interface{}{"user-var": "user-val"},
   321  						Running:              map[string]interface{}{"running-var": "running-val"},
   322  						Staging:              map[string]interface{}{"staging-var": "staging-val"},
   323  					}))
   324  					Expect(executeErr).ToNot(HaveOccurred())
   325  					Expect(warnings).To(ConsistOf("get-application-warning", "some-env-var-warnings"))
   326  				})
   327  			})
   328  		})
   329  	})
   330  
   331  	Describe("SetEnvironmentVariableByApplicationNameAndSpace", func() {
   332  		var (
   333  			actor                     *Actor
   334  			fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
   335  			appName                   string
   336  			spaceGUID                 string
   337  			envPair                   EnvironmentVariablePair
   338  			executeErr                error
   339  			warnings                  Warnings
   340  		)
   341  
   342  		BeforeEach(func() {
   343  			fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
   344  			actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
   345  			appName = "some-app"
   346  			spaceGUID = "space-guid"
   347  			envPair = EnvironmentVariablePair{Key: "my-var", Value: "my-val"}
   348  		})
   349  
   350  		JustBeforeEach(func() {
   351  			warnings, executeErr = actor.SetEnvironmentVariableByApplicationNameAndSpace(appName, spaceGUID, envPair)
   352  		})
   353  
   354  		When("finding the app fails", func() {
   355  			BeforeEach(func() {
   356  				fakeCloudControllerClient.GetApplicationsReturns(nil, ccv3.Warnings{"get-application-warning"}, errors.New("get-application-error"))
   357  			})
   358  
   359  			It("returns an error", func() {
   360  				Expect(executeErr).To(MatchError("get-application-error"))
   361  				Expect(warnings).To(ConsistOf("get-application-warning"))
   362  			})
   363  		})
   364  
   365  		When("finding the app succeeds", func() {
   366  			BeforeEach(func() {
   367  				fakeCloudControllerClient.GetApplicationsReturns([]resources.Application{{Name: "some-app", GUID: "some-app-guid"}}, ccv3.Warnings{"get-application-warning"}, nil)
   368  			})
   369  
   370  			When("updating the app environment variables fails", func() {
   371  				BeforeEach(func() {
   372  					fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesReturns(ccv3.EnvironmentVariables{}, ccv3.Warnings{"some-env-var-warnings"}, errors.New("some-env-var-error"))
   373  				})
   374  				It("returns an error", func() {
   375  					Expect(executeErr).To(MatchError("some-env-var-error"))
   376  					Expect(warnings).To(ConsistOf("get-application-warning", "some-env-var-warnings"))
   377  				})
   378  			})
   379  
   380  			When("updating the app environment variables succeeds", func() {
   381  				BeforeEach(func() {
   382  					fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesReturns(
   383  						ccv3.EnvironmentVariables{
   384  							"my-var": {Value: "my-val", IsSet: true},
   385  						},
   386  						ccv3.Warnings{"some-env-var-warnings"},
   387  						nil,
   388  					)
   389  				})
   390  
   391  				It("makes the API call to update the app environment variables and returns all warnings", func() {
   392  					Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1))
   393  					Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf(
   394  						ccv3.Query{Key: ccv3.NameFilter, Values: []string{appName}},
   395  						ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{spaceGUID}},
   396  					))
   397  
   398  					Expect(fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesCallCount()).To(Equal(1))
   399  					appGUIDArg, envVarsArg := fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesArgsForCall(0)
   400  					Expect(appGUIDArg).To(Equal("some-app-guid"))
   401  					Expect(envVarsArg).To(Equal(ccv3.EnvironmentVariables{
   402  						"my-var": {Value: "my-val", IsSet: true},
   403  					}))
   404  					Expect(executeErr).ToNot(HaveOccurred())
   405  					Expect(warnings).To(ConsistOf("get-application-warning", "some-env-var-warnings"))
   406  				})
   407  			})
   408  		})
   409  	})
   410  
   411  	Describe("UnsetEnvironmentVariableByApplicationNameAndSpace", func() {
   412  		var (
   413  			actor                     *Actor
   414  			fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
   415  			appName                   string
   416  			spaceGUID                 string
   417  			envVariableName           string
   418  			executeErr                error
   419  			warnings                  Warnings
   420  		)
   421  
   422  		BeforeEach(func() {
   423  			fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
   424  			actor = NewActor(fakeCloudControllerClient, nil, nil, nil, nil, nil)
   425  			appName = "some-app"
   426  			spaceGUID = "space-guid"
   427  			envVariableName = "my-var"
   428  		})
   429  
   430  		JustBeforeEach(func() {
   431  			warnings, executeErr = actor.UnsetEnvironmentVariableByApplicationNameAndSpace(appName, spaceGUID, envVariableName)
   432  		})
   433  
   434  		When("finding the app fails", func() {
   435  			BeforeEach(func() {
   436  				fakeCloudControllerClient.GetApplicationsReturns(nil, ccv3.Warnings{"get-application-warning"}, errors.New("get-application-error"))
   437  			})
   438  
   439  			It("returns an error", func() {
   440  				Expect(executeErr).To(MatchError("get-application-error"))
   441  				Expect(warnings).To(ConsistOf("get-application-warning"))
   442  			})
   443  		})
   444  
   445  		When("finding the app succeeds", func() {
   446  			BeforeEach(func() {
   447  				fakeCloudControllerClient.GetApplicationsReturns([]resources.Application{{Name: "some-app", GUID: "some-app-guid"}}, ccv3.Warnings{"get-application-warning"}, nil)
   448  			})
   449  
   450  			When("getting the app environment variables fails", func() {
   451  				BeforeEach(func() {
   452  					fakeCloudControllerClient.GetApplicationEnvironmentReturns(ccv3.Environment{}, ccv3.Warnings{"some-get-env-var-warnings"}, errors.New("some-env-var-error"))
   453  				})
   454  				It("returns an error", func() {
   455  					Expect(executeErr).To(MatchError("some-env-var-error"))
   456  					Expect(warnings).To(ConsistOf("get-application-warning", "some-get-env-var-warnings"))
   457  				})
   458  			})
   459  
   460  			When("the variable doesn't exists", func() {
   461  				BeforeEach(func() {
   462  					fakeCloudControllerClient.GetApplicationEnvironmentReturns(
   463  						ccv3.Environment{},
   464  						ccv3.Warnings{"some-get-env-var-warnings"},
   465  						nil,
   466  					)
   467  				})
   468  				It("returns an EnvironmentVariableNotSetError", func() {
   469  					Expect(executeErr).To(MatchError(actionerror.EnvironmentVariableNotSetError{EnvironmentVariableName: "my-var"}))
   470  					Expect(warnings).To(ConsistOf("get-application-warning", "some-get-env-var-warnings"))
   471  				})
   472  			})
   473  
   474  			When("the variable exists", func() {
   475  				BeforeEach(func() {
   476  					fakeCloudControllerClient.GetApplicationEnvironmentReturns(
   477  						ccv3.Environment{
   478  							EnvironmentVariables: map[string]interface{}{"my-var": "my-val"},
   479  						},
   480  						ccv3.Warnings{"some-get-env-var-warnings"},
   481  						nil,
   482  					)
   483  				})
   484  				When("updating the app environment variables fails", func() {
   485  					BeforeEach(func() {
   486  						fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesReturns(ccv3.EnvironmentVariables{}, ccv3.Warnings{"some-patch-env-var-warnings"}, errors.New("some-env-var-error"))
   487  					})
   488  					It("returns an error", func() {
   489  						Expect(executeErr).To(MatchError("some-env-var-error"))
   490  						Expect(warnings).To(ConsistOf("get-application-warning", "some-get-env-var-warnings", "some-patch-env-var-warnings"))
   491  					})
   492  				})
   493  
   494  				When("updating the app environment variables succeeds", func() {
   495  					BeforeEach(func() {
   496  						fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesReturns(
   497  							ccv3.EnvironmentVariables{
   498  								"my-var": {Value: "my-val", IsSet: true},
   499  							},
   500  							ccv3.Warnings{"some-patch-env-var-warnings"},
   501  							nil,
   502  						)
   503  					})
   504  
   505  					It("makes the API call to update the app environment variables and returns all warnings", func() {
   506  						Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1))
   507  						Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf(
   508  							ccv3.Query{Key: ccv3.NameFilter, Values: []string{appName}},
   509  							ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{spaceGUID}},
   510  						))
   511  
   512  						Expect(fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesCallCount()).To(Equal(1))
   513  						appGUIDArg, envVarsArg := fakeCloudControllerClient.UpdateApplicationEnvironmentVariablesArgsForCall(0)
   514  						Expect(appGUIDArg).To(Equal("some-app-guid"))
   515  						Expect(envVarsArg).To(Equal(ccv3.EnvironmentVariables{
   516  							"my-var": {Value: "", IsSet: false},
   517  						}))
   518  
   519  						Expect(executeErr).ToNot(HaveOccurred())
   520  						Expect(warnings).To(ConsistOf("get-application-warning", "some-get-env-var-warnings", "some-patch-env-var-warnings"))
   521  					})
   522  				})
   523  			})
   524  		})
   525  	})
   526  })