github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/api/agent/unit_test.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package agent_test 5 6 import ( 7 "fmt" 8 9 "github.com/juju/names" 10 jc "github.com/juju/testing/checkers" 11 "github.com/juju/utils" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/api" 15 apiagent "github.com/juju/juju/api/agent" 16 "github.com/juju/juju/apiserver/params" 17 "github.com/juju/juju/juju/testing" 18 "github.com/juju/juju/state" 19 ) 20 21 var _ = gc.Suite(&unitSuite{}) 22 23 type unitSuite struct { 24 testing.JujuConnSuite 25 unit *state.Unit 26 st api.Connection 27 } 28 29 func (s *unitSuite) SetUpTest(c *gc.C) { 30 var err error 31 s.JujuConnSuite.SetUpTest(c) 32 svc := s.AddTestingService(c, "wordpress", s.AddTestingCharm(c, "wordpress")) 33 s.unit, err = svc.AddUnit() 34 c.Assert(err, jc.ErrorIsNil) 35 password, err := utils.RandomPassword() 36 c.Assert(err, jc.ErrorIsNil) 37 err = s.unit.SetPassword(password) 38 c.Assert(err, jc.ErrorIsNil) 39 40 s.st = s.OpenAPIAs(c, s.unit.Tag(), password) 41 } 42 43 func (s *unitSuite) TestUnitEntity(c *gc.C) { 44 tag := names.NewUnitTag("wordpress/1") 45 m, err := apiagent.NewState(s.st).Entity(tag) 46 c.Assert(err, gc.ErrorMatches, "permission denied") 47 c.Assert(err, jc.Satisfies, params.IsCodeUnauthorized) 48 c.Assert(m, gc.IsNil) 49 50 m, err = apiagent.NewState(s.st).Entity(s.unit.Tag()) 51 c.Assert(err, jc.ErrorIsNil) 52 c.Assert(m.Tag(), gc.Equals, s.unit.Tag().String()) 53 c.Assert(m.Life(), gc.Equals, params.Alive) 54 c.Assert(m.Jobs(), gc.HasLen, 0) 55 56 err = s.unit.EnsureDead() 57 c.Assert(err, jc.ErrorIsNil) 58 err = s.unit.Remove() 59 c.Assert(err, jc.ErrorIsNil) 60 61 m, err = apiagent.NewState(s.st).Entity(s.unit.Tag()) 62 c.Assert(err, gc.ErrorMatches, fmt.Sprintf("unit %q not found", s.unit.Name())) 63 c.Assert(err, jc.Satisfies, params.IsCodeNotFound) 64 c.Assert(m, gc.IsNil) 65 }