DescribeTable("", func(downloadEntryError, tempDirError, openAndReadFileError, getResourcesError, parseV1_0_0Error, expectedError error) {
			entries := []common.Entry{
				{
					Path: "",
				},
			}
			getter := VCSAndLocalFSGetter{}
			worker := new(common.ConfigWorker)
			downloader := new(mocks.EntryDownloader)
			downloader.On("DownloadEntry", entries[0], mock.AnythingOfType("string")).Return(downloadEntryError)
			worker.Downloader = downloader
			fsUtil := new(fsmocks.Util)
			fsUtil.On("TempDir", "", "opencontrol-resources").Return("sometempdir", tempDirError)
			data := []byte("schema_version: 1.0.0")
			fsUtil.On("OpenAndReadFile", mock.AnythingOfType("string")).Return(data, openAndReadFileError)
			parser := new(mocks.SchemaParser)
			schema := new(mocks.BaseSchema)
			schema.On("GetResources", mock.AnythingOfType("string"), mock.AnythingOfType("string"), worker).Return(getResourcesError)
			parser.On("ParseV1_0_0", data).Return(schema, parseV1_0_0Error)
			worker.Parser = parser
			worker.FSUtil = fsUtil
			err := getter.GetRemoteResources("dest", "subfolder", worker, entries)
			assert.Equal(GinkgoT(), expectedError, err)

		},
			Entry("success", nil, nil, nil, nil, nil, nil),
			Entry("fail to get resources", nil, nil, nil, errors.New("error getting resources"), nil, errors.New("error getting resources")),
			Entry("fail to parse config", nil, nil, nil, nil, errors.New("error parsing"), errors.New("error parsing")),
			Entry("fail to open and read file", nil, nil, errors.New("error reading file"), nil, nil, errors.New("error reading file")),
			Entry("fail to download repo", errors.New("error downloading entry"), nil, nil, nil, nil, errors.New("error downloading entry")),
			Entry("fail to create temp dir", nil, errors.New("error creating tempdir"), nil, nil, nil, errors.New("error creating tempdir")),
package config_test

import (
	. "github.com/opencontrol/compliance-masonry/config"

	. "github.com/onsi/ginkgo"
	"github.com/opencontrol/compliance-masonry/config/common"
	"github.com/opencontrol/compliance-masonry/config/common/mocks"
	"github.com/stretchr/testify/assert"
	"github.com/vektra/errors"
)

var _ = Describe("Parse", func() {
	var (
		parser *mocks.SchemaParser
		err    error
		schema common.BaseSchema
	)

	BeforeEach(func() {
		parser = new(mocks.SchemaParser)
	})

	Describe("bad input scenarios", func() {
		It("should detect there's no data to parse when given nil data", func() {
			schema, err = Parse(parser, nil)
			assert.Equal(GinkgoT(), ErrNoDataToParse, err)
		})
		It("should detect there's no data to parse when given empty data", func() {
			schema, err = Parse(parser, []byte(""))
			assert.Equal(GinkgoT(), ErrNoDataToParse, err)