googleapis / googleapis/google-http-java-client

How can i mock a multiple page response?

Aperta
#1,760 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
type: feature request
Lingua principale
Java
Stelle
1.4k
Fork
473
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hello,

Sample repro here: https://github.com/TheBestPessimist/Youtube-Subscriptions-Mailer/blob/2bf38ec27b2841102e3e1431b6d318bb378ccd0a/src/test/kotlin/land/tbp/youtube/SubscriptionsFetcherTest.kt#L214-L220

I am trying to test my integration with the Youtube API.
For that one i'm creating a `mockHttpTransport` with a `mockResponse` (or a `mockRequest`, the same issue presented below arises):

```kotlin
val mockHttpTransport = MockHttpTransport.Builder()
// .setLowLevelHttpRequest(mockRequest)
.setLowLevelHttpResponse(mockResponse)
.build()

val youtube = YouTube.Builder(
mockHttpTransport,
mockGoogleCredential.jsonFactory,
mockGoogleCredential
).build()
```

I want to get all my subscriptions, but they are more than 50 so I get a paged response (`"nextPageToken": "CAUQAA"`), so i need to make a second request to execute:
```kotlin
val request = youtube
.subscriptions()
.list(listOf("snippet", "contentDetails"))
.setMaxResults(5000)
.setMine(true)
.setFields("*")
.setPrettyPrint(true)

val responseWhichReturnsTheCorrectSubscriptionListPage: SubscriptionListResponse = request.execute()
println(responseWhichReturnsTheCorrectSubscriptionListPage)

val responseWhichThrowsIAE: SubscriptionListResponse = request.setPageToken("CAUQAA").execute()
println(responseWhichThrowsIAE)
```

Q1: why can't i return the same mock response multiple times? the second iteration throws java.lang.IllegalArgumentException: no JSON input found
Q2: How can i pass multiple different mockResponses to the transport, to simulate that i have to fetch multiple pages from youtube?

I have already tried searching on Stackoverflow, but i had little success: https://stackoverflow.com/search?tab=votes&q=%5bgoogle-cloud-platform%5d%20%20mock.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.