Fix avatar loading in OS views when app is not running.

This commit is contained in:
Cody Henthorne
2024-08-19 14:10:20 -04:00
committed by mtang-signal
parent 8a4d9fc635
commit 71b5a9f865
22 changed files with 384 additions and 439 deletions

View File

@@ -1,60 +0,0 @@
package org.thoughtcrime.securesms.util;
import android.app.Application;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.ParameterizedRobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.thoughtcrime.securesms.SignalStoreRule;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.keyvalue.AccountValues;
import java.util.Arrays;
import java.util.Collection;
import kotlin.Unit;
import static junit.framework.TestCase.assertEquals;
@RunWith(ParameterizedRobolectricTestRunner.class)
@Config(manifest = Config.NONE, application = Application.class)
public class SignalMeUtilText_parseE164FromLink {
private final String input;
private final String output;
@ParameterizedRobolectricTestRunner.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{ "https://signal.me/#p/+15555555555", "+15555555555" },
{ "https://signal.me/#p/5555555555", null },
{ "https://signal.me", null },
{ "https://signal.me/#p/", null },
{ "signal.me/#p/+15555555555", null },
{ "sgnl://signal.me/#p/+15555555555", "+15555555555" },
{ "sgnl://signal.me/#p/5555555555", null },
{ "sgnl://signal.me", null },
{ "sgnl://signal.me/#p/", null },
{ "", null },
{ null, null }
});
}
@Rule
public SignalStoreRule signalStore = new SignalStoreRule(dataSet -> {
dataSet.putString(AccountValues.KEY_E164, "+15555555555");
return Unit.INSTANCE;
});
public SignalMeUtilText_parseE164FromLink(String input, String output) {
this.input = input;
this.output = output;
}
@Test
public void parse() {
assertEquals(output, SignalMeUtil.parseE164FromLink(AppDependencies.getApplication(), input));
}
}

View File

@@ -0,0 +1,64 @@
package org.thoughtcrime.securesms.util
import android.app.Application
import androidx.test.core.app.ApplicationProvider
import io.mockk.every
import io.mockk.mockkObject
import io.mockk.unmockkAll
import junit.framework.TestCase
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.ParameterizedRobolectricTestRunner
import org.robolectric.annotation.Config
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.dependencies.AppDependencies.application
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.SignalMeUtil.parseE164FromLink
@RunWith(ParameterizedRobolectricTestRunner::class)
@Config(manifest = Config.NONE, application = Application::class)
class SignalMeUtilText_parseE164FromLink(private val input: String?, private val output: String?) {
@Before
fun setUp() {
if (!AppDependencies.isInitialized) {
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
}
mockkObject(SignalStore)
every { SignalStore.account.e164 } returns "+15555555555"
}
@After
fun tearDown() {
unmockkAll()
}
@Test
fun parse() {
TestCase.assertEquals(output, parseE164FromLink(application, input))
}
companion object {
@JvmStatic
@ParameterizedRobolectricTestRunner.Parameters
fun data(): Collection<Array<Any?>> {
return listOf(
arrayOf("https://signal.me/#p/+15555555555", "+15555555555"),
arrayOf("https://signal.me/#p/5555555555", null),
arrayOf("https://signal.me", null),
arrayOf("https://signal.me/#p/", null),
arrayOf("signal.me/#p/+15555555555", null),
arrayOf("sgnl://signal.me/#p/+15555555555", "+15555555555"),
arrayOf("sgnl://signal.me/#p/5555555555", null),
arrayOf("sgnl://signal.me", null),
arrayOf("sgnl://signal.me/#p/", null),
arrayOf("", null),
arrayOf(null, null)
)
}
}
}