@@ -109,6 +109,7 @@ func TestDockerFetcherOpen(t *testing.T) {
109109 wantErr bool
110110 wantServerMessageError bool
111111 wantPlainError bool
112+ retries int
112113 }{
113114 {
114115 name : "should return status and error.message if it exists if the registry request fails" ,
@@ -128,12 +129,31 @@ func TestDockerFetcherOpen(t *testing.T) {
128129 want : nil ,
129130 wantErr : true ,
130131 wantPlainError : true ,
132+ }, {
133+ name : "should return StatusRequestTimeout after 5 retries" ,
134+ mockedStatus : http .StatusRequestTimeout ,
135+ mockedErr : fmt .Errorf (http .StatusText (http .StatusRequestTimeout )),
136+ want : nil ,
137+ wantErr : true ,
138+ wantPlainError : true ,
139+ retries : 5 ,
140+ }, {
141+ name : "should return StatusTooManyRequests after 5 retries" ,
142+ mockedStatus : http .StatusTooManyRequests ,
143+ mockedErr : fmt .Errorf (http .StatusText (http .StatusTooManyRequests )),
144+ want : nil ,
145+ wantErr : true ,
146+ wantPlainError : true ,
147+ retries : 5 ,
131148 },
132149 }
133150 for _ , tt := range tests {
134151 t .Run (tt .name , func (t * testing.T ) {
135152
136153 s := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , r * http.Request ) {
154+ if tt .retries > 0 {
155+ tt .retries --
156+ }
137157 rw .WriteHeader (tt .mockedStatus )
138158 bytes , _ := json .Marshal (tt .mockedErr )
139159 rw .Write (bytes )
@@ -147,6 +167,7 @@ func TestDockerFetcherOpen(t *testing.T) {
147167 got , err := r .open (context .TODO (), s .URL , "" , 0 )
148168 assert .Equal (t , tt .wantErr , (err != nil ))
149169 assert .Equal (t , tt .want , got )
170+ assert .Equal (t , tt .retries , 0 )
150171 if tt .wantErr {
151172 var expectedError error
152173 if tt .wantServerMessageError {
0 commit comments