github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/maven/pom_test.go (about) 1 package maven_test 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/fossas/fossa-cli/buildtools/maven" 10 "github.com/fossas/fossa-cli/pkg" 11 "github.com/fossas/fossa-cli/testing/helpers" 12 ) 13 14 func TestPomFileGraph(t *testing.T) { 15 // This test needs just the Dependencies field of a Manifest to be translated to a graph.Deps. 16 17 projectDir := filepath.Join(testPoms, "nested") 18 projectTarget := filepath.Join("deep-nested", "pom.xml") 19 20 id1 := pkg.ID{Type: pkg.Maven, Name: "com.google.code.g:g", Revision: "2.7"} 21 id2 := pkg.ID{Type: pkg.Maven, Name: "javax.annotation:jsr250-api", Revision: "1.0.2"} 22 id3 := pkg.ID{Type: pkg.Maven, Name: "junit:junit", Revision: "3.8.2"} 23 24 wantDirect := []pkg.Import{ 25 {Target: "", Resolved: id1}, 26 {Target: "", Resolved: id2}, 27 {Target: "", Resolved: id3}, 28 } 29 wantTransitive := map[pkg.ID]pkg.Package{ 30 id1: {ID: id1}, 31 id2: {ID: id2}, 32 id3: {ID: id3}, 33 } 34 35 got, err := maven.PomFileGraph(projectTarget, projectDir) 36 assert.NoError(t, err) 37 assert.Equal(t, wantDirect, got.Direct) 38 assert.Equal(t, wantTransitive, got.Transitive) 39 } 40 41 func TestPomFileDependencyManagement(t *testing.T) { 42 got, err := maven.PomFileGraph("dependencyManagement.xml", testPoms) 43 assert.NoError(t, err) 44 assert.Len(t, got.Direct, 1) 45 helpers.AssertPackageImport(t, got.Direct, "junit:junit", "3.8.2") 46 47 assert.Len(t, got.Transitive, 1) 48 packageOne := helpers.PackageInTransitiveGraph(got.Transitive, "junit:junit", "3.8.2") 49 assert.NotEmpty(t, packageOne) 50 assert.Len(t, packageOne.Imports, 0) 51 } 52 func TestResolveManifestFromTarget(t *testing.T) { 53 // A directory path. 54 pom, err := maven.ResolveManifestFromTarget(testPoms, ".") 55 if assert.NoError(t, err) { 56 assert.Equal(t, "com.domain.name:stuff", pom.GroupID+":"+pom.ArtifactID) 57 } 58 59 // A POM file path. 60 pom2, err := maven.ResolveManifestFromTarget(filepath.Join(testPoms, "nested", "pom.xml"), ".") 61 if assert.NoError(t, err) { 62 assert.Equal(t, "com.someone.code.a:gson-extras", pom2.GroupID+":"+pom2.ArtifactID) 63 } 64 65 // A project identifier. 66 _, err3 := maven.ResolveManifestFromTarget("something:else", ".") 67 assert.Error(t, err3) 68 }