aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/transport/http
diff options
context:
space:
mode:
authorChris Dostert <chrisdostert@users.noreply.github.com>2017-04-10 09:55:18 -0700
committerMáximo Cuadros <mcuadros@gmail.com>2017-04-10 18:55:18 +0200
commit3daede53835e8572b2957a016f068781db646567 (patch)
tree73ceb5e9f1eb99181db655de472bbd8e8540a687 /plumbing/transport/http
parent777dcd5647ffb263a8bbf3887232ee207138468a (diff)
downloadgo-git-3daede53835e8572b2957a016f068781db646567.tar.gz
plumbing: transport, handle 403 in http transport
Diffstat (limited to 'plumbing/transport/http')
-rw-r--r--plumbing/transport/http/common.go4
-rw-r--r--plumbing/transport/http/common_test.go6
-rw-r--r--plumbing/transport/http/upload_pack.go7
-rw-r--r--plumbing/transport/http/upload_pack_test.go2
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)
}