2016-10-25 17 views
2

Purchases.Subscriptions.getリソースを取得するためにAndroidPublisher APIにリクエストするクラスがあります。どのようにしてOAuthリクエストを模擬し、com.google.api.client.testingパッケージのクラスを使用してサブスクリプションリソースを取得するのですか?ここでGoogle API AndroidPublisherリクエストの模擬方法

は、サブスクリプションを取得するためのコードである:ここでは

HttpTransport httpTransport = new NetHttpTransport.Builder().build(); 
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
GoogleCredential credential = new GoogleCredential.Builder() 
    .setTransport(httpTransport) 
    .setJsonFactory(jsonFactory) 
    .setServiceAccountId("email") 
    .setServiceAccountScopes(singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)) 
    .setServiceAccountPrivateKeyFromP12File(new File("file.p12")) 
    .build(); 
AndroidPublisher androidPublisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential) 
    .setApplicationName("appname") 
    .build(); 
AndroidPublisher.Purchases.Subscriptions.Get get = androidPublisher.purchases().subscriptions().get(
    "appname", 
    "productId", 
    "purchaseToken"); 
SubscriptionPurchase subscription = get.execute(); 
System.out.println(subscription.toPrettyString()); 

はJSONレスポンスをモックしようとすると、失敗した私は現在、午前方法ですが、:

MockLowLevelHttpResponse mockResponse = new MockLowLevelHttpResponse(); 
mockResponse.setStatusCode(200); 
mockResponse.setContentType(Json.MEDIA_TYPE); 
mockResponse.setContent("{\n" + 
     " \"autoRenewing\" : true,\n" + 
     " \"countryCode\" : \"US\",\n" + 
     " \"developerPayload\" : \"\",\n" + 
     " \"expiryTimeMillis\" : \"1480019001357\",\n" + 
     " \"kind\" : \"androidpublisher#subscriptionPurchase\",\n" + 
     " \"paymentState\" : 1,\n" + 
     " \"priceAmountMicros\" : \"990000\",\n" + 
     " \"priceCurrencyCode\" : \"USD\",\n" + 
     " \"startTimeMillis\" : \"\"\n" + 
     "}"); 
return new MockHttpTransport.Builder().setLowLevelHttpResponse(mockResponse).build(); 

私がテストを実行しますモッククラスでは、次のスタックトレースを取得します。

java.lang.IllegalArgumentException: no JSON input found 
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:125) 
at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:49) 
at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:223) 
at com.google.api.client.json.JsonParser.parse(JsonParser.java:380) 
at com.google.api.client.json.JsonParser.parse(JsonParser.java:355) 
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87) 
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81) 
at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:459) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 

私は何が欠けていますか?サブスクリプションを取得するための呼び出しと同様に、OAuth2応答をどのように模擬しますか?

答えて

2

私の問題を理解することができました。 HttpTransportを嘲笑することに加えて、私はGoogleCredentialのようなモックGoogleカレンダーを提供しなければならなかった:

new MockGoogleCredential.Builder().build(); 
関連する問題