Issue#8 Take use of TestFixtures to keep MockWebServer TLS setup in the network module, while still being able to use it in Android Tests
This commit is contained in:
parent
555ad6d05f
commit
3f4d22528c
18 changed files with 117 additions and 77 deletions
|
|
@ -2,6 +2,7 @@ plugins {
|
|||
id 'java-library'
|
||||
id 'kotlin'
|
||||
id 'kotlin-kapt'
|
||||
id 'java-test-fixtures'
|
||||
}
|
||||
|
||||
java {
|
||||
|
|
@ -30,4 +31,5 @@ dependencies {
|
|||
testImplementation "org.junit.jupiter:junit-jupiter-params:$testing_junit5_version"
|
||||
|
||||
testImplementation project(':mockserver')
|
||||
testFixturesApi testFixtures(project(':network'))
|
||||
}
|
||||
|
|
@ -14,13 +14,14 @@ import org.fnives.test.showcase.model.auth.LoginStatus
|
|||
import org.fnives.test.showcase.model.network.BaseUrl
|
||||
import org.fnives.test.showcase.model.shared.Answer
|
||||
import org.fnives.test.showcase.network.mockserver.ContentData
|
||||
import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario
|
||||
import org.fnives.test.showcase.network.testutil.MockServerScenarioSetupExtensions
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.RegisterExtension
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
|
|
@ -35,7 +36,10 @@ import java.util.stream.Stream
|
|||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class AuthIntegrationTest : KoinTest {
|
||||
|
||||
private lateinit var mockServerScenarioSetup: MockServerScenarioSetup
|
||||
@RegisterExtension
|
||||
@JvmField
|
||||
val mockServerScenarioSetupExtensions = MockServerScenarioSetupExtensions()
|
||||
private val mockServerScenarioSetup get() = mockServerScenarioSetupExtensions.mockServerScenarioSetup
|
||||
private lateinit var fakeFavouriteContentLocalStorage: FakeFavouriteContentLocalStorage
|
||||
private lateinit var mockSessionExpirationListener: SessionExpirationListener
|
||||
private lateinit var fakeUserDataLocalStorage: FakeUserDataLocalStorage
|
||||
|
|
@ -46,15 +50,13 @@ class AuthIntegrationTest : KoinTest {
|
|||
@BeforeEach
|
||||
fun setup() {
|
||||
mockSessionExpirationListener = mock()
|
||||
mockServerScenarioSetup = MockServerScenarioSetup()
|
||||
val url = mockServerScenarioSetup.start(false)
|
||||
fakeFavouriteContentLocalStorage = FakeFavouriteContentLocalStorage()
|
||||
fakeUserDataLocalStorage = FakeUserDataLocalStorage(null)
|
||||
|
||||
startKoin {
|
||||
modules(
|
||||
createCoreModule(
|
||||
baseUrl = BaseUrl(url),
|
||||
baseUrl = BaseUrl(mockServerScenarioSetupExtensions.url),
|
||||
enableNetworkLogging = true,
|
||||
favouriteContentLocalStorageProvider = { fakeFavouriteContentLocalStorage },
|
||||
sessionExpirationListenerProvider = { mockSessionExpirationListener },
|
||||
|
|
@ -66,7 +68,6 @@ class AuthIntegrationTest : KoinTest {
|
|||
|
||||
@AfterEach
|
||||
fun tearDown() {
|
||||
mockServerScenarioSetup.stop()
|
||||
stopKoin()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,15 +23,16 @@ import org.fnives.test.showcase.model.network.BaseUrl
|
|||
import org.fnives.test.showcase.model.session.Session
|
||||
import org.fnives.test.showcase.model.shared.Resource
|
||||
import org.fnives.test.showcase.network.mockserver.ContentData
|
||||
import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.content.ContentScenario
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.refresh.RefreshTokenScenario
|
||||
import org.fnives.test.showcase.network.testutil.MockServerScenarioSetupExtensions
|
||||
import org.fnives.test.showcase.network.shared.exceptions.NetworkException
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.RegisterExtension
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koin.core.context.stopKoin
|
||||
import org.koin.test.KoinTest
|
||||
|
|
@ -42,7 +43,10 @@ import org.mockito.kotlin.verifyZeroInteractions
|
|||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class ContentIntegrationTest : KoinTest {
|
||||
|
||||
private lateinit var mockServerScenarioSetup: MockServerScenarioSetup
|
||||
@RegisterExtension
|
||||
@JvmField
|
||||
val mockServerScenarioSetupExtensions = MockServerScenarioSetupExtensions()
|
||||
private val mockServerScenarioSetup get() = mockServerScenarioSetupExtensions.mockServerScenarioSetup
|
||||
private lateinit var fakeFavouriteContentLocalStorage: FakeFavouriteContentLocalStorage
|
||||
private lateinit var mockSessionExpirationListener: SessionExpirationListener
|
||||
private lateinit var fakeUserDataLocalStorage: FakeUserDataLocalStorage
|
||||
|
|
@ -55,15 +59,13 @@ class ContentIntegrationTest : KoinTest {
|
|||
@BeforeEach
|
||||
fun setup() {
|
||||
mockSessionExpirationListener = mock()
|
||||
mockServerScenarioSetup = MockServerScenarioSetup()
|
||||
val url = mockServerScenarioSetup.start(false)
|
||||
fakeFavouriteContentLocalStorage = FakeFavouriteContentLocalStorage()
|
||||
fakeUserDataLocalStorage = FakeUserDataLocalStorage(session)
|
||||
|
||||
startKoin {
|
||||
modules(
|
||||
createCoreModule(
|
||||
baseUrl = BaseUrl(url),
|
||||
baseUrl = BaseUrl(mockServerScenarioSetupExtensions.url),
|
||||
enableNetworkLogging = true,
|
||||
favouriteContentLocalStorageProvider = { fakeFavouriteContentLocalStorage },
|
||||
sessionExpirationListenerProvider = { mockSessionExpirationListener },
|
||||
|
|
@ -76,7 +78,6 @@ class ContentIntegrationTest : KoinTest {
|
|||
@AfterEach
|
||||
fun tearDown() {
|
||||
stopKoin()
|
||||
mockServerScenarioSetup.stop()
|
||||
}
|
||||
|
||||
@DisplayName("GIVEN normal response without favourites WHEN observed THEN data is returned")
|
||||
|
|
|
|||
|
|
@ -16,16 +16,17 @@ import org.fnives.test.showcase.core.session.SessionExpirationListener
|
|||
import org.fnives.test.showcase.model.auth.LoginCredentials
|
||||
import org.fnives.test.showcase.model.network.BaseUrl
|
||||
import org.fnives.test.showcase.model.shared.Resource
|
||||
import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.content.ContentScenario
|
||||
import org.fnives.test.showcase.network.mockserver.scenario.refresh.RefreshTokenScenario
|
||||
import org.fnives.test.showcase.network.shared.exceptions.NetworkException
|
||||
import org.fnives.test.showcase.network.testutil.MockServerScenarioSetupExtensions
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.RegisterExtension
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koin.core.context.stopKoin
|
||||
import org.koin.test.KoinTest
|
||||
|
|
@ -39,7 +40,10 @@ import org.mockito.kotlin.verifyZeroInteractions
|
|||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class SessionExpirationIntegrationTest : KoinTest {
|
||||
|
||||
private lateinit var mockServerScenarioSetup: MockServerScenarioSetup
|
||||
@RegisterExtension
|
||||
@JvmField
|
||||
val mockServerScenarioSetupExtensions = MockServerScenarioSetupExtensions()
|
||||
private val mockServerScenarioSetup get() = mockServerScenarioSetupExtensions.mockServerScenarioSetup
|
||||
private lateinit var fakeFavouriteContentLocalStorage: FakeFavouriteContentLocalStorage
|
||||
private lateinit var mockSessionExpirationListener: SessionExpirationListener
|
||||
private lateinit var fakeUserDataLocalStorage: FakeUserDataLocalStorage
|
||||
|
|
@ -51,15 +55,13 @@ class SessionExpirationIntegrationTest : KoinTest {
|
|||
@BeforeEach
|
||||
fun setup() {
|
||||
mockSessionExpirationListener = mock()
|
||||
mockServerScenarioSetup = MockServerScenarioSetup()
|
||||
val url = mockServerScenarioSetup.start(false)
|
||||
fakeFavouriteContentLocalStorage = FakeFavouriteContentLocalStorage()
|
||||
fakeUserDataLocalStorage = FakeUserDataLocalStorage(null)
|
||||
|
||||
startKoin {
|
||||
modules(
|
||||
createCoreModule(
|
||||
baseUrl = BaseUrl(url),
|
||||
baseUrl = BaseUrl(mockServerScenarioSetupExtensions.url),
|
||||
enableNetworkLogging = true,
|
||||
favouriteContentLocalStorageProvider = { fakeFavouriteContentLocalStorage },
|
||||
sessionExpirationListenerProvider = { mockSessionExpirationListener },
|
||||
|
|
@ -71,7 +73,6 @@ class SessionExpirationIntegrationTest : KoinTest {
|
|||
|
||||
@AfterEach
|
||||
fun tearDown() {
|
||||
mockServerScenarioSetup.stop()
|
||||
stopKoin()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue