github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/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 "context" 8 "time" 9 10 "github.com/go-macaroon-bakery/macaroon-bakery/v3/bakery" 11 "github.com/go-macaroon-bakery/macaroon-bakery/v3/bakery/checkers" 12 "github.com/juju/names/v5" 13 "gopkg.in/macaroon.v2" 14 15 "github.com/juju/juju/apiserver/authentication" 16 "github.com/juju/juju/apiserver/common/crossmodel" 17 jujucrossmodel "github.com/juju/juju/core/crossmodel" 18 "github.com/juju/juju/core/permission" 19 coretesting "github.com/juju/juju/testing" 20 ) 21 22 type mockBakery struct { 23 *bakery.Bakery 24 } 25 26 func (m *mockBakery) ExpireStorageAfter(time.Duration) (authentication.ExpirableStorageBakery, error) { 27 return m, nil 28 } 29 30 func (m *mockBakery) Auth(mss ...macaroon.Slice) *bakery.AuthChecker { 31 return m.Bakery.Checker.Auth(mss...) 32 } 33 34 func (m *mockBakery) NewMacaroon(ctx context.Context, version bakery.Version, caveats []checkers.Caveat, ops ...bakery.Op) (*bakery.Macaroon, error) { 35 return m.Bakery.Oven.NewMacaroon(ctx, version, caveats, ops...) 36 } 37 38 type mockState struct { 39 crossmodel.Backend 40 tag names.ModelTag 41 permissions map[string]permission.Access 42 } 43 44 func (m *mockState) ApplicationOfferForUUID(offerUUID string) (*jujucrossmodel.ApplicationOffer, error) { 45 return &jujucrossmodel.ApplicationOffer{OfferUUID: offerUUID}, nil 46 } 47 48 func (m *mockState) UserPermission(subject names.UserTag, target names.Tag) (permission.Access, error) { 49 perm, ok := m.permissions[target.Id()+":"+subject.Id()] 50 if !ok { 51 return permission.NoAccess, nil 52 } 53 return perm, nil 54 } 55 56 func (m *mockState) GetOfferAccess(offerUUID string, user names.UserTag) (permission.Access, error) { 57 perm, ok := m.permissions[offerUUID+":"+user.Id()] 58 if !ok { 59 return permission.NoAccess, nil 60 } 61 return perm, nil 62 } 63 64 func (m *mockState) ControllerTag() names.ControllerTag { 65 return coretesting.ControllerTag 66 } 67 68 func (m *mockState) ModelTag() names.ModelTag { 69 return m.tag 70 }