MCPcopy
hub / github.com/git-lfs/git-lfs / TestDoWithAuthNoRetry

Function TestDoWithAuthNoRetry

lfsapi/auth_test.go:187–237  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

185}
186
187func TestDoWithAuthNoRetry(t *testing.T) {
188 var called uint32
189
190 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
191 atomic.AddUint32(&called, 1)
192 assert.Equal(t, "POST", req.Method)
193
194 body := &authRequest{}
195 err := json.NewDecoder(req.Body).Decode(body)
196 assert.Nil(t, err)
197 assert.Equal(t, "Approve", body.Test)
198
199 w.Header().Set("Lfs-Authenticate", "Basic")
200 actual := req.Header.Get("Authorization")
201 if len(actual) == 0 {
202 w.WriteHeader(http.StatusUnauthorized)
203 return
204 }
205
206 expected := "Basic " + strings.TrimSpace(
207 base64.StdEncoding.EncodeToString([]byte("user:pass")),
208 )
209 assert.Equal(t, expected, actual)
210 }))
211 defer srv.Close()
212
213 cred := newMockCredentialHelper()
214 c, err := NewClient(lfshttp.NewContext(git.NewReadOnlyConfig("", ""),
215 nil, map[string]string{
216 "lfs.url": srv.URL + "/repo/lfs",
217 },
218 ))
219 require.Nil(t, err)
220 c.Credentials = cred
221
222 access := c.Endpoints.AccessFor(srv.URL + "/repo/lfs")
223 assert.Equal(t, creds.NoneAccess, (&access).Mode())
224
225 req, err := http.NewRequest("POST", srv.URL+"/repo/lfs/foo", nil)
226 require.Nil(t, err)
227
228 err = MarshalToRequest(req, &authRequest{Test: "Approve"})
229 require.Nil(t, err)
230
231 res, err := c.DoWithAuthNoRetry("", c.Endpoints.AccessFor(srv.URL+"/repo/lfs"), req)
232 access = c.Endpoints.AccessFor(srv.URL + "/repo/lfs")
233 assert.True(t, errors.IsAuthError(err))
234 assert.Equal(t, http.StatusUnauthorized, res.StatusCode)
235 assert.Equal(t, creds.BasicAccess, (&access).Mode())
236 assert.EqualValues(t, 1, called)
237}
238
239func TestDoAPIRequestWithAuth(t *testing.T) {
240 var called uint32

Callers

nothing calls this directly

Calls 14

DoWithAuthNoRetryMethod · 0.95
NewContextFunction · 0.92
NewReadOnlyConfigFunction · 0.92
IsAuthErrorFunction · 0.92
newMockCredentialHelperFunction · 0.85
ModeMethod · 0.80
NewClientFunction · 0.70
MarshalToRequestFunction · 0.70
SetMethod · 0.65
GetMethod · 0.65
CloseMethod · 0.65
AccessForMethod · 0.65

Tested by

no test coverage detected