github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/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 "github.com/juju/names" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 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 srv.Stop() 37 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, user.Tag()) 38 c.Assert(err, jc.ErrorIsNil) 39 c.Assert(authenticator, gc.NotNil) 40 userFinder := userFinder{user} 41 42 entity, err := authenticator.Authenticate(userFinder, user.Tag(), params.LoginRequest{ 43 Credentials: "password", 44 Nonce: "nonce", 45 }) 46 c.Assert(err, jc.ErrorIsNil) 47 c.Assert(entity, gc.DeepEquals, user) 48 } 49 50 func (s *agentAuthenticatorSuite) TestMachineGetsAgentAuthenticator(c *gc.C) { 51 srv := newServer(c, s.State) 52 defer srv.Stop() 53 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewMachineTag("0")) 54 c.Assert(err, jc.ErrorIsNil) 55 _, ok := authenticator.(*authentication.AgentAuthenticator) 56 c.Assert(ok, jc.IsTrue) 57 } 58 59 func (s *agentAuthenticatorSuite) TestUnitGetsAgentAuthenticator(c *gc.C) { 60 srv := newServer(c, s.State) 61 defer srv.Stop() 62 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewUnitTag("wordpress/0")) 63 c.Assert(err, jc.ErrorIsNil) 64 _, ok := authenticator.(*authentication.AgentAuthenticator) 65 c.Assert(ok, jc.IsTrue) 66 } 67 68 func (s *agentAuthenticatorSuite) TestNotSupportedTag(c *gc.C) { 69 srv := newServer(c, s.State) 70 defer srv.Stop() 71 authenticator, err := apiserver.ServerAuthenticatorForTag(srv, names.NewServiceTag("not-support")) 72 c.Assert(err, gc.ErrorMatches, "unexpected login entity tag: invalid request") 73 c.Assert(authenticator, gc.IsNil) 74 }