github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/observer/observer_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package observer_test 5 6 import ( 7 "net/http" 8 9 "github.com/juju/testing" 10 gc "gopkg.in/check.v1" 11 "gopkg.in/juju/names.v2" 12 13 "github.com/juju/juju/apiserver/observer" 14 "github.com/juju/juju/apiserver/observer/fakeobserver" 15 ) 16 17 type multiplexerSuite struct { 18 testing.IsolationSuite 19 } 20 21 var _ = gc.Suite(&multiplexerSuite{}) 22 23 func (*multiplexerSuite) TestObserverFactoryMultiplexer_CallsAllFactories(c *gc.C) { 24 callCount := 0 25 factories := []observer.ObserverFactory{ 26 func() observer.Observer { callCount++; return nil }, 27 func() observer.Observer { callCount++; return nil }, 28 } 29 30 newMultiplexObserver := observer.ObserverFactoryMultiplexer(factories...) 31 c.Assert(callCount, gc.Equals, 0) 32 33 multiplexedObserver := newMultiplexObserver() 34 c.Check(multiplexedObserver, gc.NotNil) 35 c.Check(callCount, gc.Equals, 2) 36 } 37 38 func (*multiplexerSuite) TestJoin_CallsAllObservers(c *gc.C) { 39 observers := []*fakeobserver.Instance{ 40 &fakeobserver.Instance{}, 41 &fakeobserver.Instance{}, 42 } 43 44 o := observer.NewMultiplexer(observers[0], observers[1]) 45 var req http.Request 46 o.Join(&req, 1234) 47 48 for _, f := range observers { 49 f.CheckCall(c, 0, "Join", &req, uint64(1234)) 50 } 51 } 52 53 func (*multiplexerSuite) TestLeave_CallsAllObservers(c *gc.C) { 54 observers := []*fakeobserver.Instance{ 55 &fakeobserver.Instance{}, 56 &fakeobserver.Instance{}, 57 } 58 59 o := observer.NewMultiplexer(observers[0], observers[1]) 60 o.Leave() 61 62 for _, f := range observers { 63 f.CheckCall(c, 0, "Leave") 64 } 65 } 66 67 func (*multiplexerSuite) TestRPCObserver_CallsAllObservers(c *gc.C) { 68 observers := []*fakeobserver.Instance{ 69 &fakeobserver.Instance{}, 70 &fakeobserver.Instance{}, 71 } 72 73 o := observer.NewMultiplexer(observers[0], observers[1]) 74 o.RPCObserver() 75 76 for _, f := range observers { 77 f.CheckCall(c, 0, "RPCObserver") 78 } 79 } 80 81 func (*multiplexerSuite) TestLogin_CallsAllObservers(c *gc.C) { 82 observers := []*fakeobserver.Instance{ 83 &fakeobserver.Instance{}, 84 &fakeobserver.Instance{}, 85 } 86 87 o := observer.NewMultiplexer(observers[0], observers[1]) 88 entity := names.NewMachineTag("42") 89 model := names.NewModelTag("fake-uuid") 90 fromController := false 91 userData := "foo" 92 o.Login(entity, model, fromController, userData) 93 94 for _, f := range observers { 95 f.CheckCall(c, 0, "Login", entity, model, fromController, userData) 96 } 97 }