github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/api/firewaller/service_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package firewaller_test
     5  
     6  import (
     7  	gc "launchpad.net/gocheck"
     8  
     9  	"launchpad.net/juju-core/state/api/firewaller"
    10  	"launchpad.net/juju-core/state/api/params"
    11  	statetesting "launchpad.net/juju-core/state/testing"
    12  	jc "launchpad.net/juju-core/testing/checkers"
    13  )
    14  
    15  type serviceSuite struct {
    16  	firewallerSuite
    17  
    18  	apiService *firewaller.Service
    19  }
    20  
    21  var _ = gc.Suite(&serviceSuite{})
    22  
    23  func (s *serviceSuite) SetUpTest(c *gc.C) {
    24  	s.firewallerSuite.SetUpTest(c)
    25  
    26  	var err error
    27  	apiUnit, err := s.firewaller.Unit(s.units[0].Tag())
    28  	s.apiService, err = apiUnit.Service()
    29  	c.Assert(err, gc.IsNil)
    30  }
    31  
    32  func (s *serviceSuite) TearDownTest(c *gc.C) {
    33  	s.firewallerSuite.TearDownTest(c)
    34  }
    35  
    36  func (s *serviceSuite) TestName(c *gc.C) {
    37  	c.Assert(s.apiService.Name(), gc.Equals, s.service.Name())
    38  }
    39  
    40  func (s *serviceSuite) TestWatch(c *gc.C) {
    41  	c.Assert(s.apiService.Life(), gc.Equals, params.Alive)
    42  
    43  	w, err := s.apiService.Watch()
    44  	c.Assert(err, gc.IsNil)
    45  	defer statetesting.AssertStop(c, w)
    46  	wc := statetesting.NewNotifyWatcherC(c, s.BackingState, w)
    47  
    48  	// Initial event.
    49  	wc.AssertOneChange()
    50  
    51  	// Change something and check it's detected.
    52  	err = s.service.SetExposed()
    53  	c.Assert(err, gc.IsNil)
    54  	wc.AssertOneChange()
    55  
    56  	// Destroy the service and check it's detected.
    57  	err = s.service.Destroy()
    58  	c.Assert(err, gc.IsNil)
    59  	wc.AssertOneChange()
    60  
    61  	statetesting.AssertStop(c, w)
    62  	wc.AssertClosed()
    63  }
    64  
    65  func (s *serviceSuite) TestRefresh(c *gc.C) {
    66  	c.Assert(s.apiService.Life(), gc.Equals, params.Alive)
    67  
    68  	err := s.service.Destroy()
    69  	c.Assert(err, gc.IsNil)
    70  	c.Assert(s.apiService.Life(), gc.Equals, params.Alive)
    71  
    72  	err = s.apiService.Refresh()
    73  	c.Assert(err, gc.IsNil)
    74  	c.Assert(s.apiService.Life(), gc.Equals, params.Dying)
    75  }
    76  
    77  func (s *serviceSuite) TestIsExposed(c *gc.C) {
    78  	err := s.service.SetExposed()
    79  	c.Assert(err, gc.IsNil)
    80  
    81  	isExposed, err := s.apiService.IsExposed()
    82  	c.Assert(err, gc.IsNil)
    83  	c.Assert(isExposed, jc.IsTrue)
    84  
    85  	err = s.service.ClearExposed()
    86  	c.Assert(err, gc.IsNil)
    87  
    88  	isExposed, err = s.apiService.IsExposed()
    89  	c.Assert(err, gc.IsNil)
    90  	c.Assert(isExposed, jc.IsFalse)
    91  }