github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/testing/fakeapi_test.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package testing_test
     5  
     6  import (
     7  	"github.com/juju/names/v5"
     8  	"github.com/juju/testing"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/api"
    13  	apiservertesting "github.com/juju/juju/apiserver/testing"
    14  	"github.com/juju/juju/rpc/params"
    15  	jtesting "github.com/juju/juju/testing"
    16  	"github.com/juju/juju/version"
    17  )
    18  
    19  var _ = gc.Suite(&fakeAPISuite{})
    20  
    21  type fakeAPISuite struct {
    22  	testing.IsolationSuite
    23  }
    24  
    25  const fakeUUID = "f47ac10b-58cc-dead-beef-0e02b2c3d479"
    26  
    27  func (*fakeAPISuite) TestFakeAPI(c *gc.C) {
    28  	var r root
    29  	srv := apiservertesting.NewAPIServer(func(modelUUID string) interface{} {
    30  		c.Check(modelUUID, gc.Equals, fakeUUID)
    31  		return &r
    32  	})
    33  	defer srv.Close()
    34  	info := &api.Info{
    35  		Addrs:    srv.Addrs,
    36  		CACert:   jtesting.CACert,
    37  		ModelTag: names.NewModelTag(fakeUUID),
    38  	}
    39  	_, err := api.Open(info, api.DialOpts{})
    40  	c.Assert(err, jc.ErrorIsNil)
    41  
    42  	c.Assert(r.calledMethods, jc.DeepEquals, []string{"Login"})
    43  }
    44  
    45  type root struct {
    46  	calledMethods []string
    47  }
    48  
    49  type facade struct {
    50  	r *root
    51  }
    52  
    53  func (r *root) Admin(id string) (facade, error) {
    54  	return facade{r}, nil
    55  }
    56  
    57  func (f facade) Login(req params.LoginRequest) (params.LoginResult, error) {
    58  	f.r.calledMethods = append(f.r.calledMethods, "Login")
    59  	return params.LoginResult{
    60  		ModelTag:      names.NewModelTag(fakeUUID).String(),
    61  		ControllerTag: names.NewControllerTag(fakeUUID).String(),
    62  		UserInfo: &params.AuthUserInfo{
    63  			DisplayName: "foo",
    64  			Identity:    "user-bar",
    65  		},
    66  		ServerVersion: version.Current.String(),
    67  	}, nil
    68  }