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  }