Add getUsername default method to CredentialsProvider

This commit is contained in:
moiseev-signal
2024-04-05 09:47:33 -07:00
committed by Greyson Parrelli
parent ea081e981f
commit 3ea194255d
3 changed files with 70 additions and 5 deletions

View File

@@ -8,6 +8,7 @@ package org.whispersystems.signalservice.api.util;
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
import org.whispersystems.signalservice.api.push.ServiceId.PNI;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
public interface CredentialsProvider {
ACI getAci();
@@ -15,4 +16,14 @@ public interface CredentialsProvider {
String getE164();
int getDeviceId();
String getPassword();
default String getUsername() {
StringBuilder sb = new StringBuilder();
sb.append(getAci().toString());
if (getDeviceId() != SignalServiceAddress.DEFAULT_DEVICE_ID) {
sb.append(".");
sb.append(getDeviceId());
}
return sb.toString();
}
}

View File

@@ -133,11 +133,7 @@ public class WebSocketConnection extends WebSocketListener {
String filledUri;
if (credentialsProvider.isPresent()) {
String identifier = Objects.requireNonNull(credentialsProvider.get().getAci()).toString();
if (credentialsProvider.get().getDeviceId() != SignalServiceAddress.DEFAULT_DEVICE_ID) {
identifier += "." + credentialsProvider.get().getDeviceId();
}
filledUri = String.format(wsUri, identifier, credentialsProvider.get().getPassword());
filledUri = String.format(wsUri, credentialsProvider.get().getUsername(), credentialsProvider.get().getPassword());
} else {
filledUri = wsUri;
}

View File

@@ -0,0 +1,58 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.signalservice.api.util
import org.junit.Assert.assertEquals
import org.junit.Assert.assertThrows
import org.junit.Test
import org.whispersystems.signalservice.api.push.ServiceId
import org.whispersystems.signalservice.api.push.SignalServiceAddress
import java.util.UUID
class CredentialsProviderTest {
private fun makeProvider(aci: UUID?, deviceId: Int = SignalServiceAddress.DEFAULT_DEVICE_ID): CredentialsProvider {
return object : CredentialsProvider {
override fun getAci(): ServiceId.ACI? {
if (aci == null) {
return null
}
return ServiceId.ACI.from(aci)
}
override fun getPni(): ServiceId.PNI {
TODO("Not used")
}
override fun getE164(): String {
TODO("Not used")
}
override fun getDeviceId(): Int {
return deviceId
}
override fun getPassword(): String {
TODO("Not used")
}
}
}
@Test
fun usernameWithDefaultDeviceId() {
val uuid = UUID.randomUUID()
assertEquals(uuid.toString(), makeProvider(uuid).username)
}
@Test
fun usernameWithDeviceId() {
val uuid = UUID.randomUUID()
assertEquals("$uuid.42", makeProvider(uuid, 42).username)
}
@Test
fun usernameWithNullAci() {
assertThrows(NullPointerException::class.java) { makeProvider(aci = null).username }
}
}