github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/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 gc "launchpad.net/gocheck" 10 11 "launchpad.net/juju-core/juju/testing" 12 "launchpad.net/juju-core/state" 13 "launchpad.net/juju-core/state/api" 14 "launchpad.net/juju-core/state/api/params" 15 jc "launchpad.net/juju-core/testing/checkers" 16 "launchpad.net/juju-core/utils" 17 ) 18 19 var _ = gc.Suite(&unitSuite{}) 20 21 type unitSuite struct { 22 testing.JujuConnSuite 23 unit *state.Unit 24 st *api.State 25 } 26 27 func (s *unitSuite) SetUpTest(c *gc.C) { 28 var err error 29 s.JujuConnSuite.SetUpTest(c) 30 svc := s.AddTestingService(c, "wordpress", s.AddTestingCharm(c, "wordpress")) 31 s.unit, err = svc.AddUnit() 32 c.Assert(err, gc.IsNil) 33 password, err := utils.RandomPassword() 34 c.Assert(err, gc.IsNil) 35 err = s.unit.SetPassword(password) 36 37 s.st = s.OpenAPIAs(c, s.unit.Tag(), password) 38 } 39 40 func (s *unitSuite) TestUnitEntity(c *gc.C) { 41 m, err := s.st.Agent().Entity("wordpress/1") 42 c.Assert(err, gc.ErrorMatches, "permission denied") 43 c.Assert(err, jc.Satisfies, params.IsCodeUnauthorized) 44 c.Assert(m, gc.IsNil) 45 46 m, err = s.st.Agent().Entity(s.unit.Tag()) 47 c.Assert(err, gc.IsNil) 48 c.Assert(m.Tag(), gc.Equals, s.unit.Tag()) 49 c.Assert(m.Life(), gc.Equals, params.Alive) 50 c.Assert(m.Jobs(), gc.HasLen, 0) 51 52 err = s.unit.EnsureDead() 53 c.Assert(err, gc.IsNil) 54 err = s.unit.Remove() 55 c.Assert(err, gc.IsNil) 56 57 m, err = s.st.Agent().Entity(s.unit.Tag()) 58 c.Assert(err, gc.ErrorMatches, fmt.Sprintf("unit %q not found", s.unit.Name())) 59 c.Assert(err, jc.Satisfies, params.IsCodeNotFound) 60 c.Assert(m, gc.IsNil) 61 }