github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/common/crossmodel/mock_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package crossmodel_test 5 6 import ( 7 "time" 8 9 "github.com/juju/errors" 10 "gopkg.in/juju/names.v2" 11 "gopkg.in/macaroon-bakery.v2-unstable/bakery" 12 13 "github.com/juju/juju/apiserver/authentication" 14 "github.com/juju/juju/apiserver/common/crossmodel" 15 jujucrossmodel "github.com/juju/juju/core/crossmodel" 16 "github.com/juju/juju/permission" 17 coretesting "github.com/juju/juju/testing" 18 ) 19 20 type mockBakeryService struct { 21 *bakery.Service 22 } 23 24 func (m *mockBakeryService) ExpireStorageAfter(time.Duration) (authentication.ExpirableStorageBakeryService, error) { 25 return m, nil 26 } 27 28 type mockStatePool struct { 29 st map[string]crossmodel.Backend 30 } 31 32 func (st *mockStatePool) Get(modelUUID string) (crossmodel.Backend, func(), error) { 33 backend, ok := st.st[modelUUID] 34 if !ok { 35 return nil, nil, errors.NotFoundf("model for uuid %s", modelUUID) 36 } 37 return backend, func() {}, nil 38 } 39 40 type mockState struct { 41 crossmodel.Backend 42 tag names.ModelTag 43 permissions map[string]permission.Access 44 } 45 46 func (m *mockState) ApplicationOfferForUUID(offerUUID string) (*jujucrossmodel.ApplicationOffer, error) { 47 return &jujucrossmodel.ApplicationOffer{OfferUUID: offerUUID}, nil 48 } 49 50 func (m *mockState) UserPermission(subject names.UserTag, target names.Tag) (permission.Access, error) { 51 perm, ok := m.permissions[target.Id()+":"+subject.Id()] 52 if !ok { 53 return permission.NoAccess, nil 54 } 55 return perm, nil 56 } 57 58 func (m *mockState) GetOfferAccess(offerUUID string, user names.UserTag) (permission.Access, error) { 59 perm, ok := m.permissions[offerUUID+":"+user.Id()] 60 if !ok { 61 return permission.NoAccess, nil 62 } 63 return perm, nil 64 } 65 66 func (m *mockState) ControllerTag() names.ControllerTag { 67 return coretesting.ControllerTag 68 } 69 70 func (m *mockState) ModelTag() names.ModelTag { 71 return m.tag 72 }