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 }