github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/api/client/backups/download_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package backups
     5  
     6  import (
     7  	"context"
     8  	"io"
     9  	"net/http"
    10  	"net/http/httptest"
    11  
    12  	jc "github.com/juju/testing/checkers"
    13  	gc "gopkg.in/check.v1"
    14  	"gopkg.in/httprequest.v1"
    15  )
    16  
    17  type downloadSuite struct {
    18  	baseSuite
    19  }
    20  
    21  var _ = gc.Suite(&downloadSuite{})
    22  
    23  func (s *downloadSuite) TestDownload(c *gc.C) {
    24  	defer s.setupMocks(c).Finish()
    25  
    26  	srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    27  		c.Assert(r.URL.String(), gc.Equals, "/backups")
    28  		_, err := w.Write([]byte("success"))
    29  		c.Assert(err, jc.ErrorIsNil)
    30  	}))
    31  	defer srv.Close()
    32  	httpClient := &httprequest.Client{BaseURL: srv.URL}
    33  
    34  	s.apiCaller.EXPECT().HTTPClient().Return(httpClient, nil)
    35  	s.apiCaller.EXPECT().Context().Return(context.TODO())
    36  
    37  	client := s.newClient()
    38  	rdr, err := client.Download("/path/to/backup")
    39  	c.Assert(err, jc.ErrorIsNil)
    40  	defer func() { _ = rdr.Close() }()
    41  
    42  	data, err := io.ReadAll(rdr)
    43  	c.Assert(err, jc.ErrorIsNil)
    44  	c.Assert(string(data), gc.Equals, "success")
    45  }