fakeclient "github.com/maximilien/softlayer-go/client/fakes"

	. "github.com/cloudcredo/bosh-lattice-cpi/softlayer/disk"
	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("SoftLayerDisk", func() {
	var (
		fc   *fakeclient.FakeSoftLayerClient
		disk SoftLayerDisk
	)

	BeforeEach(func() {
		fc = fakeclient.NewFakeSoftLayerClient("fake-user", "fake-key")
		logger := boshlog.NewLogger(boshlog.LevelNone)
		disk = NewSoftLayerDisk(1234, fc, logger)
	})

	Describe("Delete", func() {
		It("deletes an iSCSI disk successfully", func() {
			fileNames := []string{
				"SoftLayer_Account_Service_getIscsiVolume.json",
				"SoftLayer_Billing_Item_Cancellation_Request_Service_createObject.json",
			}
			testhelpers.SetTestFixturesForFakeSoftLayerClient(fc, fileNames)

			err := disk.Delete()
			Expect(err).ToNot(HaveOccurred())
		})
		vgbdtgService softlayer.SoftLayer_Virtual_Guest_Block_Device_Template_Group_Service

		cmd     cmds.CommandInterface
		options common.Options

		importImageCmd *ImportImageCmd
	)

	BeforeEach(func() {
		username := os.Getenv("SL_USERNAME")
		Expect(username).ToNot(Equal(""))

		apiKey := os.Getenv("SL_API_KEY")
		Expect(apiKey).ToNot(Equal(""))

		fakeClient = slclientfakes.NewFakeSoftLayerClient(username, apiKey)
		Expect(fakeClient).ToNot(BeNil())

		fakeClient.DoRawHttpRequestResponse, err = ReadJsonTestFixtures("services", "SoftLayer_Virtual_Guest_Block_Device_Template_Group_Service_createFromExternalSource.json")
		Expect(err).ToNot(HaveOccurred())

		vgbdtgService, err = fakeClient.GetSoftLayer_Virtual_Guest_Block_Device_Template_Group_Service()
		Expect(err).ToNot(HaveOccurred())
		Expect(vgbdtgService).ToNot(BeNil())

		options = common.Options{
			NameFlag:      "fake-name",
			NoteFlag:      "fake-note",
			OsRefCodeFlag: "fake-os-ref-code",
			UriFlag:       "fake-uri",
		}
	boshlog "github.com/cloudfoundry/bosh-utils/logger"

	sldatatypes "github.com/maximilien/softlayer-go/data_types"
)

var _ = Describe("SoftLayerCreator", func() {
	var (
		softLayerClient        *fakeslclient.FakeSoftLayerClient
		agentEnvServiceFactory *fakevm.FakeAgentEnvServiceFactory
		agentOptions           AgentOptions
		logger                 boshlog.Logger
		creator                SoftLayerCreator
	)

	BeforeEach(func() {
		softLayerClient = fakeslclient.NewFakeSoftLayerClient("fake-username", "fake-api-key")

		agentEnvServiceFactory = &fakevm.FakeAgentEnvServiceFactory{}
		agentOptions = AgentOptions{Mbus: "fake-mbus"}
		logger = boshlog.NewLogger(boshlog.LevelNone)

		creator = NewSoftLayerCreator(
			softLayerClient,
			agentEnvServiceFactory,
			agentOptions,
			logger,
		)
	})

	Describe("Create", func() {
		var (