boshDeleter = &fakes.BOSHDeleter{}
		keyPairDeleter = &fakes.KeyPairDeleter{}
		certificateDeleter = &fakes.CertificateDeleter{}
		stringGenerator = &fakes.StringGenerator{}
		awsCredentialValidator = &fakes.AWSCredentialValidator{}
		stateStore = &fakes.StateStore{}
		stateValidator = &fakes.StateValidator{}

		destroy = commands.NewDestroy(awsCredentialValidator, logger, stdin, boshDeleter,
			vpcStatusChecker, stackManager, stringGenerator, infrastructureManager,
			keyPairDeleter, certificateDeleter, stateStore, stateValidator)
	})

	Describe("Execute", func() {
		It("returns when there is no state and --skip-if-missing flag is provided", func() {
			err := destroy.Execute([]string{"--skip-if-missing"}, storage.State{})

			Expect(err).NotTo(HaveOccurred())
			Expect(logger.StepCall.Receives.Message).To(Equal("state file not found, and —skip-if-missing flag provided, exiting"))
		})

		It("returns an error when state validator fails", func() {
			stateValidator.ValidateCall.Returns.Error = errors.New("state validator failed")
			err := destroy.Execute([]string{}, storage.State{})

			Expect(stateValidator.ValidateCall.CallCount).To(Equal(1))
			Expect(err).To(MatchError("state validator failed"))
		})

		It("returns an error when aws credential validator fails", func() {
			awsCredentialValidator.ValidateCall.Returns.Error = errors.New("aws credentials validator failed")