mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 20:48:43 +00:00
Add unit test for RegistrationUtil.
This commit is contained in:
committed by
Greyson Parrelli
parent
34eef0bf5c
commit
7d24bff134
@@ -1,29 +1,27 @@
|
|||||||
package org.thoughtcrime.securesms.components.emoji
|
package org.thoughtcrime.securesms.components.emoji
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.ParameterizedRobolectricTestRunner
|
import org.robolectric.ParameterizedRobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.emoji.EmojiSource
|
import org.thoughtcrime.securesms.emoji.EmojiSource
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
|
|
||||||
@RunWith(ParameterizedRobolectricTestRunner::class)
|
@RunWith(ParameterizedRobolectricTestRunner::class)
|
||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class EmojiUtilTest_isEmoji(private val input: String?, private val output: Boolean) {
|
class EmojiUtilTest_isEmoji(private val input: String?, private val output: Boolean) {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
@Test
|
@Test
|
||||||
fun isEmoji() {
|
fun isEmoji() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
val source = EmojiSource.loadAssetBasedEmojis()
|
val source = EmojiSource.loadAssetBasedEmojis()
|
||||||
|
|
||||||
mockkObject(EmojiSource) {
|
mockkObject(EmojiSource) {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.components.settings.app.account.export
|
package org.thoughtcrime.securesms.components.settings.app.account.export
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import com.fasterxml.jackson.core.JsonParseException
|
import com.fasterxml.jackson.core.JsonParseException
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@@ -12,14 +11,13 @@ import org.junit.Assert.assertEquals
|
|||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
import org.junit.Assert.assertThrows
|
import org.junit.Assert.assertThrows
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Before
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.providers.BlobProvider
|
import org.thoughtcrime.securesms.providers.BlobProvider
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.util.JsonUtils
|
import org.thoughtcrime.securesms.util.JsonUtils
|
||||||
import org.whispersystems.signalservice.api.SignalServiceAccountManager
|
import org.whispersystems.signalservice.api.SignalServiceAccountManager
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
@@ -28,6 +26,9 @@ import java.io.IOException
|
|||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class ExportAccountDataTest {
|
class ExportAccountDataTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private val mockJson: String = """
|
private val mockJson: String = """
|
||||||
{
|
{
|
||||||
"reportId": "4c0ca2aa-151b-4e9e-8bf4-ea2c64345a22",
|
"reportId": "4c0ca2aa-151b-4e9e-8bf4-ea2c64345a22",
|
||||||
@@ -64,13 +65,6 @@ class ExportAccountDataTest {
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@Before
|
|
||||||
fun setup() {
|
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Export json without text field`() {
|
fun `Export json without text field`() {
|
||||||
val scheduler = TestScheduler()
|
val scheduler = TestScheduler()
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
package org.thoughtcrime.securesms.crash
|
package org.thoughtcrime.securesms.crash
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
import io.mockk.unmockkAll
|
import io.mockk.unmockkAll
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.assertIs
|
import org.thoughtcrime.securesms.assertIs
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||||
import org.whispersystems.signalservice.api.push.ServiceId
|
import org.whispersystems.signalservice.api.push.ServiceId
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
@@ -23,14 +22,13 @@ import java.util.UUID
|
|||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class CrashConfigTest {
|
class CrashConfigTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
mockkObject(RemoteConfig)
|
mockkObject(RemoteConfig)
|
||||||
|
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
every { SignalStore.account.aci } returns ServiceId.ACI.from(UUID.randomUUID())
|
every { SignalStore.account.aci } returns ServiceId.ACI.from(UUID.randomUUID())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,22 +10,25 @@ import org.junit.Assert.assertEquals
|
|||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
|
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile
|
import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||||
import org.thoughtcrime.securesms.testing.TestDatabaseUtil
|
import org.thoughtcrime.securesms.testing.TestDatabaseUtil
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import java.time.DayOfWeek
|
import java.time.DayOfWeek
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class NotificationProfileDatabaseTest {
|
class NotificationProfileDatabaseTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private lateinit var db: SQLiteDatabase
|
private lateinit var db: SQLiteDatabase
|
||||||
private lateinit var database: NotificationProfileDatabase
|
private lateinit var database: NotificationProfileDatabase
|
||||||
|
|
||||||
@@ -42,10 +45,6 @@ class NotificationProfileDatabaseTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
db = sqlCipher.writableDatabase
|
db = sqlCipher.writableDatabase
|
||||||
database = NotificationProfileDatabase(ApplicationProvider.getApplicationContext(), sqlCipher)
|
database = NotificationProfileDatabase(ApplicationProvider.getApplicationContext(), sqlCipher)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,83 +54,83 @@ import java.util.function.Supplier
|
|||||||
|
|
||||||
class MockApplicationDependencyProvider : AppDependencies.Provider {
|
class MockApplicationDependencyProvider : AppDependencies.Provider {
|
||||||
override fun providePushServiceSocket(signalServiceConfiguration: SignalServiceConfiguration, groupsV2Operations: GroupsV2Operations): PushServiceSocket {
|
override fun providePushServiceSocket(signalServiceConfiguration: SignalServiceConfiguration, groupsV2Operations: GroupsV2Operations): PushServiceSocket {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideGroupsV2Operations(signalServiceConfiguration: SignalServiceConfiguration): GroupsV2Operations {
|
override fun provideGroupsV2Operations(signalServiceConfiguration: SignalServiceConfiguration): GroupsV2Operations {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalServiceAccountManager(pushServiceSocket: PushServiceSocket, groupsV2Operations: GroupsV2Operations): SignalServiceAccountManager {
|
override fun provideSignalServiceAccountManager(pushServiceSocket: PushServiceSocket, groupsV2Operations: GroupsV2Operations): SignalServiceAccountManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalServiceMessageSender(signalWebSocket: SignalWebSocket, protocolStore: SignalServiceDataStore, pushServiceSocket: PushServiceSocket): SignalServiceMessageSender {
|
override fun provideSignalServiceMessageSender(signalWebSocket: SignalWebSocket, protocolStore: SignalServiceDataStore, pushServiceSocket: PushServiceSocket): SignalServiceMessageSender {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalServiceMessageReceiver(pushServiceSocket: PushServiceSocket): SignalServiceMessageReceiver {
|
override fun provideSignalServiceMessageReceiver(pushServiceSocket: PushServiceSocket): SignalServiceMessageReceiver {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalServiceNetworkAccess(): SignalServiceNetworkAccess {
|
override fun provideSignalServiceNetworkAccess(): SignalServiceNetworkAccess {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideRecipientCache(): LiveRecipientCache {
|
override fun provideRecipientCache(): LiveRecipientCache {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideJobManager(): JobManager {
|
override fun provideJobManager(): JobManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideFrameRateTracker(): FrameRateTracker {
|
override fun provideFrameRateTracker(): FrameRateTracker {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideMegaphoneRepository(): MegaphoneRepository {
|
override fun provideMegaphoneRepository(): MegaphoneRepository {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideEarlyMessageCache(): EarlyMessageCache {
|
override fun provideEarlyMessageCache(): EarlyMessageCache {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideMessageNotifier(): MessageNotifier {
|
override fun provideMessageNotifier(): MessageNotifier {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideIncomingMessageObserver(): IncomingMessageObserver {
|
override fun provideIncomingMessageObserver(): IncomingMessageObserver {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideTrimThreadsByDateManager(): TrimThreadsByDateManager {
|
override fun provideTrimThreadsByDateManager(): TrimThreadsByDateManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideViewOnceMessageManager(): ViewOnceMessageManager {
|
override fun provideViewOnceMessageManager(): ViewOnceMessageManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideExpiringStoriesManager(): ExpiringStoriesManager {
|
override fun provideExpiringStoriesManager(): ExpiringStoriesManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideExpiringMessageManager(): ExpiringMessageManager {
|
override fun provideExpiringMessageManager(): ExpiringMessageManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideDeletedCallEventManager(): DeletedCallEventManager {
|
override fun provideDeletedCallEventManager(): DeletedCallEventManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideTypingStatusRepository(): TypingStatusRepository {
|
override fun provideTypingStatusRepository(): TypingStatusRepository {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideTypingStatusSender(): TypingStatusSender {
|
override fun provideTypingStatusSender(): TypingStatusSender {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideDatabaseObserver(): DatabaseObserver {
|
override fun provideDatabaseObserver(): DatabaseObserver {
|
||||||
@@ -138,98 +138,98 @@ class MockApplicationDependencyProvider : AppDependencies.Provider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun providePayments(signalServiceAccountManager: SignalServiceAccountManager): Payments {
|
override fun providePayments(signalServiceAccountManager: SignalServiceAccountManager): Payments {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideShakeToReport(): ShakeToReport {
|
override fun provideShakeToReport(): ShakeToReport {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalCallManager(): SignalCallManager {
|
override fun provideSignalCallManager(): SignalCallManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun providePendingRetryReceiptManager(): PendingRetryReceiptManager {
|
override fun providePendingRetryReceiptManager(): PendingRetryReceiptManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun providePendingRetryReceiptCache(): PendingRetryReceiptCache {
|
override fun providePendingRetryReceiptCache(): PendingRetryReceiptCache {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideSignalWebSocket(signalServiceConfigurationSupplier: Supplier<SignalServiceConfiguration>, libSignalNetworkSupplier: Supplier<Network>): SignalWebSocket {
|
override fun provideSignalWebSocket(signalServiceConfigurationSupplier: Supplier<SignalServiceConfiguration>, libSignalNetworkSupplier: Supplier<Network>): SignalWebSocket {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideProtocolStore(): SignalServiceDataStoreImpl {
|
override fun provideProtocolStore(): SignalServiceDataStoreImpl {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideGiphyMp4Cache(): GiphyMp4Cache {
|
override fun provideGiphyMp4Cache(): GiphyMp4Cache {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideExoPlayerPool(): SimpleExoPlayerPool {
|
override fun provideExoPlayerPool(): SimpleExoPlayerPool {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideAndroidCallAudioManager(): AudioManagerCompat {
|
override fun provideAndroidCallAudioManager(): AudioManagerCompat {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideDonationsService(pushServiceSocket: PushServiceSocket): DonationsService {
|
override fun provideDonationsService(pushServiceSocket: PushServiceSocket): DonationsService {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideCallLinksService(pushServiceSocket: PushServiceSocket): CallLinksService {
|
override fun provideCallLinksService(pushServiceSocket: PushServiceSocket): CallLinksService {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideProfileService(profileOperations: ClientZkProfileOperations, signalServiceMessageReceiver: SignalServiceMessageReceiver, signalWebSocket: SignalWebSocket): ProfileService {
|
override fun provideProfileService(profileOperations: ClientZkProfileOperations, signalServiceMessageReceiver: SignalServiceMessageReceiver, signalWebSocket: SignalWebSocket): ProfileService {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideDeadlockDetector(): DeadlockDetector {
|
override fun provideDeadlockDetector(): DeadlockDetector {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideClientZkReceiptOperations(signalServiceConfiguration: SignalServiceConfiguration): ClientZkReceiptOperations {
|
override fun provideClientZkReceiptOperations(signalServiceConfiguration: SignalServiceConfiguration): ClientZkReceiptOperations {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideScheduledMessageManager(): ScheduledMessageManager {
|
override fun provideScheduledMessageManager(): ScheduledMessageManager {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideLibsignalNetwork(config: SignalServiceConfiguration): Network {
|
override fun provideLibsignalNetwork(config: SignalServiceConfiguration): Network {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideBillingApi(): BillingApi {
|
override fun provideBillingApi(): BillingApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideArchiveApi(pushServiceSocket: PushServiceSocket): ArchiveApi {
|
override fun provideArchiveApi(pushServiceSocket: PushServiceSocket): ArchiveApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideKeysApi(pushServiceSocket: PushServiceSocket): KeysApi {
|
override fun provideKeysApi(pushServiceSocket: PushServiceSocket): KeysApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideAttachmentApi(signalWebSocket: SignalWebSocket, pushServiceSocket: PushServiceSocket): AttachmentApi {
|
override fun provideAttachmentApi(signalWebSocket: SignalWebSocket, pushServiceSocket: PushServiceSocket): AttachmentApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideLinkDeviceApi(pushServiceSocket: PushServiceSocket): LinkDeviceApi {
|
override fun provideLinkDeviceApi(pushServiceSocket: PushServiceSocket): LinkDeviceApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideRegistrationApi(pushServiceSocket: PushServiceSocket): RegistrationApi {
|
override fun provideRegistrationApi(pushServiceSocket: PushServiceSocket): RegistrationApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideStorageServiceApi(pushServiceSocket: PushServiceSocket): StorageServiceApi {
|
override fun provideStorageServiceApi(pushServiceSocket: PushServiceSocket): StorageServiceApi {
|
||||||
return mockk()
|
return mockk(relaxed = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.hamcrest.Matchers
|
|||||||
import org.hamcrest.Matchers.`is`
|
import org.hamcrest.Matchers.`is`
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
@@ -34,12 +35,11 @@ import org.thoughtcrime.securesms.TestZkGroupServer
|
|||||||
import org.thoughtcrime.securesms.database.GroupStateTestData
|
import org.thoughtcrime.securesms.database.GroupStateTestData
|
||||||
import org.thoughtcrime.securesms.database.GroupTable
|
import org.thoughtcrime.securesms.database.GroupTable
|
||||||
import org.thoughtcrime.securesms.database.model.databaseprotos.member
|
import org.thoughtcrime.securesms.database.model.databaseprotos.member
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.groups.v2.GroupCandidateHelper
|
import org.thoughtcrime.securesms.groups.v2.GroupCandidateHelper
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger
|
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.testutil.SystemOutLogger
|
import org.thoughtcrime.securesms.testutil.SystemOutLogger
|
||||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||||
import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations
|
import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations
|
||||||
@@ -68,6 +68,9 @@ class GroupManagerV2Test_edit {
|
|||||||
val others: List<DecryptedMember> = listOf(member(otherAci))
|
val others: List<DecryptedMember> = listOf(member(otherAci))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private lateinit var groupTable: GroupTable
|
private lateinit var groupTable: GroupTable
|
||||||
private lateinit var groupsV2API: GroupsV2Api
|
private lateinit var groupsV2API: GroupsV2Api
|
||||||
private lateinit var groupsV2Operations: GroupsV2Operations
|
private lateinit var groupsV2Operations: GroupsV2Operations
|
||||||
@@ -81,10 +84,6 @@ class GroupManagerV2Test_edit {
|
|||||||
@Suppress("UsePropertyAccessSyntax")
|
@Suppress("UsePropertyAccessSyntax")
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(RemoteConfig)
|
mockkObject(RemoteConfig)
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
every { RemoteConfig.internalUser } returns false
|
every { RemoteConfig.internalUser } returns false
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.groups.v2.processing
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.justRun
|
import io.mockk.justRun
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@@ -17,6 +16,7 @@ import org.hamcrest.Matchers.hasItem
|
|||||||
import org.hamcrest.Matchers.`is`
|
import org.hamcrest.Matchers.`is`
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
@@ -45,7 +45,6 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.requestingMember
|
|||||||
import org.thoughtcrime.securesms.database.setNewDescription
|
import org.thoughtcrime.securesms.database.setNewDescription
|
||||||
import org.thoughtcrime.securesms.database.setNewTitle
|
import org.thoughtcrime.securesms.database.setNewTitle
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.groups.GroupId
|
import org.thoughtcrime.securesms.groups.GroupId
|
||||||
import org.thoughtcrime.securesms.groups.GroupNotAMemberException
|
import org.thoughtcrime.securesms.groups.GroupNotAMemberException
|
||||||
import org.thoughtcrime.securesms.groups.GroupsV2Authorization
|
import org.thoughtcrime.securesms.groups.GroupsV2Authorization
|
||||||
@@ -57,6 +56,7 @@ import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob
|
|||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger
|
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.testutil.SystemOutLogger
|
import org.thoughtcrime.securesms.testutil.SystemOutLogger
|
||||||
import org.whispersystems.signalservice.api.NetworkResult
|
import org.whispersystems.signalservice.api.NetworkResult
|
||||||
import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupResponse
|
import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupResponse
|
||||||
@@ -90,6 +90,9 @@ class GroupsV2StateProcessorTest {
|
|||||||
private val others: List<DecryptedMember> = listOf(member(otherAci))
|
private val others: List<DecryptedMember> = listOf(member(otherAci))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private lateinit var groupTable: GroupTable
|
private lateinit var groupTable: GroupTable
|
||||||
private lateinit var recipientTable: RecipientTable
|
private lateinit var recipientTable: RecipientTable
|
||||||
private lateinit var threadTable: ThreadTable
|
private lateinit var threadTable: ThreadTable
|
||||||
@@ -103,10 +106,6 @@ class GroupsV2StateProcessorTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
every { SignalStore.internal.gv2IgnoreP2PChanges } returns false
|
every { SignalStore.internal.gv2IgnoreP2PChanges } returns false
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.keyvalue
|
package org.thoughtcrime.securesms.keyvalue
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
@@ -9,26 +8,25 @@ import io.mockk.unmockkAll
|
|||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class PaymentsValuesTest {
|
class PaymentsValuesTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private lateinit var paymentValues: PaymentsValues
|
private lateinit var paymentValues: PaymentsValues
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(RemoteConfig)
|
mockkObject(RemoteConfig)
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.megaphone
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.clearMocks
|
import io.mockk.clearMocks
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@@ -14,8 +13,8 @@ import org.hamcrest.Matchers.nullValue
|
|||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.AfterClass
|
import org.junit.AfterClass
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.BeforeClass
|
import org.junit.BeforeClass
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
@@ -23,8 +22,7 @@ import org.robolectric.annotation.Config
|
|||||||
import org.thoughtcrime.securesms.database.RemoteMegaphoneTable
|
import org.thoughtcrime.securesms.database.RemoteMegaphoneTable
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||||
import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord
|
import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.util.toMillis
|
import org.thoughtcrime.securesms.util.toMillis
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
@@ -37,12 +35,8 @@ import java.util.UUID
|
|||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class RemoteMegaphoneRepositoryTest {
|
class RemoteMegaphoneRepositoryTest {
|
||||||
|
|
||||||
@Before
|
@get:Rule
|
||||||
fun setUp() {
|
val appDependencies = MockAppDependenciesRule()
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
@After
|
||||||
fun tearDown() {
|
fun tearDown() {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.notifications
|
package org.thoughtcrime.securesms.notifications
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
import io.mockk.mockkStatic
|
import io.mockk.mockkStatic
|
||||||
@@ -9,6 +8,7 @@ import io.mockk.unmockkAll
|
|||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
@@ -20,13 +20,13 @@ import org.thoughtcrime.securesms.database.MessageTable.SyncMessageId
|
|||||||
import org.thoughtcrime.securesms.database.model.MessageId
|
import org.thoughtcrime.securesms.database.model.MessageId
|
||||||
import org.thoughtcrime.securesms.database.model.StoryType
|
import org.thoughtcrime.securesms.database.model.StoryType
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.jobmanager.Job
|
import org.thoughtcrime.securesms.jobmanager.Job
|
||||||
import org.thoughtcrime.securesms.jobmanager.JobManager
|
import org.thoughtcrime.securesms.jobmanager.JobManager
|
||||||
import org.thoughtcrime.securesms.jobmanager.JsonJobData
|
import org.thoughtcrime.securesms.jobmanager.JsonJobData
|
||||||
import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob
|
import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
||||||
import java.util.LinkedList
|
import java.util.LinkedList
|
||||||
|
|
||||||
@@ -34,17 +34,13 @@ import java.util.LinkedList
|
|||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class MarkReadReceiverTest {
|
class MarkReadReceiverTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private val jobs: MutableList<Job> = LinkedList()
|
private val jobs: MutableList<Job> = LinkedList()
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(
|
|
||||||
ApplicationProvider.getApplicationContext(),
|
|
||||||
MockApplicationDependencyProvider()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
val jobManager: JobManager = AppDependencies.jobManager
|
val jobManager: JobManager = AppDependencies.jobManager
|
||||||
every { jobManager.add(capture(jobs)) } returns Unit
|
every { jobManager.add(capture(jobs)) } returns Unit
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.notifications.profiles
|
package org.thoughtcrime.securesms.notifications.profiles
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
@@ -11,14 +10,14 @@ import org.hamcrest.Matchers.`is`
|
|||||||
import org.hamcrest.Matchers.nullValue
|
import org.hamcrest.Matchers.nullValue
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.keyvalue.NotificationProfileValues
|
import org.thoughtcrime.securesms.keyvalue.NotificationProfileValues
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.util.toMillis
|
import org.thoughtcrime.securesms.util.toMillis
|
||||||
import java.time.DayOfWeek
|
import java.time.DayOfWeek
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
@@ -29,6 +28,9 @@ import java.time.ZoneOffset
|
|||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class NotificationProfilesTest {
|
class NotificationProfilesTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
private val sunday830am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 8, 30, 0)
|
private val sunday830am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 8, 30, 0)
|
||||||
private val sunday9am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 9, 0, 0)
|
private val sunday9am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 9, 0, 0)
|
||||||
private val sunday930am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 9, 30, 0)
|
private val sunday930am: LocalDateTime = LocalDateTime.of(2021, 7, 4, 9, 30, 0)
|
||||||
@@ -55,10 +57,6 @@ class NotificationProfilesTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
notificationProfileValues = mockk()
|
notificationProfileValues = mockk()
|
||||||
every { notificationProfileValues.manuallyEnabledUntil } returns 0
|
every { notificationProfileValues.manuallyEnabledUntil } returns 0
|
||||||
every { notificationProfileValues.manuallyDisabledAt } returns 0
|
every { notificationProfileValues.manuallyDisabledAt } returns 0
|
||||||
|
|||||||
@@ -0,0 +1,143 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Signal Messenger, LLC
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.thoughtcrime.securesms.registration.util
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import io.mockk.Runs
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.just
|
||||||
|
import io.mockk.mockkObject
|
||||||
|
import io.mockk.unmockkAll
|
||||||
|
import io.mockk.verify
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.annotation.Config
|
||||||
|
import org.signal.core.util.logging.Log.initialize
|
||||||
|
import org.thoughtcrime.securesms.assertIs
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues
|
||||||
|
import org.thoughtcrime.securesms.profiles.ProfileName
|
||||||
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
import org.thoughtcrime.securesms.testutil.LogRecorder
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockSignalStoreRule
|
||||||
|
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
@Config(application = Application::class, manifest = Config.NONE)
|
||||||
|
class RegistrationUtilTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val signalStore = MockSignalStoreRule(relaxed = setOf(PhoneNumberPrivacyValues::class))
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
|
private lateinit var logRecorder: LogRecorder
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setup() {
|
||||||
|
mockkObject(Recipient)
|
||||||
|
mockkObject(RemoteConfig)
|
||||||
|
every { RemoteConfig.init() } just Runs
|
||||||
|
|
||||||
|
logRecorder = LogRecorder()
|
||||||
|
initialize(logRecorder)
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun tearDown() {
|
||||||
|
unmockkAll()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun maybeMarkRegistrationComplete_allValidNoRestoreOption() {
|
||||||
|
every { signalStore.registration.isRegistrationComplete } returns false
|
||||||
|
every { signalStore.account.isRegistered } returns true
|
||||||
|
every { Recipient.self() } returns Recipient(profileName = ProfileName.fromParts("Dark", "Helmet"))
|
||||||
|
every { signalStore.svr.hasOptedInWithAccess() } returns true
|
||||||
|
every { RemoteConfig.restoreAfterRegistration } returns false
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
verify { signalStore.registration.markRegistrationComplete() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun maybeMarkRegistrationComplete_allValidNoRestoreOptionSvrOptOut() {
|
||||||
|
every { signalStore.registration.isRegistrationComplete } returns false
|
||||||
|
every { signalStore.account.isRegistered } returns true
|
||||||
|
every { Recipient.self() } returns Recipient(profileName = ProfileName.fromParts("Dark", "Helmet"))
|
||||||
|
every { signalStore.svr.hasOptedInWithAccess() } returns false
|
||||||
|
every { signalStore.svr.hasOptedOut() } returns true
|
||||||
|
every { RemoteConfig.restoreAfterRegistration } returns false
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
verify { signalStore.registration.markRegistrationComplete() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun maybeMarkRegistrationComplete_allValidWithRestoreOption() {
|
||||||
|
every { signalStore.registration.isRegistrationComplete } returns false
|
||||||
|
every { signalStore.account.isRegistered } returns true
|
||||||
|
every { Recipient.self() } returns Recipient(profileName = ProfileName.fromParts("Dark", "Helmet"))
|
||||||
|
every { signalStore.svr.hasOptedInWithAccess() } returns true
|
||||||
|
every { RemoteConfig.restoreAfterRegistration } returns true
|
||||||
|
every { signalStore.registration.hasSkippedTransferOrRestore() } returns true
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
verify { signalStore.registration.markRegistrationComplete() }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun maybeMarkRegistrationComplete_missingData() {
|
||||||
|
every { signalStore.registration.isRegistrationComplete } returns false
|
||||||
|
every { signalStore.account.isRegistered } returns false
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
every { signalStore.account.isRegistered } returns true
|
||||||
|
every { Recipient.self() } returns Recipient(profileName = ProfileName.EMPTY)
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
every { Recipient.self() } returns Recipient(profileName = ProfileName.fromParts("Dark", "Helmet"))
|
||||||
|
every { signalStore.svr.hasOptedInWithAccess() } returns false
|
||||||
|
every { signalStore.svr.hasOptedOut() } returns false
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
every { signalStore.svr.hasOptedInWithAccess() } returns true
|
||||||
|
every { RemoteConfig.restoreAfterRegistration } returns true
|
||||||
|
every { signalStore.registration.hasSkippedTransferOrRestore() } returns false
|
||||||
|
every { signalStore.registration.hasCompletedRestore() } returns false
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
verify(exactly = 0) { signalStore.registration.markRegistrationComplete() }
|
||||||
|
|
||||||
|
val regUtilLogs = logRecorder.information.filter { it.tag == "RegistrationUtil" }
|
||||||
|
regUtilLogs.size assertIs 4
|
||||||
|
regUtilLogs.all { it.message == "Registration is not yet complete." } assertIs true
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun maybeMarkRegistrationComplete_alreadyMarked() {
|
||||||
|
every { signalStore.registration.isRegistrationComplete } returns true
|
||||||
|
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
|
||||||
|
verify(exactly = 0) { signalStore.registration.markRegistrationComplete() }
|
||||||
|
|
||||||
|
val regUtilLogs = logRecorder.information.filter { it.tag == "RegistrationUtil" }
|
||||||
|
regUtilLogs.size assertIs 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.storage
|
package org.thoughtcrime.securesms.storage
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
@@ -12,16 +11,16 @@ import org.junit.Assert.assertFalse
|
|||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.BeforeClass
|
import org.junit.BeforeClass
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
import org.thoughtcrime.securesms.database.RecipientTable
|
import org.thoughtcrime.securesms.database.RecipientTable
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.testutil.EmptyLogger
|
import org.thoughtcrime.securesms.testutil.EmptyLogger
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.whispersystems.signalservice.api.push.ServiceId.ACI
|
import org.whispersystems.signalservice.api.push.ServiceId.ACI
|
||||||
import org.whispersystems.signalservice.api.push.ServiceId.PNI
|
import org.whispersystems.signalservice.api.push.ServiceId.PNI
|
||||||
import org.whispersystems.signalservice.api.storage.SignalContactRecord
|
import org.whispersystems.signalservice.api.storage.SignalContactRecord
|
||||||
@@ -33,14 +32,13 @@ import java.util.UUID
|
|||||||
@Config(application = Application::class)
|
@Config(application = Application::class)
|
||||||
class ContactRecordProcessorTest {
|
class ContactRecordProcessorTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
lateinit var recipientTable: RecipientTable
|
lateinit var recipientTable: RecipientTable
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
every { SignalStore.account.isPrimaryDevice } returns true
|
every { SignalStore.account.isPrimaryDevice } returns true
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Signal Messenger, LLC
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.thoughtcrime.securesms.testutil
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import io.mockk.clearMocks
|
||||||
|
import org.junit.rules.ExternalResource
|
||||||
|
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||||
|
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
||||||
|
import kotlin.reflect.KVisibility
|
||||||
|
import kotlin.reflect.full.memberProperties
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Facilitates mocking and clearing components of [AppDependencies]. Clearing is particularly important as the
|
||||||
|
* mocks will be reused since [AppDependencies] is scoped to the entire test suite and stays initialized with prior
|
||||||
|
* test runs leading to unpredictable results based on how tests are run.
|
||||||
|
*/
|
||||||
|
class MockAppDependenciesRule : ExternalResource() {
|
||||||
|
|
||||||
|
private val skipList = setOf(
|
||||||
|
"application",
|
||||||
|
"databaseObserver",
|
||||||
|
"groupsV2Authorization",
|
||||||
|
"isInitialized",
|
||||||
|
"okHttpClient",
|
||||||
|
"signalOkHttpClient",
|
||||||
|
"webSocketObserver"
|
||||||
|
)
|
||||||
|
|
||||||
|
private val properties = AppDependencies::class
|
||||||
|
.memberProperties
|
||||||
|
.filter { it.visibility == KVisibility.PUBLIC }
|
||||||
|
.filterNot { skipList.contains(it.name) }
|
||||||
|
|
||||||
|
override fun before() {
|
||||||
|
if (!AppDependencies.isInitialized) {
|
||||||
|
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun after() {
|
||||||
|
properties
|
||||||
|
.forEach { property ->
|
||||||
|
property.get(AppDependencies)?.let { clearMocks(it) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Signal Messenger, LLC
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.thoughtcrime.securesms.testutil
|
||||||
|
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import io.mockk.mockkObject
|
||||||
|
import io.mockk.unmockkObject
|
||||||
|
import org.junit.rules.ExternalResource
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.AccountValues
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.RegistrationValues
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.SvrValues
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mocks [SignalStore] to return mock versions of the various values. Mocks will default to not be relaxed (each
|
||||||
|
* method call on them will need to be mocked) except for unit functions which will do nothing.
|
||||||
|
*
|
||||||
|
* Expand mocked values as necessary when needed.
|
||||||
|
*
|
||||||
|
* @param relaxed Set of value classes that should default to relaxed thus defaulting all methods. Useful
|
||||||
|
* when value is not part of the input state under test but called within the under test code.
|
||||||
|
*/
|
||||||
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
|
class MockSignalStoreRule(private val relaxed: Set<KClass<*>> = emptySet()) : ExternalResource() {
|
||||||
|
|
||||||
|
lateinit var account: AccountValues
|
||||||
|
private set
|
||||||
|
|
||||||
|
lateinit var phoneNumberPrivacy: PhoneNumberPrivacyValues
|
||||||
|
private set
|
||||||
|
|
||||||
|
lateinit var registration: RegistrationValues
|
||||||
|
private set
|
||||||
|
|
||||||
|
lateinit var svr: SvrValues
|
||||||
|
private set
|
||||||
|
|
||||||
|
override fun before() {
|
||||||
|
account = mockk(relaxed = relaxed.contains(AccountValues::class), relaxUnitFun = true)
|
||||||
|
phoneNumberPrivacy = mockk(relaxed = relaxed.contains(PhoneNumberPrivacyValues::class), relaxUnitFun = true)
|
||||||
|
registration = mockk(relaxed = relaxed.contains(RegistrationValues::class), relaxUnitFun = true)
|
||||||
|
svr = mockk(relaxed = relaxed.contains(SvrValues::class), relaxUnitFun = true)
|
||||||
|
|
||||||
|
mockkObject(SignalStore)
|
||||||
|
every { SignalStore.account } returns account
|
||||||
|
every { SignalStore.phoneNumberPrivacy } returns phoneNumberPrivacy
|
||||||
|
every { SignalStore.registration } returns registration
|
||||||
|
every { SignalStore.svr } returns svr
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun after() {
|
||||||
|
unmockkObject(SignalStore)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,33 +1,31 @@
|
|||||||
package org.thoughtcrime.securesms.util
|
package org.thoughtcrime.securesms.util
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockkObject
|
import io.mockk.mockkObject
|
||||||
import io.mockk.unmockkAll
|
import io.mockk.unmockkAll
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.ParameterizedRobolectricTestRunner
|
import org.robolectric.ParameterizedRobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies.application
|
import org.thoughtcrime.securesms.dependencies.AppDependencies.application
|
||||||
import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider
|
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule
|
||||||
import org.thoughtcrime.securesms.util.SignalMeUtil.parseE164FromLink
|
import org.thoughtcrime.securesms.util.SignalMeUtil.parseE164FromLink
|
||||||
|
|
||||||
@RunWith(ParameterizedRobolectricTestRunner::class)
|
@RunWith(ParameterizedRobolectricTestRunner::class)
|
||||||
@Config(manifest = Config.NONE, application = Application::class)
|
@Config(manifest = Config.NONE, application = Application::class)
|
||||||
class SignalMeUtilText_parseE164FromLink(private val input: String?, private val output: String?) {
|
class SignalMeUtilText_parseE164FromLink(private val input: String?, private val output: String?) {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val appDependencies = MockAppDependenciesRule()
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
if (!AppDependencies.isInitialized) {
|
|
||||||
AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider())
|
|
||||||
}
|
|
||||||
|
|
||||||
mockkObject(SignalStore)
|
mockkObject(SignalStore)
|
||||||
every { SignalStore.account.e164 } returns "+15555555555"
|
every { SignalStore.account.e164 } returns "+15555555555"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user