Try to configure okreplay for testing network + start to rework koin modules

This commit is contained in:
ganfra
2018-12-12 21:15:01 +01:00
parent 1d5587c5ba
commit c8c31172b3
16 changed files with 137 additions and 54 deletions

View File

@ -4,7 +4,7 @@ import android.content.Context
import android.support.test.InstrumentationRegistry
import java.io.File
abstract class InstrumentedTest {
interface InstrumentedTest {
fun context(): Context {
return InstrumentationRegistry.getTargetContext()
}

View File

@ -0,0 +1,16 @@
package im.vector.matrix.android
import okreplay.OkReplayConfig
import okreplay.PermissionRule
import okreplay.RecorderRule
import org.junit.rules.RuleChain
import org.junit.rules.TestRule
class OkReplayRuleChainNoActivity(
private val configuration: OkReplayConfig) {
fun get(): TestRule {
return RuleChain.outerRule(PermissionRule(configuration))
.around(RecorderRule(configuration))
}
}

View File

@ -0,0 +1,64 @@
package im.vector.matrix.android.auth
import android.support.test.annotation.UiThreadTest
import android.support.test.rule.GrantPermissionRule
import android.support.test.runner.AndroidJUnit4
import com.zhuinden.monarchy.Monarchy
import im.vector.matrix.android.InstrumentedTest
import im.vector.matrix.android.OkReplayRuleChainNoActivity
import im.vector.matrix.android.api.MatrixOptions
import im.vector.matrix.android.api.auth.Authenticator
import im.vector.matrix.android.internal.auth.AuthModule
import im.vector.matrix.android.internal.di.MatrixModule
import im.vector.matrix.android.internal.di.NetworkModule
import okreplay.*
import org.junit.ClassRule
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.koin.standalone.StandAloneContext.loadKoinModules
import org.koin.standalone.inject
import org.koin.test.KoinTest
@RunWith(AndroidJUnit4::class)
internal class AuthenticatorTest : InstrumentedTest, KoinTest {
init {
Monarchy.init(context())
val matrixModule = MatrixModule(MatrixOptions(context())).definition
val networkModule = NetworkModule().definition
val authModule = AuthModule().definition
loadKoinModules(listOf(matrixModule, networkModule, authModule))
}
private val authenticator: Authenticator by inject()
private val okReplayInterceptor: OkReplayInterceptor by inject()
private val okReplayConfig = OkReplayConfig.Builder()
.tapeRoot(AndroidTapeRoot(
context(), javaClass))
.defaultMode(TapeMode.READ_WRITE) // or TapeMode.READ_ONLY
.sslEnabled(true)
.interceptor(okReplayInterceptor)
.build()
@get:Rule
val testRule = OkReplayRuleChainNoActivity(okReplayConfig).get()
@Test
@UiThreadTest
@OkReplay(tape = "auth", mode = TapeMode.READ_WRITE)
fun auth() {
}
companion object {
@ClassRule
@JvmField
val grantExternalStoragePermissionRule: GrantPermissionRule =
GrantPermissionRule.grant(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
}

View File

@ -22,7 +22,7 @@ import org.junit.Test
import kotlin.random.Random
internal class ChunkEntityTest : InstrumentedTest() {
internal class ChunkEntityTest : InstrumentedTest {
private lateinit var monarchy: Monarchy