github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/testing/fakeapi_test.go (about)

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