@@ -11,25 +11,27 @@ import org.robolectric.RobolectricTestRunner
1111import org.wordpress.android.fluxc.model.SiteModel
1212import org.wordpress.android.fluxc.network.rest.wpapi.WPAPINetworkError
1313import org.wordpress.android.fluxc.network.rest.wpapi.WPAPIResponse
14+ import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration
1415import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsNetwork
15- import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore
1616import org.wordpress.android.fluxc.network.rest.wpcom.JetpackTunnelWPAPINetwork
1717import org.wordpress.android.fluxc.persistence.SiteSqlUtils
1818import 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}
0 commit comments