Skip to content

Commit bb91c63

Browse files
Update unit tests
1 parent 5d7b893 commit bb91c63

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

libs/fluxc-plugin/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/WooNetwork.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ class WooNetwork @Inject constructor(
184184
"site: ${siteUrl},\n" +
185185
"path: ${requestContext.path},\n" +
186186
"method: ${requestContext.method},\n" +
187-
"error: HTTP status code ${error.volleyError.networkResponse?.statusCode}, " +
187+
"error: HTTP status code ${error.volleyError?.networkResponse?.statusCode}, " +
188188
"error message: ${error.errorCode?.ifEmpty { null } ?: error.message}",
189189
)
190190
}
Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,27 @@ import org.robolectric.RobolectricTestRunner
1111
import org.wordpress.android.fluxc.model.SiteModel
1212
import org.wordpress.android.fluxc.network.rest.wpapi.WPAPINetworkError
1313
import org.wordpress.android.fluxc.network.rest.wpapi.WPAPIResponse
14+
import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration
1415
import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsNetwork
15-
import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore
1616
import org.wordpress.android.fluxc.network.rest.wpcom.JetpackTunnelWPAPINetwork
1717
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
1818
import org.wordpress.android.fluxc.test
1919

2020
@RunWith(RobolectricTestRunner::class)
21-
class WooExperimentalNetworkTest {
22-
private val testSite = SiteModel()
21+
class WooNetworkTest {
22+
private val testSite = SiteModel().apply {
23+
url = "https://example.com"
24+
}
2325
private val testPath = "path"
26+
private val applicationPasswordsConfiguration = FakeApplicationPasswordsConfiguration()
2427
private val applicationPasswordsNetwork: ApplicationPasswordsNetwork = mock()
2528
private val jetpackTunnelWPAPINetwork: JetpackTunnelWPAPINetwork = mock()
26-
private val applicationPasswordsStore: ApplicationPasswordsStore = mock()
2729
private val siteSqlUtils: SiteSqlUtils = mock()
2830

29-
private val sut = WooExperimentalNetwork(
31+
private val sut = WooNetwork(
32+
applicationPasswordsConfiguration = applicationPasswordsConfiguration,
3033
applicationPasswordsNetwork = applicationPasswordsNetwork,
3134
jetpackTunnelWPAPINetwork = jetpackTunnelWPAPINetwork,
32-
applicationPasswordsStore = applicationPasswordsStore,
3335
siteSqlUtils = siteSqlUtils
3436
)
3537

@@ -59,7 +61,14 @@ class WooExperimentalNetworkTest {
5961
test {
6062
testSite.origin = SiteModel.ORIGIN_WPCOM_REST
6163
testSite.applicationPasswordsAuthorizeUrl = "authorize_url"
62-
givenAppPasswordsResponse(WPAPIResponse.Error(WPAPINetworkError(mock(), "error")))
64+
givenAppPasswordsResponse(
65+
WPAPIResponse.Error(
66+
WPAPINetworkError(
67+
mock(),
68+
"error"
69+
)
70+
)
71+
)
6372
val sampleResponse = SampleResponse("value")
6473
givenJetpackTunnelResponse(WPAPIResponse.Success(sampleResponse, emptyList()))
6574

@@ -89,6 +98,28 @@ class WooExperimentalNetworkTest {
8998
assertThat((response as WPAPIResponse.Success).data).isEqualTo(sampleResponse)
9099
}
91100

101+
@Test
102+
fun `when app passwords are disabled for jetpack access, then always use jetpack tunnel`() = test {
103+
applicationPasswordsConfiguration.isEnabledForJetpackAccessValue = false
104+
testSite.origin = SiteModel.ORIGIN_WPCOM_REST
105+
testSite.applicationPasswordsAuthorizeUrl = "authorize_url"
106+
val sampleResponse = SampleResponse("value")
107+
givenJetpackTunnelResponse(WPAPIResponse.Success(sampleResponse, emptyList()))
108+
109+
val response = sut.executeGetGsonRequest(
110+
site = testSite,
111+
path = testPath,
112+
clazz = SampleResponse::class.java
113+
)
114+
115+
assertThat((response as WPAPIResponse.Success).data).isEqualTo(sampleResponse)
116+
verify(applicationPasswordsNetwork, never()).executeGetGsonRequest(
117+
site = testSite,
118+
path = testPath,
119+
clazz = SampleResponse::class.java
120+
)
121+
}
122+
92123
@Test
93124
fun `when detecting that a site doesn't support app passwords, then update cached site with correct status`() =
94125
test {
@@ -139,4 +170,13 @@ class WooExperimentalNetworkTest {
139170
}
140171

141172
private data class SampleResponse(val value: String)
173+
174+
private class FakeApplicationPasswordsConfiguration : ApplicationPasswordsConfiguration {
175+
var isEnabledForJetpackAccessValue: Boolean = true
176+
177+
override val applicationName: String
178+
get() = "WooCommerce"
179+
180+
override suspend fun isEnabledForJetpackAccess(): Boolean = isEnabledForJetpackAccessValue
181+
}
142182
}

libs/fluxc/src/test/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordManagerTests.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import org.wordpress.android.fluxc.model.SiteModel
1414
import org.wordpress.android.fluxc.network.BaseRequest.BaseNetworkError
1515
import org.wordpress.android.fluxc.network.BaseRequest.GenericErrorType
1616
import org.wordpress.android.fluxc.network.rest.wpcom.WPComGsonRequest.WPComGsonNetworkError
17-
import java.util.*
1817
import kotlin.test.assertEquals
1918

2019
@ExperimentalCoroutinesApi
@@ -34,7 +33,10 @@ class ApplicationPasswordManagerTests {
3433
private val mJetpackApplicationPasswordsRestClient: JetpackApplicationPasswordsRestClient = mock()
3534
private val mWpApiApplicationPasswordsRestClient: WPApiApplicationPasswordsRestClient = mock()
3635

37-
private val applicationPasswordsConfiguration = ApplicationPasswordsConfiguration(Optional.of(applicationName))
36+
private val applicationPasswordsConfiguration = object : ApplicationPasswordsConfiguration {
37+
override val applicationName: String = this@ApplicationPasswordManagerTests.applicationName
38+
override suspend fun isEnabledForJetpackAccess() = true
39+
}
3840

3941
private lateinit var mApplicationPasswordsManager: ApplicationPasswordsManager
4042

0 commit comments

Comments
 (0)