github.com/jfrog/jfrog-cli-core/v2@v2.51.0/lifecycle/createcommon_test.go (about)

     1  package lifecycle
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/v2/common/spec"
     5  	"github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     6  	"github.com/jfrog/jfrog-client-go/lifecycle/services"
     7  	"github.com/stretchr/testify/assert"
     8  	"testing"
     9  )
    10  
    11  func TestValidateCreationSources(t *testing.T) {
    12  	testCases := []struct {
    13  		testName                string
    14  		detectedCreationSources []services.SourceType
    15  		errExpected             bool
    16  		errMsg                  string
    17  	}{
    18  		{"missing creation sources", []services.SourceType{}, true, missingCreationSourcesErrMsg},
    19  		{"single creation source", []services.SourceType{services.Aql, services.Artifacts, services.Builds},
    20  			true, multipleCreationSourcesErrMsg + " 'aql, artifacts and builds'"},
    21  		{"single aql err", []services.SourceType{services.Aql, services.Aql}, true, singleAqlErrMsg},
    22  		{"valid aql", []services.SourceType{services.Aql}, false, ""},
    23  		{"valid artifacts", []services.SourceType{services.Artifacts, services.Artifacts}, false, ""},
    24  		{"valid builds", []services.SourceType{services.Builds, services.Builds}, false, ""},
    25  		{"valid release bundles", []services.SourceType{services.ReleaseBundles, services.ReleaseBundles}, false, ""},
    26  	}
    27  	for _, testCase := range testCases {
    28  		t.Run(testCase.testName, func(t *testing.T) {
    29  			err := validateCreationSources(testCase.detectedCreationSources)
    30  			if testCase.errExpected {
    31  				assert.EqualError(t, err, testCase.errMsg)
    32  			} else {
    33  				assert.NoError(t, err)
    34  			}
    35  		})
    36  	}
    37  }
    38  
    39  func TestValidateFile(t *testing.T) {
    40  	testCases := []struct {
    41  		testName           string
    42  		file               spec.File
    43  		errExpected        bool
    44  		expectedSourceType services.SourceType
    45  	}{
    46  		{"valid aql", spec.File{Aql: utils.Aql{ItemsFind: "abc"}}, false, services.Aql},
    47  		{"valid build", spec.File{Build: "name/number", IncludeDeps: "true", Project: "project"}, false, services.Builds},
    48  		{"valid bundle", spec.File{Bundle: "name/number", Project: "project"}, false, services.ReleaseBundles},
    49  		{"valid artifacts",
    50  			spec.File{
    51  				Pattern:      "repo/path/file",
    52  				Exclusions:   []string{"exclude"},
    53  				Props:        "prop",
    54  				ExcludeProps: "exclude prop",
    55  				Recursive:    "false"}, false, services.Artifacts},
    56  		{"invalid fields", spec.File{PathMapping: utils.PathMapping{Input: "input"}, Target: "target"}, true, ""},
    57  		{"multiple creation sources",
    58  			spec.File{Aql: utils.Aql{ItemsFind: "abc"}, Build: "name/number", Bundle: "name/number", Pattern: "repo/path/file"},
    59  			true, ""},
    60  		{"invalid aql", spec.File{Aql: utils.Aql{ItemsFind: "abc"}, Props: "prop"}, true, ""},
    61  		{"invalid builds", spec.File{Build: "name/number", Recursive: "false"}, true, ""},
    62  		{"invalid bundles", spec.File{Bundle: "name/number", IncludeDeps: "true"}, true, ""},
    63  		{"invalid artifacts", spec.File{Pattern: "repo/path/file", Project: "proj"}, true, ""},
    64  	}
    65  	for _, testCase := range testCases {
    66  		t.Run(testCase.testName, func(t *testing.T) {
    67  			sourceType, err := validateFile(testCase.file)
    68  			if testCase.errExpected {
    69  				assert.Error(t, err)
    70  			} else {
    71  				assert.NoError(t, err)
    72  				assert.Equal(t, testCase.expectedSourceType, sourceType)
    73  			}
    74  		})
    75  	}
    76  }