github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/stateauthenticator/authenticator_test.go (about) 1 // Copyright 2014-2018 Canonical Ltd. All rights reserved. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package stateauthenticator_test 5 6 import ( 7 "github.com/juju/clock" 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/apiserver/authentication" 13 "github.com/juju/juju/apiserver/params" 14 "github.com/juju/juju/apiserver/stateauthenticator" 15 "github.com/juju/juju/state" 16 statetesting "github.com/juju/juju/state/testing" 17 "github.com/juju/juju/testing/factory" 18 ) 19 20 // TODO update these tests (moved from apiserver) to test 21 // via the public interface, and then get rid of export_test.go. 22 type agentAuthenticatorSuite struct { 23 statetesting.StateSuite 24 authenticator *stateauthenticator.Authenticator 25 } 26 27 var _ = gc.Suite(&agentAuthenticatorSuite{}) 28 29 func (s *agentAuthenticatorSuite) SetUpTest(c *gc.C) { 30 s.StateSuite.SetUpTest(c) 31 authenticator, err := stateauthenticator.NewAuthenticator(s.StatePool, clock.WallClock) 32 c.Assert(err, jc.ErrorIsNil) 33 s.authenticator = authenticator 34 } 35 36 func (s *agentAuthenticatorSuite) TestAuthenticatorForTag(c *gc.C) { 37 user := s.Factory.MakeUser(c, &factory.UserParams{Password: "password"}) 38 39 authenticator, err := stateauthenticator.EntityAuthenticator(s.authenticator, user.Tag()) 40 c.Assert(err, jc.ErrorIsNil) 41 c.Assert(authenticator, gc.NotNil) 42 userFinder := userFinder{user} 43 44 entity, err := authenticator.Authenticate(userFinder, user.Tag(), params.LoginRequest{ 45 Credentials: "password", 46 Nonce: "nonce", 47 }) 48 c.Assert(err, jc.ErrorIsNil) 49 c.Assert(entity, gc.DeepEquals, user) 50 } 51 52 func (s *agentAuthenticatorSuite) TestMachineGetsAgentAuthenticator(c *gc.C) { 53 authenticator, err := stateauthenticator.EntityAuthenticator(s.authenticator, 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 authenticator, err := stateauthenticator.EntityAuthenticator(s.authenticator, names.NewUnitTag("wordpress/0")) 61 c.Assert(err, jc.ErrorIsNil) 62 _, ok := authenticator.(*authentication.AgentAuthenticator) 63 c.Assert(ok, jc.IsTrue) 64 } 65 66 func (s *agentAuthenticatorSuite) TestNotSupportedTag(c *gc.C) { 67 authenticator, err := stateauthenticator.EntityAuthenticator(s.authenticator, names.NewCloudTag("not-support")) 68 c.Assert(err, gc.ErrorMatches, "unexpected login entity tag: invalid request") 69 c.Assert(authenticator, gc.IsNil) 70 } 71 72 type userFinder struct { 73 user state.Entity 74 } 75 76 func (u userFinder) FindEntity(tag names.Tag) (state.Entity, error) { 77 return u.user, nil 78 }