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