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  }