github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/audit/audit_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package audit_test 5 6 import ( 7 "time" 8 9 "github.com/juju/errors" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 "github.com/juju/utils" 13 "github.com/juju/version" 14 gc "gopkg.in/check.v1" 15 16 "github.com/juju/juju/audit" 17 ) 18 19 type auditSuite struct { 20 testing.IsolationSuite 21 } 22 23 var _ = gc.Suite(&auditSuite{}) 24 25 func (s *auditSuite) TestValidate_EmptyModelUUIDErrors(c *gc.C) { 26 invalidEntry := validEntry() 27 invalidEntry.ModelUUID = "" 28 29 validationErr := invalidEntry.Validate() 30 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 31 c.Check(validationErr, gc.ErrorMatches, "ModelUUID not assigned") 32 } 33 34 func (s *auditSuite) TestValidate_InvalidModelUUIDErrors(c *gc.C) { 35 invalidEntry := validEntry() 36 invalidEntry.ModelUUID = "." 37 38 validationErr := invalidEntry.Validate() 39 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 40 c.Check(validationErr, gc.ErrorMatches, "ModelUUID not valid") 41 } 42 43 func (s *auditSuite) TestValidate_EmptyTimestampErrors(c *gc.C) { 44 invalidEntry := validEntry() 45 invalidEntry.Timestamp = time.Time{} 46 47 validationErr := invalidEntry.Validate() 48 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 49 c.Check(validationErr, gc.ErrorMatches, "Timestamp not assigned") 50 } 51 52 func (s *auditSuite) TestValidate_NonUTCTimestampInvalid(c *gc.C) { 53 invalidEntry := validEntry() 54 invalidEntry.Timestamp = invalidEntry.Timestamp.In(time.FixedZone("x", 3600)) 55 56 validationErr := invalidEntry.Validate() 57 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 58 c.Check(validationErr, gc.ErrorMatches, "must be set to UTC: Timestamp not valid") 59 } 60 61 func (s *auditSuite) TestValidate_NilOriginIPErrors(c *gc.C) { 62 invalidEntry := validEntry() 63 invalidEntry.RemoteAddress = "" 64 65 validationErr := invalidEntry.Validate() 66 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 67 c.Check(validationErr, gc.ErrorMatches, "RemoteAddress not assigned") 68 } 69 70 func (s *auditSuite) TestValidate_EmptyOriginTypeErrors(c *gc.C) { 71 invalidEntry := validEntry() 72 invalidEntry.OriginType = "" 73 74 validationErr := invalidEntry.Validate() 75 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 76 c.Check(validationErr, gc.ErrorMatches, "OriginType not assigned") 77 } 78 79 func (s *auditSuite) TestValidate_EmptyOriginNameErrors(c *gc.C) { 80 invalidEntry := validEntry() 81 invalidEntry.OriginName = "" 82 83 validationErr := invalidEntry.Validate() 84 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 85 c.Check(validationErr, gc.ErrorMatches, "OriginName not assigned") 86 } 87 88 func (s *auditSuite) TestValidate_EmptyOperationErrors(c *gc.C) { 89 invalidEntry := validEntry() 90 invalidEntry.Operation = "" 91 92 validationErr := invalidEntry.Validate() 93 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 94 c.Check(validationErr, gc.ErrorMatches, "Operation not assigned") 95 } 96 97 func (s *auditSuite) TestValidate_EmptyJujuServerVersionErrors(c *gc.C) { 98 invalidEntry := validEntry() 99 invalidEntry.JujuServerVersion = version.Zero 100 101 validationErr := invalidEntry.Validate() 102 c.Check(validationErr, jc.Satisfies, errors.IsNotValid) 103 c.Check(validationErr, gc.ErrorMatches, "JujuServerVersion not assigned") 104 } 105 106 func validEntry() audit.AuditEntry { 107 return audit.AuditEntry{ 108 JujuServerVersion: version.MustParse("1.0.0"), 109 ModelUUID: utils.MustNewUUID().String(), 110 Timestamp: time.Now().UTC(), 111 RemoteAddress: "8.8.8.8", 112 OriginType: ".", 113 OriginName: ".", 114 Operation: ".", 115 } 116 }