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 }