diff --git a/indexedDb/impl/channels/implementation_test.go b/indexedDb/impl/channels/implementation_test.go
index 386e5a7717859a67e8b51ea1c32d8d6fad6521af..b652931769ab0e1aac4c76f27c08e03135146213 100644
--- a/indexedDb/impl/channels/implementation_test.go
+++ b/indexedDb/impl/channels/implementation_test.go
@@ -590,3 +590,68 @@ func TestWasmModel_receiveHelper_UniqueIndex(t *testing.T) {
 		})
 	}
 }
+
+func TestUpsertMessageDuplicates(t *testing.T) {
+	msgJSON := []byte(`{"pubkey":"4gFD38jRhf/aNDRzaguLJHHgTncs0pwvNiRvjTBOaXk=",
+                "dm_token":3173028031,
+		"nickname":"",
+		"message_id":"BTi+V2anHhrRAEcCMm6g2Bs9oKn7PhQzCzvM7x8Ml7A=",
+		"channel_id":"Gt1T8t1GcnQXijiOjX5yjiLt3F8tnPB9S70ntBx86h8D",
+		"parent_message_id":null,
+		"pinned":false,
+		"hidden":false,
+		"round":151369004,
+		"codeset_version":0,
+		"timestamp": "2023-06-06T19:39:27.281204113Z",
+		"lease_v2":"30000000000",
+		"status":2,
+		"type":1,
+		"text":"KzT25s76K9AEIv0HadhjULkU37dkCUp/8N9+5UkkA8pLEBK71P7KFMr2xii/enYr4jpQcayNm82WD4wisimkK2wtaKb0hJIELAxJHxHilF2qVcDYn7zmx2ZiYkerZGTlf7DkHPZrA+EJJIu9gZ4ApR8TNVf15GxPSDGKHV6iv7vEMrrdoi4JKOFTpNsUjjbDykc91ADmmRlh5LUR/lqyt7bEasyVY2Zo+UiZpJrUJII0fhhn0HLbfs6ekg1tkq+vbPap3vNoebLZag3nEnMk+JqNjVW93BFICSMFv8cYX9q0sSK6sgHtz0HX9b7xTEFVHlCb2Zv/ErOX2LiedsgM4aGpOvjGYQM9ludCutVJArfM/5ejupMpvVPimY69QdevqxMm6v7c8H3abLQf4iKNVoaTaRygYFYArTWWoKep7BDZhjhCd4XnILGLjq7oeBfb3enMUSmeYabIuQpjAfRXU6cZh4cVomhEbkF5kj/rAc3GLzWtN1XcE5PC8bTL3m6YVN6hMCd1S7dsnDQ4FJQoDoqYzmTLD7jtyQujS86JsPkkt7kAIi14VxHTNEAM07cN6rH4VifWWMgQo4djPJ+nnsW9zUnylT9KS1GGyeaUhGC7GmrJGd7DmfHrhdWb9iMboKyH7VTm5C6X71JW1AhmdFfjtIHmWfhbAFsrP2gwkb4e+F86urUmK5LTT6qhGklUsXsmMFjwiEUCBWLSOZLKfITkNOBGIuGGcMi8Jtvwo1f4DHQ6sm/Y8qaJFmesyVKpA3MAVNawqlZJSJXflUA/mpJprFxLm/J3mdnxkLrqQSeSCAxHgpEdH3jiSPNhmn6QaJOVT+wotm+8lAq7qWgBWfMmcVSgWdAfVwujeP71Uo1y24/Z4+jXulFz1hPfbfmHk6/Qz4JlSgHZIqgOS1FTsmXFvBUe4moHR/QFDEXnz2LroRIavt9gWZPE3z1FIcjwSmtUzvpE8gZud+dKVVrjm8YPseq+IJ/AwRRlkUR5D0vf1TwEm0yQ7E+EotFvibQ="
+	}`)
+
+	// Initial call
+	msg1 := &Message{}
+	err := json.Unmarshal(msgJSON, msg1)
+	require.NoError(t, err)
+	msg1.Status = 0
+
+	// Second call
+	msg2 := &Message{}
+	err = json.Unmarshal(msgJSON, msg2)
+	require.NoError(t, err)
+	msg2.Status = 1
+
+	// Final call
+	msg3 := &Message{}
+	err = json.Unmarshal(msgJSON, msg3)
+	require.NoError(t, err)
+	msg3.Status = 2
+
+	cipher, err := idbCrypto.NewCipher(
+		[]byte("testPass"), []byte("testSalt"), 128,
+		csprng.NewSystemRNG())
+	require.NoError(t, err)
+	testString := "test_duplicateUpsertMessage"
+	eventModel, err := newWASMModel(testString, cipher,
+		&dummyCbs{})
+	require.NoError(t, err)
+
+	uuid, err := eventModel.upsertMessage(msg1)
+	require.NoError(t, err)
+	require.NotEqual(t, uuid, 0)
+
+	uuid2, err := eventModel.upsertMessage(msg2)
+	require.NoError(t, err)
+	require.Equal(t, uuid, uuid2)
+
+	uuid3, err := eventModel.upsertMessage(msg3)
+	require.NoError(t, err)
+	require.Equal(t, uuid, uuid3)
+
+	msgID, err := message.UnmarshalID(msg1.MessageID)
+	require.NoError(t, err)
+
+	modelMsg, err := eventModel.GetMessage(msgID)
+	require.NoError(t, err)
+	require.Equal(t, channels.Delivered, modelMsg.Status)
+}