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

Function TestDoAPIRequestWithAuth

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

Source from the content-addressed store, hash-verified

237}
238
239func TestDoAPIRequestWithAuth(t *testing.T) {
240 var called uint32
241
242 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
243 atomic.AddUint32(&called, 1)
244 assert.Equal(t, "POST", req.Method)
245
246 body := &authRequest{}
247 err := json.NewDecoder(req.Body).Decode(body)
248 assert.Nil(t, err)
249 assert.Equal(t, "Approve", body.Test)
250
251 w.Header().Set("Lfs-Authenticate", "Basic")
252 actual := req.Header.Get("Authorization")
253 if len(actual) == 0 {
254 w.WriteHeader(http.StatusUnauthorized)
255 return
256 }
257
258 expected := "Basic " + strings.TrimSpace(
259 base64.StdEncoding.EncodeToString([]byte("user:pass")),
260 )
261 assert.Equal(t, expected, actual)
262 }))
263 defer srv.Close()
264
265 cred := newMockCredentialHelper()
266 c, err := NewClient(lfshttp.NewContext(git.NewReadOnlyConfig("", ""),
267 nil, map[string]string{
268 "lfs.url": srv.URL + "/repo/lfs",
269 },
270 ))
271 require.Nil(t, err)
272 c.Credentials = cred
273
274 access := c.Endpoints.AccessFor(srv.URL + "/repo/lfs")
275 assert.Equal(t, creds.NoneAccess, (&access).Mode())
276
277 req, err := http.NewRequest("POST", srv.URL+"/repo/lfs/foo", nil)
278 require.Nil(t, err)
279
280 err = MarshalToRequest(req, &authRequest{Test: "Approve"})
281 require.Nil(t, err)
282
283 res, err := c.DoAPIRequestWithAuth("", req)
284 require.Nil(t, err)
285
286 assert.Equal(t, http.StatusOK, res.StatusCode)
287 assert.True(t, cred.IsApproved(creds.Creds(map[string][]string{
288 "username": []string{"user"},
289 "password": []string{"pass"},
290 "protocol": []string{"http"},
291 "host": []string{srv.Listener.Addr().String()},
292 })))
293 access = c.Endpoints.AccessFor(srv.URL + "/repo/lfs")
294 assert.Equal(t, creds.BasicAccess, (&access).Mode())
295 assert.EqualValues(t, 2, called)
296}

Callers

nothing calls this directly

Calls 15

DoAPIRequestWithAuthMethod · 0.95
NewContextFunction · 0.92
NewReadOnlyConfigFunction · 0.92
CredsTypeAlias · 0.92
newMockCredentialHelperFunction · 0.85
ModeMethod · 0.80
IsApprovedMethod · 0.80
NewClientFunction · 0.70
MarshalToRequestFunction · 0.70
SetMethod · 0.65
GetMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected