github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/storetest/audit_store.go (about) 1 // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package storetest 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/xzl8028/xenia-server/model" 11 "github.com/xzl8028/xenia-server/store" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestAuditStore(t *testing.T, ss store.Store) { 17 t.Run("", func(t *testing.T) { testAuditStore(t, ss) }) 18 t.Run("PermanentDeleteBatch", func(t *testing.T) { testAuditStorePermanentDeleteBatch(t, ss) }) 19 } 20 21 func testAuditStore(t *testing.T, ss store.Store) { 22 audit := &model.Audit{UserId: model.NewId(), IpAddress: "ipaddress", Action: "Action"} 23 require.Nil(t, ss.Audit().Save(audit)) 24 time.Sleep(100 * time.Millisecond) 25 require.Nil(t, ss.Audit().Save(audit)) 26 time.Sleep(100 * time.Millisecond) 27 require.Nil(t, ss.Audit().Save(audit)) 28 time.Sleep(100 * time.Millisecond) 29 audit.ExtraInfo = "extra" 30 time.Sleep(100 * time.Millisecond) 31 require.Nil(t, ss.Audit().Save(audit)) 32 33 time.Sleep(100 * time.Millisecond) 34 35 audits, err := ss.Audit().Get(audit.UserId, 0, 100) 36 require.Nil(t, err) 37 38 assert.Len(t, audits, 4) 39 40 assert.Equal(t, "extra", audits[0].ExtraInfo) 41 42 audits, err = ss.Audit().Get("missing", 0, 100) 43 44 assert.Len(t, audits, 0) 45 46 audits, err = ss.Audit().Get("", 0, 100) 47 48 if len(audits) < 4 { 49 t.Fatal("Failed to save and retrieve 4 audit logs") 50 } 51 52 require.Nil(t, ss.Audit().PermanentDeleteByUser(audit.UserId)) 53 } 54 55 func testAuditStorePermanentDeleteBatch(t *testing.T, ss store.Store) { 56 a1 := &model.Audit{UserId: model.NewId(), IpAddress: "ipaddress", Action: "Action"} 57 require.Nil(t, ss.Audit().Save(a1)) 58 time.Sleep(10 * time.Millisecond) 59 a2 := &model.Audit{UserId: a1.UserId, IpAddress: "ipaddress", Action: "Action"} 60 require.Nil(t, ss.Audit().Save(a2)) 61 time.Sleep(10 * time.Millisecond) 62 cutoff := model.GetMillis() 63 time.Sleep(10 * time.Millisecond) 64 a3 := &model.Audit{UserId: a1.UserId, IpAddress: "ipaddress", Action: "Action"} 65 require.Nil(t, ss.Audit().Save(a3)) 66 67 audits, err := ss.Audit().Get(a1.UserId, 0, 100) 68 assert.Len(t, audits, 3) 69 70 _, err = ss.Audit().PermanentDeleteBatch(cutoff, 1000000) 71 require.Nil(t, err) 72 73 audits, err = ss.Audit().Get(a1.UserId, 0, 100) 74 assert.Len(t, audits, 1) 75 76 require.Nil(t, ss.Audit().PermanentDeleteByUser(a1.UserId)) 77 }