From 8b3910d36c45b3103aee531592d9abc57b135fa5 Mon Sep 17 00:00:00 2001 From: "Richard T. Carback III" <rick.carback@gmail.com> Date: Wed, 5 Oct 2022 17:15:46 +0000 Subject: [PATCH] Add test for duplicate inserts --- indexedDb/implementation.go | 4 +-- indexedDb/implementation_test.go | 45 +++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/indexedDb/implementation.go b/indexedDb/implementation.go index 0b723642..0d536811 100644 --- a/indexedDb/implementation.go +++ b/indexedDb/implementation.go @@ -167,7 +167,7 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID, if !messageID.Equals(cryptoChannel.MessageID{}) { jww.DEBUG.Printf("non-empty messageID detected") uuid, err := w.msgIDLookup(messageID) - if err != nil { + if err == nil { jww.DEBUG.Printf("MessageID found: %d", uuid) // message is already in the database, no // insert necessary @@ -241,7 +241,7 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID, // receives their own message from the mixnet. if !messageID.Equals(cryptoChannel.MessageID{}) { uuid, err := w.msgIDLookup(messageID) - if err != nil { + if err == nil { // message is already in the database, no insert necessary return uuid } diff --git a/indexedDb/implementation_test.go b/indexedDb/implementation_test.go index f47117f7..e76b2737 100644 --- a/indexedDb/implementation_test.go +++ b/indexedDb/implementation_test.go @@ -126,7 +126,7 @@ func TestWasmModel_JoinChannel_LeaveChannel(t *testing.T) { } } -// Test wasmModel.UpdateSentStatus happy path and ensure fields don't change. +// Test UUID gets returned when different messages are added func TestWasmModel_UUIDTest(t *testing.T) { testString := "testHello" eventModel, err := newWASMModel(testString, dummyCallback) @@ -167,3 +167,46 @@ func TestWasmModel_UUIDTest(t *testing.T) { } } } + +// TestWasmModel_DuplicateReceives tests if the same message ID being sent +// always returns the same uuid +func TestWasmModel_DuplicateReceives(t *testing.T) { + testString := "testHello" + eventModel, err := newWASMModel(testString, dummyCallback) + if err != nil { + t.Fatalf("%+v", err) + } + + cid := channel.Identity{ + Codename: "codename123", + PubKey: []byte{8, 6, 7, 5}, + Color: "#FFFFFF", + Extension: "gif", + CodesetVersion: 0, + } + + uuids := make([]uint64, 10) + + msgID := channel.MessageID{} + copy(msgID[:], testString) + for i := 0; i < 10; i++ { + // Store a test message + channelID := id.NewIdFromBytes([]byte(testString), t) + rnd := rounds.Round{ID: id.Round(42)} + uuid := eventModel.ReceiveMessage(channelID, msgID, + "test", testString+fmt.Sprintf("%d", i), cid, time.Now(), + time.Hour, rnd, 0, channels.Sent) + uuids[i] = uuid + } + + _, _ = eventModel.dump(messageStoreName) + + for i := 0; i < 10; i++ { + for j := i + 1; j < 10; j++ { + if uuids[i] != uuids[j] { + t.Fatalf("uuid failed: %d[%d] != %d[%d]", + uuids[i], i, uuids[j], j) + } + } + } +} -- GitLab