@@ -56,6 +56,56 @@ func TestFetchPackage(t *testing.T) {
5656 }
5757}
5858
59+ func TestFetchPackageDoesNotUseNonForgeHomepageAsRepository (t * testing.T ) {
60+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
61+ resp := packageResponse {
62+ Name : "example" ,
63+ Meta : metaInfo {
64+ Links : map [string ]string {
65+ "Website" : "https://example.com/packages/example" ,
66+ },
67+ },
68+ }
69+ _ = json .NewEncoder (w ).Encode (resp )
70+ }))
71+ defer server .Close ()
72+
73+ reg := New (server .URL , core .DefaultClient ())
74+ pkg , err := reg .FetchPackage (context .Background (), "example" )
75+ if err != nil {
76+ t .Fatalf ("FetchPackage failed: %v" , err )
77+ }
78+
79+ if pkg .Repository != "" {
80+ t .Errorf ("expected no repository, got %q" , pkg .Repository )
81+ }
82+ }
83+
84+ func TestFetchPackageUsesExplicitSelfHostedRepositoryLink (t * testing.T ) {
85+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
86+ resp := packageResponse {
87+ Name : "example" ,
88+ Meta : metaInfo {
89+ Links : map [string ]string {
90+ "Repository" : "https://git.example.com/example/example" ,
91+ },
92+ },
93+ }
94+ _ = json .NewEncoder (w ).Encode (resp )
95+ }))
96+ defer server .Close ()
97+
98+ reg := New (server .URL , core .DefaultClient ())
99+ pkg , err := reg .FetchPackage (context .Background (), "example" )
100+ if err != nil {
101+ t .Fatalf ("FetchPackage failed: %v" , err )
102+ }
103+
104+ if pkg .Repository != "https://git.example.com/example/example" {
105+ t .Errorf ("unexpected repository: %q" , pkg .Repository )
106+ }
107+ }
108+
59109func TestFetchVersions (t * testing.T ) {
60110 server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
61111 switch r .URL .Path {
0 commit comments