Verify primary and linked call configuration through account state

This commit is contained in:
Robert Nisipeanu 2026-09-22 22:15:50 +03:00
parent 3e308eb8d3
commit 397a03ba85
No known key found for this signature in database

View File

@ -1,17 +1,22 @@
package org.asamk.signal.manager.helper;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.asamk.signal.manager.api.CallInfo;
import org.asamk.signal.manager.storage.SignalAccount;
import org.asamk.signal.manager.storage.recipients.TestRecipientId;
import org.asamk.signal.manager.util.Utils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.math.BigInteger;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.file.Path;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
@ -191,6 +196,27 @@ class CallManagerTest {
assertTrue(config.get("is_outgoing").booleanValue());
}
@ParameterizedTest
@CsvSource({"1, true", "1, false", "2, true", "2, false", "127, true", "127, false"})
void buildConfig_readsAccountDeviceId(int deviceId, boolean outgoing) throws Exception {
var constructor = SignalAccount.class.getDeclaredConstructor(FileChannel.class, FileLock.class);
constructor.setAccessible(true);
var account = constructor.newInstance(null, null);
var deviceField = SignalAccount.class.getDeclaredField("deviceId");
deviceField.setAccessible(true);
deviceField.setInt(account, deviceId);
var builder = CallManager.class.getDeclaredMethod("buildConfig", CallManager.CallState.class);
builder.setAccessible(true);
try (var manager = new CallManager(new Context(account, null, null, null, null, null))) {
var state = new CallManager.CallState(-1L, CallInfo.State.IDLE, null, null, outgoing);
var config = new ObjectMapper().readTree((String) builder.invoke(manager, state));
assertEquals(deviceId, config.path("local_device_id").asInt());
assertEquals(outgoing, config.path("is_outgoing").asBoolean());
assertEquals("18446744073709551615", config.path("call_id").asText());
}
}
// ========================================================================
// handleStateChange state machine tests
//