github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/java/internal/maven/config_test.go (about) 1 package maven 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/anchore/go-homedir" 11 "github.com/anchore/syft/internal" 12 ) 13 14 func Test_defaultMavenLocalRepoDir(t *testing.T) { 15 home, err := homedir.Dir() 16 require.NoError(t, err) 17 18 fixtures, err := filepath.Abs("test-fixtures") 19 require.NoError(t, err) 20 21 tests := []struct { 22 name string 23 home string 24 expected string 25 }{ 26 { 27 name: "default", 28 expected: filepath.Join(home, ".m2", "repository"), 29 home: "", 30 }, 31 { 32 name: "alternate dir", 33 expected: "/some/other/repo", 34 home: "test-fixtures/local-repository-settings", 35 }, 36 { 37 name: "explicit home", 38 expected: filepath.Join(fixtures, ".m2", "repository"), 39 home: "test-fixtures", 40 }, 41 } 42 for _, test := range tests { 43 t.Run(test.name, func(t *testing.T) { 44 homedir.Reset() 45 defer homedir.Reset() 46 if test.home != "" { 47 home, err := filepath.Abs(test.home) 48 require.NoError(t, err) 49 t.Setenv("HOME", home) 50 } 51 got := defaultMavenLocalRepoDir() 52 require.Equal(t, test.expected, got) 53 }) 54 } 55 } 56 57 func Test_getSettingsXmlLocalRepository(t *testing.T) { 58 tests := []struct { 59 file string 60 expected string 61 }{ 62 { 63 expected: "/some/other/repo", 64 file: "test-fixtures/local-repository-settings/.m2/settings.xml", 65 }, 66 { 67 expected: "", 68 file: "invalid", 69 }, 70 } 71 for _, test := range tests { 72 t.Run(test.expected, func(t *testing.T) { 73 f, _ := os.Open(test.file) 74 defer internal.CloseAndLogError(f, test.file) 75 got := getSettingsXMLLocalRepository(f) 76 require.Equal(t, test.expected, got) 77 }) 78 } 79 } 80 81 func Test_remotePomURL(t *testing.T) { 82 tests := []struct { 83 name string 84 groupID string 85 artifactID string 86 version string 87 expected string 88 }{ 89 { 90 name: "remotePomURL correctly assembles the pom URL", 91 groupID: "org.springframework.boot", 92 artifactID: "spring-boot-starter-test", 93 version: "3.1.5", 94 expected: "https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-test/3.1.5/spring-boot-starter-test-3.1.5.pom", 95 }, 96 } 97 98 for _, tc := range tests { 99 t.Run(tc.name, func(t *testing.T) { 100 requestURL, err := remotePomURL(mavenBaseURL, tc.groupID, tc.artifactID, tc.version) 101 require.NoError(t, err, "expected no err; got %w", err) 102 require.Equal(t, tc.expected, requestURL) 103 }) 104 } 105 }