github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/client/resources/base_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package resources_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/charm/v12"
    10  	"github.com/juju/testing"
    11  	jc "github.com/juju/testing/checkers"
    12  	"go.uber.org/mock/gomock"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	"github.com/juju/juju/apiserver/facades/client/resources"
    16  	"github.com/juju/juju/apiserver/facades/client/resources/mocks"
    17  	coreresources "github.com/juju/juju/core/resources"
    18  	resourcetesting "github.com/juju/juju/core/resources/testing"
    19  	"github.com/juju/juju/rpc/params"
    20  )
    21  
    22  type BaseSuite struct {
    23  	testing.IsolationSuite
    24  
    25  	backend *mocks.MockBackend
    26  	factory *mocks.MockNewCharmRepository
    27  }
    28  
    29  func (s *BaseSuite) SetUpTest(c *gc.C) {
    30  	s.IsolationSuite.SetUpTest(c)
    31  }
    32  
    33  func (s *BaseSuite) setUpTest(c *gc.C) *gomock.Controller {
    34  	ctrl := gomock.NewController(c)
    35  	s.factory = mocks.NewMockNewCharmRepository(ctrl)
    36  	s.backend = mocks.NewMockBackend(ctrl)
    37  	return ctrl
    38  }
    39  
    40  func (s *BaseSuite) newFacade(c *gc.C) *resources.API {
    41  	factoryFunc := func(_ *charm.URL) (resources.NewCharmRepository, error) {
    42  		return s.factory, nil
    43  	}
    44  	facade, err := resources.NewResourcesAPI(s.backend, factoryFunc)
    45  	c.Assert(err, jc.ErrorIsNil)
    46  	return facade
    47  }
    48  
    49  func newResource(c *gc.C, name, username, data string) (coreresources.Resource, params.Resource) {
    50  	opened := resourcetesting.NewResource(c, nil, name, "a-application", data)
    51  	res := opened.Resource
    52  	res.Username = username
    53  	if username == "" {
    54  		res.Timestamp = time.Time{}
    55  	}
    56  
    57  	apiRes := params.Resource{
    58  		CharmResource: params.CharmResource{
    59  			Name:        name,
    60  			Description: name + " description",
    61  			Type:        "file",
    62  			Path:        res.Path,
    63  			Origin:      "upload",
    64  			Revision:    0,
    65  			Fingerprint: res.Fingerprint.Bytes(),
    66  			Size:        res.Size,
    67  		},
    68  		ID:            res.ID,
    69  		ApplicationID: res.ApplicationID,
    70  		Username:      username,
    71  		Timestamp:     res.Timestamp,
    72  	}
    73  
    74  	return res, apiRes
    75  }