That fuck shit the fascists are using
at master 102 lines 3.6 kB view raw
1/* 2 * Copyright 2023 Signal Messenger, LLC 3 * SPDX-License-Identifier: AGPL-3.0-only 4 */ 5 6package org.tm.archive.database 7 8import androidx.test.ext.junit.runners.AndroidJUnit4 9import junit.framework.Assert.assertEquals 10import org.junit.Rule 11import org.junit.Test 12import org.junit.runner.RunWith 13import org.tm.archive.calls.log.CallLogFilter 14import org.tm.archive.recipients.RecipientId 15import org.tm.archive.service.webrtc.links.CallLinkCredentials 16import org.tm.archive.service.webrtc.links.CallLinkRoomId 17import org.tm.archive.service.webrtc.links.SignalCallLinkState 18import org.tm.archive.testing.SignalActivityRule 19 20@RunWith(AndroidJUnit4::class) 21class CallLinkTableTest { 22 23 companion object { 24 private val ROOM_ID_A = byteArrayOf(1, 2, 3, 4) 25 private val ROOM_ID_B = byteArrayOf(2, 2, 3, 4) 26 private const val TIMESTAMP_A = 1000L 27 private const val TIMESTAMP_B = 2000L 28 } 29 30 @get:Rule 31 val harness = SignalActivityRule(createGroup = true) 32 33 @Test 34 fun givenTwoNonAdminCallLinks_whenIDeleteBeforeFirst_thenIExpectNeitherDeleted() { 35 insertTwoNonAdminCallLinksWithEvents() 36 SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(TIMESTAMP_A - 500) 37 val callEvents = SignalDatabase.calls.getCalls(0, 2, "", CallLogFilter.ALL) 38 assertEquals(2, callEvents.size) 39 } 40 41 @Test 42 fun givenTwoNonAdminCallLinks_whenIDeleteOnFirst_thenIExpectFirstDeleted() { 43 insertTwoNonAdminCallLinksWithEvents() 44 SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(TIMESTAMP_A) 45 val callEvents = SignalDatabase.calls.getCalls(0, 2, "", CallLogFilter.ALL) 46 assertEquals(1, callEvents.size) 47 assertEquals(TIMESTAMP_B, callEvents.first().record.timestamp) 48 } 49 50 @Test 51 fun givenTwoNonAdminCallLinks_whenIDeleteAfterFirstAndBeforeSecond_thenIExpectFirstDeleted() { 52 insertTwoNonAdminCallLinksWithEvents() 53 SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(TIMESTAMP_B - 500) 54 val callEvents = SignalDatabase.calls.getCalls(0, 2, "", CallLogFilter.ALL) 55 assertEquals(1, callEvents.size) 56 assertEquals(TIMESTAMP_B, callEvents.first().record.timestamp) 57 } 58 59 @Test 60 fun givenTwoNonAdminCallLinks_whenIDeleteOnSecond_thenIExpectBothDeleted() { 61 insertTwoNonAdminCallLinksWithEvents() 62 SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(TIMESTAMP_B) 63 val callEvents = SignalDatabase.calls.getCalls(0, 2, "", CallLogFilter.ALL) 64 assertEquals(0, callEvents.size) 65 } 66 67 @Test 68 fun givenTwoNonAdminCallLinks_whenIDeleteAfterSecond_thenIExpectBothDeleted() { 69 insertTwoNonAdminCallLinksWithEvents() 70 SignalDatabase.callLinks.deleteNonAdminCallLinksOnOrBefore(TIMESTAMP_B + 500) 71 val callEvents = SignalDatabase.calls.getCalls(0, 2, "", CallLogFilter.ALL) 72 assertEquals(0, callEvents.size) 73 } 74 75 private fun insertTwoNonAdminCallLinksWithEvents() { 76 insertCallLinkWithEvent(ROOM_ID_A, 1000) 77 insertCallLinkWithEvent(ROOM_ID_B, 2000) 78 } 79 80 private fun insertCallLinkWithEvent(roomId: ByteArray, timestamp: Long) { 81 SignalDatabase.callLinks.insertCallLink( 82 CallLinkTable.CallLink( 83 recipientId = RecipientId.UNKNOWN, 84 roomId = CallLinkRoomId.fromBytes(roomId), 85 credentials = CallLinkCredentials( 86 linkKeyBytes = roomId, 87 adminPassBytes = null 88 ), 89 state = SignalCallLinkState() 90 ) 91 ) 92 93 val callLinkRecipient = SignalDatabase.recipients.getByCallLinkRoomId(CallLinkRoomId.fromBytes(roomId)).get() 94 95 SignalDatabase.calls.insertAcceptedGroupCall( 96 1, 97 callLinkRecipient, 98 CallTable.Direction.INCOMING, 99 timestamp 100 ) 101 } 102}