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  }