github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/audit/audit_test.go (about) 1 // Copyright 2013, 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package audit 5 6 import ( 7 "testing" 8 9 "github.com/juju/loggo" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 ) 13 14 func Test(t *testing.T) { 15 gc.TestingT(t) 16 } 17 18 type auditSuite struct{} 19 20 var _ = gc.Suite(&auditSuite{}) 21 22 func (*auditSuite) SetUpTest(c *gc.C) { 23 loggo.ResetLoggers() 24 loggo.ResetWriters() 25 err := loggo.ConfigureLoggers(`<root>=ERROR; audit=INFO`) 26 c.Assert(err, jc.ErrorIsNil) 27 } 28 29 type mockUser struct { 30 tag string 31 } 32 33 func (u *mockUser) Tag() string { return u.tag } 34 35 func (*auditSuite) TestAuditEventWrittenToAuditLogger(c *gc.C) { 36 var tw loggo.TestWriter 37 c.Assert(loggo.RegisterWriter("audit-log", &tw, loggo.DEBUG), gc.IsNil) 38 39 u := &mockUser{tag: "user-agnus"} 40 Audit(u, "donut eaten, %v donut(s) remain", 7) 41 42 // Add deprecated message to be checked. 43 messages := []jc.SimpleMessage{ 44 {loggo.INFO, `user-agnus: donut eaten, 7 donut\(s\) remain`}, 45 } 46 47 c.Check(tw.Log(), jc.LogMatches, messages) 48 } 49 50 func (*auditSuite) TestAuditWithNilUserWillPanic(c *gc.C) { 51 f := func() { Audit(nil, "should never be written") } 52 c.Assert(f, gc.PanicMatches, "user cannot be nil") 53 } 54 55 func (*auditSuite) TestAuditWithEmptyTagWillPanic(c *gc.C) { 56 f := func() { Audit(&mockUser{}, "should never be written") } 57 c.Assert(f, gc.PanicMatches, "user tag cannot be blank") 58 }