github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 "gopkg.in/juju/names.v2" 11 12 "github.com/juju/juju/api" 13 "github.com/juju/juju/apiserver/params" 14 apiservertesting "github.com/juju/juju/apiserver/testing" 15 jtesting "github.com/juju/juju/testing" 16 ) 17 18 var _ = gc.Suite(&fakeAPISuite{}) 19 20 type fakeAPISuite struct { 21 testing.IsolationSuite 22 } 23 24 const fakeUUID = "f47ac10b-58cc-dead-beef-0e02b2c3d479" 25 26 func (*fakeAPISuite) TestFakeAPI(c *gc.C) { 27 var r root 28 srv := apiservertesting.NewAPIServer(func(modelUUID string) interface{} { 29 c.Check(modelUUID, gc.Equals, fakeUUID) 30 return &r 31 }) 32 defer srv.Close() 33 info := &api.Info{ 34 Addrs: srv.Addrs, 35 CACert: jtesting.CACert, 36 ModelTag: names.NewModelTag(fakeUUID), 37 } 38 _, err := api.Open(info, api.DialOpts{}) 39 c.Assert(err, jc.ErrorIsNil) 40 41 c.Assert(r.calledMethods, jc.DeepEquals, []string{"Login"}) 42 } 43 44 type root struct { 45 calledMethods []string 46 } 47 48 type facade struct { 49 r *root 50 } 51 52 func (r *root) Admin(id string) (facade, error) { 53 return facade{r}, nil 54 } 55 56 func (f facade) Login(req params.LoginRequest) (params.LoginResult, error) { 57 f.r.calledMethods = append(f.r.calledMethods, "Login") 58 return params.LoginResult{ 59 ModelTag: names.NewModelTag(fakeUUID).String(), 60 ControllerTag: names.NewControllerTag(fakeUUID).String(), 61 UserInfo: ¶ms.AuthUserInfo{ 62 DisplayName: "foo", 63 Identity: "user-bar", 64 }, 65 ServerVersion: "1.0.0", 66 }, nil 67 }