@@ -18,6 +18,7 @@ package ecosystems
1818
1919import (
2020 "fmt"
21+ "net/http"
2122 "testing"
2223
2324 "github.com/jarcoal/httpmock"
@@ -47,6 +48,57 @@ func TestGetPackageData(t *testing.T) {
4748 assert .Equal (t , 1 , calls [`GET =~^https://packages.ecosyste.ms/api/v1/registries` ])
4849}
4950
51+ func TestGetPackageDataUserAgent (t * testing.T ) {
52+ httpmock .Activate ()
53+ defer httpmock .DeactivateAndReset ()
54+
55+ var capturedUserAgent string
56+ httpmock .RegisterResponder (
57+ "GET" ,
58+ `=~^https://packages.ecosyste.ms/api/v1/registries` ,
59+ func (req * http.Request ) (* http.Response , error ) {
60+ capturedUserAgent = req .Header .Get ("User-Agent" )
61+ return httpmock .NewBytesResponse (200 , []byte {}), nil
62+ },
63+ )
64+
65+ purl ,
err := packageurl .
FromString (
"pkg:npm/[email protected] " )
66+ require .NoError (t , err )
67+
68+ _ , err = GetPackageData (purl )
69+ require .NoError (t , err )
70+
71+ expectedUserAgent := fmt .Sprintf ("parlay (%s)" , Version )
72+ assert .Equal (t , expectedUserAgent , capturedUserAgent )
73+ // Verify it contains "parlay" and the version in parentheses
74+ assert .Contains (t , capturedUserAgent , "parlay" )
75+ assert .Contains (t , capturedUserAgent , "(" )
76+ assert .Contains (t , capturedUserAgent , ")" )
77+ }
78+
79+ func TestGetPackageVersionDataUserAgent (t * testing.T ) {
80+ httpmock .Activate ()
81+ defer httpmock .DeactivateAndReset ()
82+
83+ var capturedUserAgent string
84+ httpmock .RegisterResponder (
85+ "GET" ,
86+ `=~^https://packages.ecosyste.ms/api/v1/registries` ,
87+ func (req * http.Request ) (* http.Response , error ) {
88+ capturedUserAgent = req .Header .Get ("User-Agent" )
89+ return httpmock .NewBytesResponse (200 , []byte {}), nil
90+ },
91+ )
92+
93+ purl ,
err := packageurl .
FromString (
"pkg:npm/[email protected] " )
94+ require .NoError (t , err )
95+
96+ _ , err = GetPackageVersionData (purl )
97+ require .NoError (t , err )
98+
99+ assert .Equal (t , fmt .Sprintf ("parlay (%s)" , Version ), capturedUserAgent )
100+ }
101+
50102func TestPurlToEcosystemsRegistry (t * testing.T ) {
51103 testCases := []struct {
52104 purlStr string
0 commit comments