@@ -66,10 +66,7 @@ func (h *goodHTTPClient) Do(req *http.Request) (*http.Response, error) {
6666 if req .URL .Host == "subpath.test" && req .URL .Path != "/subpath/index.yaml" {
6767 w .WriteHeader (500 )
6868 }
69- // Ensure we're sending the right User-Agent
70- if ! strings .Contains (req .Header .Get ("User-Agent" ), "chart-repo-sync" ) {
71- w .WriteHeader (500 )
72- }
69+
7370 w .Write ([]byte (validRepoIndexYAML ))
7471 return w .Result (), nil
7572}
@@ -206,6 +203,44 @@ func Test_fetchRepoIndex(t *testing.T) {
206203 })
207204}
208205
206+ func Test_fetchRepoIndexUserAgent (t * testing.T ) {
207+ tests := []struct {
208+ name string
209+ version string
210+ userAgentComment string
211+ expectedUserAgent string
212+ }{
213+ {"default user agent" , "" , "" , "chart-repo/devel" },
214+ {"custom version no app" , "1.0" , "" , "chart-repo/1.0" },
215+ {"custom version and app" , "1.0" , "monocular/1.2" , "chart-repo/1.0 (monocular/1.2)" },
216+ }
217+
218+ for _ , tt := range tests {
219+ t .Run (tt .name , func (t * testing.T ) {
220+ // Override global variables used to generate the userAgent
221+ if tt .version != "" {
222+ version = tt .version
223+ }
224+
225+ if tt .userAgentComment != "" {
226+ userAgentComment = tt .userAgentComment
227+ }
228+
229+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
230+ assert .Equal (t , tt .expectedUserAgent , req .Header .Get ("User-Agent" ), "expected user agent" )
231+ rw .Write ([]byte (validRepoIndexYAML ))
232+ }))
233+ // Close the server when test finishes
234+ defer server .Close ()
235+
236+ netClient = server .Client ()
237+
238+ _ , err := fetchRepoIndex (repo {URL : server .URL })
239+ assert .NoErr (t , err )
240+ })
241+ }
242+ }
243+
209244func Test_parseRepoIndex (t * testing.T ) {
210245 tests := []struct {
211246 name string
0 commit comments