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 }