XmppConnectionServiceTest.java

 1package eu.siacs.conversations.services;
 2
 3import static org.junit.Assert.assertFalse;
 4import static org.mockito.ArgumentMatchers.any;
 5import static org.mockito.Mockito.mock;
 6import static org.mockito.Mockito.when;
 7
 8import android.os.Build;
 9
10import org.junit.Before;
11import org.junit.Test;
12import org.junit.runner.RunWith;
13import org.robolectric.RobolectricTestRunner;
14import org.robolectric.annotation.Config;
15import org.robolectric.annotation.ConscryptMode;
16
17import eu.siacs.conversations.Conversations;
18import io.ipfs.cid.Cid;
19
20@RunWith(RobolectricTestRunner.class)
21@Config(sdk = Build.VERSION_CODES.TIRAMISU, application = Conversations.class)
22@ConscryptMode(ConscryptMode.Mode.OFF)
23public class XmppConnectionServiceTest {
24
25    private XmppConnectionService service;
26
27    @Before
28    public void setUp() {
29        service = mock(XmppConnectionService.class);
30        when(service.isBlockedMediaSha1(any())).thenCallRealMethod();
31        when(service.isBlockedMedia(any(Cid.class))).thenReturn(false);
32    }
33
34    @Test
35    public void testIsBlockedMediaSha1ReturnsFalseForNonSha1Length() {
36        // 36 hex chars = 18 bytes; valid SHA-1 is 40 hex chars = 20 bytes.
37        // Reproduces: IllegalStateException: Incorrect hash length: 18 != 20
38        assertFalse(service.isBlockedMediaSha1("aabbccddee1122334455667788990011aabb"));
39    }
40
41    @Test
42    public void testIsBlockedMediaSha1ReturnsFalseForNull() {
43        assertFalse(service.isBlockedMediaSha1(null));
44    }
45
46    @Test
47    public void testIsBlockedMediaSha1AcceptsValidSha1() {
48        // 40 hex chars = 20 bytes = valid SHA-1
49        assertFalse(service.isBlockedMediaSha1("aabbccddee112233445566778899001122334455"));
50    }
51}