github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/authenticator_test.go (about) 1 // Copyright 2014 Canonical Ltd. All rights reserved. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package apiserver_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/names.v2" 10 11 "github.com/juju/juju/apiserver" 12 "github.com/juju/juju/apiserver/authentication" 13 "github.com/juju/juju/apiserver/params" 14 "github.com/juju/juju/juju/testing" 15 "github.com/juju/juju/state" 16 "github.com/juju/juju/testing/factory" 17 ) 18 19 type agentAuthenticatorSuite struct { 20 testing.JujuConnSuite 21 } 22 type userFinder struct { 23 user state.Entity 24 } 25 26 func (u userFinder) FindEntity(tag names.Tag) (state.Entity, error) { 27 return u.user, nil 28 } 29 30 var _ = gc.Suite(&agentAuthenticatorSuite{}) 31 32 func (s *agentAuthenticatorSuite) TestAuthenticatorForTag(c *gc.C) { 33 fact := factory.NewFactory(s.State) 34 user := fact.MakeUser(c, &factory.UserParams{Password: "password"}) 35 _, srv := newServer(c, s.State) 36 defer assertStop(c, srv) 37 38 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, user.Tag()) 39 c.Assert(err, jc.ErrorIsNil) 40 c.Assert(authenticator, gc.NotNil) 41 userFinder := userFinder{user} 42 43 entity, err := authenticator.Authenticate(userFinder, user.Tag(), params.LoginRequest{ 44 Credentials: "password", 45 Nonce: "nonce", 46 }) 47 c.Assert(err, jc.ErrorIsNil) 48 c.Assert(entity, gc.DeepEquals, user) 49 } 50 51 func (s *agentAuthenticatorSuite) TestMachineGetsAgentAuthenticator(c *gc.C) { 52 _, srv := newServer(c, s.State) 53 defer srv.Stop() 54 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewMachineTag("0")) 55 c.Assert(err, jc.ErrorIsNil) 56 _, ok := authenticator.(*authentication.AgentAuthenticator) 57 c.Assert(ok, jc.IsTrue) 58 } 59 60 func (s *agentAuthenticatorSuite) TestUnitGetsAgentAuthenticator(c *gc.C) { 61 _, srv := newServer(c, s.State) 62 defer srv.Stop() 63 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewUnitTag("wordpress/0")) 64 c.Assert(err, jc.ErrorIsNil) 65 _, ok := authenticator.(*authentication.AgentAuthenticator) 66 c.Assert(ok, jc.IsTrue) 67 } 68 69 func (s *agentAuthenticatorSuite) TestNotSupportedTag(c *gc.C) { 70 _, srv := newServer(c, s.State) 71 defer srv.Stop() 72 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewApplicationTag("not-support")) 73 c.Assert(err, gc.ErrorMatches, "unexpected login entity tag: invalid request") 74 c.Assert(authenticator, gc.IsNil) 75 }