diff options
author | Chris Dostert <chrisdostert@users.noreply.github.com> | 2017-04-10 09:55:18 -0700 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2017-04-10 18:55:18 +0200 |
commit | 3daede53835e8572b2957a016f068781db646567 (patch) | |
tree | 73ceb5e9f1eb99181db655de472bbd8e8540a687 /plumbing/transport/http | |
parent | 777dcd5647ffb263a8bbf3887232ee207138468a (diff) | |
download | go-git-3daede53835e8572b2957a016f068781db646567.tar.gz |
plumbing: transport, handle 403 in http transport
Diffstat (limited to 'plumbing/transport/http')
-rw-r--r-- | plumbing/transport/http/common.go | 4 | ||||
-rw-r--r-- | plumbing/transport/http/common_test.go | 6 | ||||
-rw-r--r-- | plumbing/transport/http/upload_pack.go | 7 | ||||
-rw-r--r-- | plumbing/transport/http/upload_pack_test.go | 2 |
4 files changed, 12 insertions, 7 deletions
diff --git a/plumbing/transport/http/common.go b/plumbing/transport/http/common.go index baad12e..930e8eb 100644 --- a/plumbing/transport/http/common.go +++ b/plumbing/transport/http/common.go @@ -132,7 +132,9 @@ func NewErr(r *http.Response) error { switch r.StatusCode { case http.StatusUnauthorized: - return transport.ErrAuthorizationRequired + return transport.ErrAuthenticationRequired + case http.StatusForbidden: + return transport.ErrAuthorizationFailed case http.StatusNotFound: return transport.ErrRepositoryNotFound } diff --git a/plumbing/transport/http/common_test.go b/plumbing/transport/http/common_test.go index 1fd0dd5..d1f36d3 100644 --- a/plumbing/transport/http/common_test.go +++ b/plumbing/transport/http/common_test.go @@ -51,7 +51,11 @@ func (s *ClientSuite) TestNewErrOK(c *C) { } func (s *ClientSuite) TestNewErrUnauthorized(c *C) { - s.testNewHTTPError(c, http.StatusUnauthorized, "authorization required") + s.testNewHTTPError(c, http.StatusUnauthorized, "authentication required") +} + +func (s *ClientSuite) TestNewErrForbidden(c *C) { + s.testNewHTTPError(c, http.StatusForbidden, "authorization failed") } func (s *ClientSuite) TestNewErrNotFound(c *C) { diff --git a/plumbing/transport/http/upload_pack.go b/plumbing/transport/http/upload_pack.go index fd1787c..8f73789 100644 --- a/plumbing/transport/http/upload_pack.go +++ b/plumbing/transport/http/upload_pack.go @@ -59,10 +59,9 @@ func (s *upSession) AdvertisedReferences() (*packp.AdvRefs, error) { return nil, err } - defer res.Body.Close() - - if res.StatusCode == http.StatusUnauthorized { - return nil, transport.ErrAuthorizationRequired + if err := NewErr(res); err != nil { + _ = res.Body.Close() + return nil, err } ar := packp.NewAdvRefs() diff --git a/plumbing/transport/http/upload_pack_test.go b/plumbing/transport/http/upload_pack_test.go index a793efb..57d5f46 100644 --- a/plumbing/transport/http/upload_pack_test.go +++ b/plumbing/transport/http/upload_pack_test.go @@ -38,7 +38,7 @@ func (s *UploadPackSuite) TestAdvertisedReferencesNotExists(c *C) { r, err := s.Client.NewUploadPackSession(s.NonExistentEndpoint, s.EmptyAuth) c.Assert(err, IsNil) info, err := r.AdvertisedReferences() - c.Assert(err, Equals, transport.ErrAuthorizationRequired) + c.Assert(err, Equals, transport.ErrAuthenticationRequired) c.Assert(info, IsNil) } |