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  }