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: ¶ms.AuthUserInfo{ 63 DisplayName: "foo", 64 Identity: "user-bar", 65 }, 66 ServerVersion: version.Current.String(), 67 }, nil 68 }