From ac7cdaa7d553fa0a3f08fac9d95e49b6feaf9034 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 11 Oct 2024 15:20:24 +0100 Subject: [PATCH 1/4] Add ability to make unauthenticated sync Get requests --- .../activity/ActivityLogRestClientTest.kt | 12 ++++++++---- .../BloggingPromptsRestClientTest.kt | 3 ++- .../wpcom/comments/CommentsRestClientTest.kt | 3 ++- .../wpcom/dashboard/CardsRestClientTest.kt | 3 ++- .../experiments/ExperimentRestClientTest.kt | 3 ++- .../wpcom/mobile/FeatureFlagsRestClientTest.kt | 3 ++- .../wpcom/mobile/RemoteConfigRestClientTest.kt | 3 ++- .../planoffers/PlanOffersRestClientTest.kt | 3 ++- .../wpcom/products/ProductsRestClientTest.kt | 3 ++- .../rest/wpcom/scan/ScanRestClientTest.kt | 6 ++++-- .../rest/wpcom/site/SiteRestClientTest.kt | 4 ++-- .../rest/wpcom/stats/InsightsRestClientTest.kt | 3 ++- .../insights/MostPopularRestClientTest.kt | 3 ++- .../insights/PostingActivityRestClientTest.kt | 3 ++- .../stats/insights/SummaryRestClientTest.kt | 3 ++- .../subscribers/SubscribersRestClientTest.kt | 3 ++- .../wpcom/stats/time/AuthorsRestClientTest.kt | 3 ++- .../wpcom/stats/time/ClicksRestClientTest.kt | 3 ++- .../stats/time/CountryViewsRestClientTest.kt | 3 ++- .../stats/time/FileDownloadsRestClientTest.kt | 3 ++- .../time/PostAndPageViewsRestClientTest.kt | 3 ++- .../stats/time/ReferrersRestClientTest.kt | 3 ++- .../stats/time/SearchTermsRestClientTest.kt | 3 ++- .../stats/time/VideoPlaysRestClientTest.kt | 3 ++- .../stats/time/VisitAndViewsRestClientTest.kt | 3 ++- .../rest/wpcom/WPComGsonRequestBuilder.kt | 18 ++++++++++++++---- 26 files changed, 72 insertions(+), 34 deletions(-) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClientTest.kt index 46523934cf..a708440e23 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/activity/ActivityLogRestClientTest.kt @@ -591,7 +591,8 @@ class ActivityLogRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) @@ -612,7 +613,8 @@ class ActivityLogRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() )).thenReturn(response) whenever(site.siteId).thenReturn(siteId) return response @@ -698,7 +700,8 @@ class ActivityLogRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() )).thenReturn(response) whenever(site.siteId).thenReturn(siteId) return response @@ -717,7 +720,8 @@ class ActivityLogRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) return response diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/bloggingprompts/BloggingPromptsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/bloggingprompts/BloggingPromptsRestClientTest.kt index b1bb8245fd..f3659a581b 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/bloggingprompts/BloggingPromptsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/bloggingprompts/BloggingPromptsRestClientTest.kt @@ -212,7 +212,8 @@ class BloggingPromptsRestClientTest { eq(BloggingPromptsListResponseTypeToken.type), eq(false), any(), - eq(false) + eq(false), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/comments/CommentsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/comments/CommentsRestClientTest.kt index 6ecc8e9d96..aa4824c9b0 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/comments/CommentsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/comments/CommentsRestClientTest.kt @@ -572,7 +572,8 @@ class CommentsRestClientTest { any(), any(), any(), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) return response diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt index b846362c56..9ac33ade0b 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/dashboard/CardsRestClientTest.kt @@ -400,7 +400,8 @@ class CardsRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/experiments/ExperimentRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/experiments/ExperimentRestClientTest.kt index a7659af27f..a04dcdf13b 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/experiments/ExperimentRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/experiments/ExperimentRestClientTest.kt @@ -176,7 +176,8 @@ class ExperimentRestClientTest { eq(false), any(), eq(true), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) } diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/FeatureFlagsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/FeatureFlagsRestClientTest.kt index 639d8baf15..437d0d2a31 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/FeatureFlagsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/FeatureFlagsRestClientTest.kt @@ -212,7 +212,8 @@ class FeatureFlagsRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) } diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/RemoteConfigRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/RemoteConfigRestClientTest.kt index e1f4725b02..ec9cc0bfbd 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/RemoteConfigRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/mobile/RemoteConfigRestClientTest.kt @@ -138,7 +138,8 @@ class RemoteConfigRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) } diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/planoffers/PlanOffersRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/planoffers/PlanOffersRestClientTest.kt index 319d9a2efd..9c5d94c16f 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/planoffers/PlanOffersRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/planoffers/PlanOffersRestClientTest.kt @@ -87,7 +87,8 @@ class PlanOffersRestClientTest { eq(false), any(), eq(true), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) } diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/products/ProductsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/products/ProductsRestClientTest.kt index 4e0819a195..00a3c17745 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/products/ProductsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/products/ProductsRestClientTest.kt @@ -92,7 +92,8 @@ class ProductsRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) } diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/ScanRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/ScanRestClientTest.kt index e9efc70606..21900da4e5 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/ScanRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/ScanRestClientTest.kt @@ -423,7 +423,8 @@ class ScanRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) @@ -508,7 +509,8 @@ class ScanRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) return response diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt index d3ddedeae8..4ac5d538fb 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt @@ -667,8 +667,8 @@ class SiteRestClientTest { any(), any(), any(), - customGsonBuilder = anyOrNull() - + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) return response diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/InsightsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/InsightsRestClientTest.kt index 2fed773711..8e5b3ea6d3 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/InsightsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/InsightsRestClientTest.kt @@ -512,7 +512,8 @@ class InsightsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/MostPopularRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/MostPopularRestClientTest.kt index 43298945b9..13a0e42fcf 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/MostPopularRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/MostPopularRestClientTest.kt @@ -103,7 +103,8 @@ class MostPopularRestClientTest { eq(true), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/PostingActivityRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/PostingActivityRestClientTest.kt index c35454d065..43e98699d5 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/PostingActivityRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/PostingActivityRestClientTest.kt @@ -120,7 +120,8 @@ class PostingActivityRestClientTest { eq(true), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/SummaryRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/SummaryRestClientTest.kt index 826d86f74d..8f17e580e0 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/SummaryRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/insights/SummaryRestClientTest.kt @@ -100,7 +100,8 @@ class SummaryRestClientTest { eq(false), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/subscribers/SubscribersRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/subscribers/SubscribersRestClientTest.kt index cd6d262ed6..7edf3673ec 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/subscribers/SubscribersRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/subscribers/SubscribersRestClientTest.kt @@ -146,7 +146,8 @@ class SubscribersRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/AuthorsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/AuthorsRestClientTest.kt index 29b747c3df..36c40870f5 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/AuthorsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/AuthorsRestClientTest.kt @@ -174,7 +174,8 @@ class AuthorsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ClicksRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ClicksRestClientTest.kt index 39f83f42b8..7963d890a5 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ClicksRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ClicksRestClientTest.kt @@ -220,7 +220,8 @@ class ClicksRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/CountryViewsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/CountryViewsRestClientTest.kt index a560927cdf..4996c50247 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/CountryViewsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/CountryViewsRestClientTest.kt @@ -170,7 +170,8 @@ class CountryViewsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/FileDownloadsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/FileDownloadsRestClientTest.kt index 0b9cd216ef..fbecd88552 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/FileDownloadsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/FileDownloadsRestClientTest.kt @@ -174,7 +174,8 @@ class FileDownloadsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/PostAndPageViewsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/PostAndPageViewsRestClientTest.kt index 3f20771118..a77d433551 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/PostAndPageViewsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/PostAndPageViewsRestClientTest.kt @@ -170,7 +170,8 @@ class PostAndPageViewsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ReferrersRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ReferrersRestClientTest.kt index bf8a3f5117..1482ef1f36 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ReferrersRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/ReferrersRestClientTest.kt @@ -313,7 +313,8 @@ class ReferrersRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/SearchTermsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/SearchTermsRestClientTest.kt index fafe95554d..188b905837 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/SearchTermsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/SearchTermsRestClientTest.kt @@ -170,7 +170,8 @@ class SearchTermsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VideoPlaysRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VideoPlaysRestClientTest.kt index cdbfb99d7f..04756fee12 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VideoPlaysRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VideoPlaysRestClientTest.kt @@ -174,7 +174,8 @@ class VideoPlaysRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VisitAndViewsRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VisitAndViewsRestClientTest.kt index 161b31866e..91609fcaee 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VisitAndViewsRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/stats/time/VisitAndViewsRestClientTest.kt @@ -164,7 +164,8 @@ class VisitAndViewsRestClientTest { eq(cachingEnabled), any(), eq(false), - customGsonBuilder = anyOrNull() + customGsonBuilder = anyOrNull(), + authenticatedRequest = any() ) ).thenReturn(response) whenever(site.siteId).thenReturn(siteId) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/WPComGsonRequestBuilder.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/WPComGsonRequestBuilder.kt index 13f06c9c5f..50cdb5e915 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/WPComGsonRequestBuilder.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/WPComGsonRequestBuilder.kt @@ -49,7 +49,8 @@ class WPComGsonRequestBuilder enableCaching: Boolean = false, cacheTimeToLive: Int = BaseRequest.DEFAULT_CACHE_LIFETIME, forced: Boolean = false, - customGsonBuilder: GsonBuilder? = null + customGsonBuilder: GsonBuilder? = null, + authenticatedRequest: Boolean = true ) = suspendCancellableCoroutine> { cont -> val request = WPComGsonRequest.buildGetRequest(url, params, clazz, { cont.resume(Success(it)) @@ -63,7 +64,11 @@ class WPComGsonRequestBuilder if (forced) { request.setShouldForceUpdate() } - restClient.add(request) + if (authenticatedRequest) { + restClient.add(request) + } else { + restClient.addUnauthedRequest(request) + } } /** @@ -99,7 +104,8 @@ class WPComGsonRequestBuilder type: Type, enableCaching: Boolean = false, cacheTimeToLive: Int = BaseRequest.DEFAULT_CACHE_LIFETIME, - forced: Boolean = false + forced: Boolean = false, + authenticatedRequest: Boolean = true ) = suspendCancellableCoroutine> { cont -> val request = WPComGsonRequest.buildGetRequest(url, params, type, { cont.resume(Success(it)) @@ -113,7 +119,11 @@ class WPComGsonRequestBuilder if (forced) { request.setShouldForceUpdate() } - restClient.add(request) + if (authenticatedRequest) { + restClient.add(request) + } else { + restClient.addUnauthedRequest(request) + } } /** From bd060e25b496bdb8f37741d9aa602a8f820eccf7 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 11 Oct 2024 15:27:45 +0100 Subject: [PATCH 2/4] Add a coroutine based implementation for fetching site info --- .../network/rest/wpcom/site/SiteRestClient.kt | 69 +++++++++++-------- .../android/fluxc/store/SiteStore.kt | 9 ++- 2 files changed, 48 insertions(+), 30 deletions(-) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt index 831d3db488..c98f2a7e09 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt @@ -88,6 +88,7 @@ import org.wordpress.android.fluxc.store.SiteStore.SuggestDomainErrorType.EMPTY_ import org.wordpress.android.fluxc.store.SiteStore.SuggestDomainsResponsePayload import org.wordpress.android.fluxc.store.SiteStore.UserRolesError import org.wordpress.android.fluxc.store.SiteStore.UserRolesErrorType +import org.wordpress.android.fluxc.tools.CoroutineEngine import org.wordpress.android.fluxc.utils.SiteUtils import org.wordpress.android.util.AppLog import org.wordpress.android.util.AppLog.T.API @@ -110,6 +111,7 @@ class SiteRestClient @Inject constructor( @Named("regular") requestQueue: RequestQueue?, private val appSecrets: AppSecrets, private val wpComGsonRequestBuilder: WPComGsonRequestBuilder, + private val coroutineEngine: CoroutineEngine, accessToken: AccessToken?, userAgent: UserAgent? ) : BaseWPComRestClient(appContext, dispatcher, requestQueue, accessToken, userAgent) { @@ -673,34 +675,58 @@ class SiteRestClient @Inject constructor( } // Unauthenticated network calls - @Suppress("SwallowedException") fun fetchConnectSiteInfo(siteUrl: String) { + coroutineEngine.launch(AppLog.T.API, this, "fetchConnectSiteInfo") { + fetchConnectSiteInfoSync(siteUrl).let { payload -> + mDispatcher.dispatch(SiteActionBuilder.newFetchedConnectSiteInfoAction(payload)) + } + } + } + + @Suppress("SwallowedException") + suspend fun fetchConnectSiteInfoSync(siteUrl: String): ConnectSiteInfoPayload { + fun ConnectSiteInfoResponse.toConnectSiteInfoPayload(url: String): ConnectSiteInfoPayload { + return ConnectSiteInfoPayload( + url, + exists, + isWordPress, + hasJetpack, + isJetpackActive, + isJetpackConnected, + isWordPressDotCom, // CHECKSTYLE IGNORE + urlAfterRedirects + ) + } + // Get a proper URI to reliably retrieve the scheme. val uri: URI = try { URI.create(UrlUtils.addUrlSchemeIfNeeded(siteUrl, false)) } catch (e: IllegalArgumentException) { val siteError = SiteError(INVALID_SITE) - val payload = ConnectSiteInfoPayload(siteUrl, siteError) - mDispatcher.dispatch(SiteActionBuilder.newFetchedConnectSiteInfoAction(payload)) - return + return ConnectSiteInfoPayload(siteUrl, siteError) } + val params = mutableMapOf() params["url"] = uri.toString() // Make the call. val url = WPCOMREST.connect.site_info.urlV1_1 - val request = WPComGsonRequest.buildGetRequest(url, params, - ConnectSiteInfoResponse::class.java, - { response -> - val info = connectSiteInfoFromResponse(siteUrl, response) - mDispatcher.dispatch(SiteActionBuilder.newFetchedConnectSiteInfoAction(info)) - } - ) { - val siteError = SiteError(INVALID_SITE) - val info = ConnectSiteInfoPayload(siteUrl, siteError) - mDispatcher.dispatch(SiteActionBuilder.newFetchedConnectSiteInfoAction(info)) + val response = wpComGsonRequestBuilder.syncGetRequest( + restClient = this, + url = url, + params = params, + clazz = ConnectSiteInfoResponse::class.java + ) + + return when (response) { + is Error -> { + val siteError = SiteError(INVALID_SITE) + ConnectSiteInfoPayload(siteUrl, siteError) + } + is Success -> { + response.data.toConnectSiteInfoPayload(siteUrl) + } } - addUnauthedRequest(request) } @Suppress("SwallowedException") @@ -1229,19 +1255,6 @@ class SiteRestClient @Inject constructor( return payload } - private fun connectSiteInfoFromResponse(url: String, response: ConnectSiteInfoResponse): ConnectSiteInfoPayload { - return ConnectSiteInfoPayload( - url, - response.exists, - response.isWordPress, - response.hasJetpack, - response.isJetpackActive, - response.isJetpackConnected, - response.isWordPressDotCom, // CHECKSTYLE IGNORE - response.urlAfterRedirects - ) - } - private fun responseToDomainAvailabilityPayload( response: DomainAvailabilityResponse ): DomainAvailabilityResponsePayload { diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt index bd8e6266db..6daebd6e38 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt @@ -402,8 +402,7 @@ open class SiteStore @Inject constructor( } } - data class ConnectSiteInfoPayload - @JvmOverloads constructor( + data class ConnectSiteInfoPayload @JvmOverloads constructor( @JvmField val url: String, @JvmField val exists: Boolean = false, @JvmField val isWordPress: Boolean = false, @@ -1861,6 +1860,12 @@ open class SiteStore @Inject constructor( siteRestClient.fetchConnectSiteInfo(payload) } + suspend fun fetchConnectSiteInfoSync(siteUrl: String): ConnectSiteInfoPayload { + return coroutineEngine.withDefaultContext(T.API, this, "Fetch Connect Site Info") { + siteRestClient.fetchConnectSiteInfoSync(siteUrl) + } + } + private fun handleFetchedConnectSiteInfo(payload: ConnectSiteInfoPayload) { val event = OnConnectSiteInfoChecked(payload) event.error = payload.error From fdae4ba620f9e53e9d04e81781ccf5bdd1ed0990 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 11 Oct 2024 16:10:02 +0100 Subject: [PATCH 3/4] Return a specific error when site is suspended --- .../fluxc/network/rest/wpcom/site/SiteRestClient.kt | 8 ++++++-- .../java/org/wordpress/android/fluxc/store/SiteStore.kt | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt index c98f2a7e09..aecc5cdb86 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClient.kt @@ -720,8 +720,12 @@ class SiteRestClient @Inject constructor( return when (response) { is Error -> { - val siteError = SiteError(INVALID_SITE) - ConnectSiteInfoPayload(siteUrl, siteError) + val siteErrorType = when (response.error.apiError) { + "connection_disabled" -> SiteErrorType.WPCOM_SITE_SUSPENDED + else -> INVALID_SITE + } + + ConnectSiteInfoPayload(siteUrl, SiteError(siteErrorType)) } is Success -> { response.data.toConnectSiteInfoPayload(siteUrl) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt index 6daebd6e38..a60545f3b7 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/store/SiteStore.kt @@ -896,7 +896,14 @@ open class SiteStore @Inject constructor( ) enum class SiteErrorType { - INVALID_SITE, UNKNOWN_SITE, DUPLICATE_SITE, INVALID_RESPONSE, UNAUTHORIZED, NOT_AUTHENTICATED, GENERIC_ERROR + INVALID_SITE, + UNKNOWN_SITE, + DUPLICATE_SITE, + INVALID_RESPONSE, + UNAUTHORIZED, + NOT_AUTHENTICATED, + GENERIC_ERROR, + WPCOM_SITE_SUSPENDED } enum class AllDomainsErrorType { From f51c7f6c7ce02a207df0b45e074941225850b6ae Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 11 Oct 2024 17:14:31 +0100 Subject: [PATCH 4/4] Add a unit test --- .../rest/wpcom/site/SiteRestClientTest.kt | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt index 4ac5d538fb..a99a3cfc2c 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt @@ -9,6 +9,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito.mockStatic import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.KArgumentCaptor import org.mockito.kotlin.any @@ -34,12 +35,15 @@ import org.wordpress.android.fluxc.network.rest.wpcom.site.SiteWPComRestResponse import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.ERROR import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.SUCCESS import org.wordpress.android.fluxc.store.SiteStore.PostFormatsErrorType +import org.wordpress.android.fluxc.store.SiteStore.SiteErrorType import org.wordpress.android.fluxc.store.SiteStore.SiteFilter.WPCOM import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.COMING_SOON import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.PUBLIC import org.wordpress.android.fluxc.test +import org.wordpress.android.fluxc.tools.initCoroutineEngine import org.wordpress.android.util.DateTimeUtils +import org.wordpress.android.util.UrlUtils import kotlin.test.assertNotNull @RunWith(MockitoJUnitRunner::class) @@ -63,13 +67,14 @@ class SiteRestClientTest { paramsCaptor = argumentCaptor() bodyCaptor = argumentCaptor() restClient = SiteRestClient( - null, - dispatcher, - requestQueue, - appSecrets, - wpComGsonRequestBuilder, - accessToken, - userAgent + appContext = null, + dispatcher = dispatcher, + requestQueue = requestQueue, + appSecrets = appSecrets, + wpComGsonRequestBuilder = wpComGsonRequestBuilder, + coroutineEngine = initCoroutineEngine(), + accessToken = accessToken, + userAgent = userAgent ) whenever(site.siteId).thenReturn(siteId) } @@ -610,6 +615,22 @@ class SiteRestClientTest { } } + @Test + fun `given a suspended WPCom website, when fetching site info, then return correct error`() = test { + val urlUtilsMock = mockStatic(UrlUtils::class.java) + whenever(UrlUtils.addUrlSchemeIfNeeded(any(), any())).thenAnswer { it.arguments[0] as String } + val error = WPComGsonNetworkError(BaseNetworkError(GenericErrorType.INVALID_RESPONSE, "")).apply { + apiError = "connection_disabled" + } + initGetResponse(ConnectSiteInfoResponse::class.java, null, error) + + val result = restClient.fetchConnectSiteInfoSync("test.com") + + assertThat(result.error).isNotNull + assertThat(result.error!!.type).isEqualTo(SiteErrorType.WPCOM_SITE_SUSPENDED) + urlUtilsMock.close() + } + private suspend fun initSiteResponse( data: SiteWPComRestResponse? = null, error: WPComGsonNetworkError? = null @@ -654,10 +675,13 @@ class SiteRestClientTest { private suspend fun initGetResponse( clazz: Class, - data: T, + data: T?, error: WPComGsonNetworkError? = null ): Response { - val response = if (error != null) Response.Error(error) else Success(data) + if (error == null && data == null) { + error("Either data or error must be provided") + } + val response = if (error != null) Response.Error(error) else Success(data!!) whenever( wpComGsonRequestBuilder.syncGetRequest( eq(restClient),