github.com/qichengzx/mattermost-server@v4.5.1-0.20180604164826-2c75247c97d0+incompatible/store/storetest/audit_store.go (about) 1 // Copyright (c) 2015-present Mattermost, 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/mattermost/mattermost-server/model" 11 "github.com/mattermost/mattermost-server/store" 12 ) 13 14 func TestAuditStore(t *testing.T, ss store.Store) { 15 t.Run("", func(t *testing.T) { testAuditStore(t, ss) }) 16 t.Run("PermanentDeleteBatch", func(t *testing.T) { testAuditStorePermanentDeleteBatch(t, ss) }) 17 } 18 19 func testAuditStore(t *testing.T, ss store.Store) { 20 audit := &model.Audit{UserId: model.NewId(), IpAddress: "ipaddress", Action: "Action"} 21 store.Must(ss.Audit().Save(audit)) 22 time.Sleep(100 * time.Millisecond) 23 store.Must(ss.Audit().Save(audit)) 24 time.Sleep(100 * time.Millisecond) 25 store.Must(ss.Audit().Save(audit)) 26 time.Sleep(100 * time.Millisecond) 27 audit.ExtraInfo = "extra" 28 time.Sleep(100 * time.Millisecond) 29 store.Must(ss.Audit().Save(audit)) 30 31 time.Sleep(100 * time.Millisecond) 32 33 c := ss.Audit().Get(audit.UserId, 0, 100) 34 result := <-c 35 audits := result.Data.(model.Audits) 36 37 if len(audits) != 4 { 38 t.Fatal("Failed to save and retrieve 4 audit logs") 39 } 40 41 if audits[0].ExtraInfo != "extra" { 42 t.Fatal("Failed to save property for extra info") 43 } 44 45 c = ss.Audit().Get("missing", 0, 100) 46 result = <-c 47 audits = result.Data.(model.Audits) 48 49 if len(audits) != 0 { 50 t.Fatal("Should have returned empty because user_id is missing") 51 } 52 53 c = ss.Audit().Get("", 0, 100) 54 result = <-c 55 audits = result.Data.(model.Audits) 56 57 if len(audits) < 4 { 58 t.Fatal("Failed to save and retrieve 4 audit logs") 59 } 60 61 if r2 := <-ss.Audit().PermanentDeleteByUser(audit.UserId); r2.Err != nil { 62 t.Fatal(r2.Err) 63 } 64 } 65 66 func testAuditStorePermanentDeleteBatch(t *testing.T, ss store.Store) { 67 a1 := &model.Audit{UserId: model.NewId(), IpAddress: "ipaddress", Action: "Action"} 68 store.Must(ss.Audit().Save(a1)) 69 time.Sleep(10 * time.Millisecond) 70 a2 := &model.Audit{UserId: a1.UserId, IpAddress: "ipaddress", Action: "Action"} 71 store.Must(ss.Audit().Save(a2)) 72 time.Sleep(10 * time.Millisecond) 73 cutoff := model.GetMillis() 74 time.Sleep(10 * time.Millisecond) 75 a3 := &model.Audit{UserId: a1.UserId, IpAddress: "ipaddress", Action: "Action"} 76 store.Must(ss.Audit().Save(a3)) 77 78 if r := <-ss.Audit().Get(a1.UserId, 0, 100); len(r.Data.(model.Audits)) != 3 { 79 t.Fatal("Expected 3 audits. Got ", len(r.Data.(model.Audits))) 80 } 81 82 store.Must(ss.Audit().PermanentDeleteBatch(cutoff, 1000000)) 83 84 if r := <-ss.Audit().Get(a1.UserId, 0, 100); len(r.Data.(model.Audits)) != 1 { 85 t.Fatal("Expected 1 audit. Got ", len(r.Data.(model.Audits))) 86 } 87 88 if r2 := <-ss.Audit().PermanentDeleteByUser(a1.UserId); r2.Err != nil { 89 t.Fatal(r2.Err) 90 } 91 }