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 }