@Test public void eq() throws Exception { final Purchase p = new Purchase(JSON_PURCHASE, "signature"); final Purchase q = new Purchase(JSON_PURCHASE, "signature"); assertEq(p, q); }
private static void assertSimplePremiumer(@NonNull Binder binder, boolean isBound) { final PremiumerListener listener = mock(PremiumerListener.class); premiumer(listener, binder).bind(); if (isBound) { assertInvokedOnce(listener).onBillingAvailable(); assertInvokedNever(listener).onBillingUnavailable(); } else { assertInvokedNever(listener).onBillingAvailable(); assertInvokedOnce(listener).onBillingUnavailable(); } }
@Test public void purchaseNullPendingIntent() { final IInAppBillingService service = new BillingServiceStub() { @Override public Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type, String developerPayload) throws RemoteException { final Bundle bundle = new Bundle(2); bundle.putInt(RESPONSE_CODE, BILLING_RESPONSE_RESULT_OK); bundle.putParcelable(RESPONSE_BUY_INTENT, null); return bundle; } }; final Billing billing = billing(service); final Activity activity = mock(Activity.class); final boolean response = billing.purchase(activity, SKU, 0, null); assertThat(response).isFalse(); assertNoInteraction(activity); }
private void assertBound(boolean bound) { assertThat(binder.isBound()).isEqualTo(bound); if (bound) { assertInvokedOnce(listener).onBillingAvailable(); } else { assertInvokedOnce(listener).onBillingUnavailable(); } }
private void consumeSku(@Nullable Purchase cached) { premiumer.bind(); assertBound(true); when(cache.load()).thenReturn(cached); final boolean consumed = premiumer.consumeSku(); assertThat(consumed).isTrue(); assertInvokedOnce(cache).load(); if (cached == null) { assertInvokedOnce(listener).onFailedToConsumeSku(); } else { assertInvokedOnce(listener).onSkuConsumed(); } }
private void handleActivityVerification(boolean verified) throws Exception { final String responseData = JSON_PURCHASE; final String responseSignature = "responseSignature"; when(verifier.verify(SIGNATURE, responseData, responseSignature)).thenReturn(verified); final Intent intent = newBillingIntent(BILLING_RESPONSE_RESULT_OK, responseData, responseSignature); final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, RESULT_OK, intent); assertThat(handled).isTrue(); assertInvokedOnce(verifier).verify(SIGNATURE, responseData, responseSignature); if (verified) { final Purchase purchase = new Purchase(responseData, responseSignature); assertInvokedOnce(cache).cache(purchase); assertInvokedOnce(listener).onPurchaseSuccessful(purchase); } else { assertInvokedOnce(listener).onPurchaseFailedVerification(); } }
@Test public void eq() throws Exception { final SkuDetails s = new SkuDetails(JSON_SKU); final SkuDetails t = new SkuDetails(JSON_SKU); assertEq(s, t); }
@Test public void purchaseOk() { premiumer.bind(); assertBound(true); final String payload = "payload"; when(generator.generate()).thenReturn(payload); final Activity activity = mock(Activity.class); final boolean purchased = premiumer.purchase(activity); assertThat(purchased).isTrue(); assertInvokedOnce(generator).generate(); assertInvokedOnce(listener).onPurchaseRequested(payload); }
@Test public void eqFromJson() throws Exception { final Purchase p = new Purchase(JSON_PURCHASE, "signature"); final Purchase q = new Purchase(p.asJson(), "signature"); assertEq(p, q); }
private void handleActivityResultBadData(@Nullable String data) { final Intent intent = newBillingIntent(BILLING_RESPONSE_RESULT_OK, data, null); final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, RESULT_OK, intent); assertThat(handled).isTrue(); assertInvokedOnce(listener).onPurchaseBadResponse(intent); }
@Test public void fromJson() throws Exception { final SkuDetails s = new SkuDetails(JSON_SKU); final SkuDetails t = new SkuDetails(s.asJson()); assertEq(s, t); }
private static void assertInvoked(PremiumerListener listener, int message) { switch (message) { case ON_SHOW_ADS: assertInvokedOnce(listener).onShowAds(); break; case ON_HIDE_ADS: assertInvokedOnce(listener).onHideAds(); break; case ON_BILLING_AVAILABLE: assertInvokedOnce(listener).onBillingAvailable(); break; case ON_BILLING_UNAVAILABLE: assertInvokedOnce(listener).onBillingUnavailable(); break; case ON_SKU_DETAILS: assertInvokedOnce(listener).onSkuDetails(null); break; case ON_SKU_CONSUMED: assertInvokedOnce(listener).onSkuConsumed(); break; case ON_FAILED_TO_CONSUME_SKU: assertInvokedOnce(listener).onFailedToConsumeSku(); break; case ON_PURCHASE_REQUESTED: assertInvokedOnce(listener).onPurchaseRequested(null); break; case ON_PURCHASE_DETAILS: assertInvokedOnce(listener).onPurchaseDetails(null); break; case ON_PURCHASE_SUCCESSFUL:
@Test public void parcelable() throws Exception { final Purchase p = new Purchase(JSON_PURCHASE, null); final Purchase q = fromParcel(p, Purchase.CREATOR); assertThat(p.asJson()).isEqualTo(q.asJson()); assertEq(p, q); } }
@Test public void handleActivityResultBadResult() { final int result = RESULT_CANCELED; final Intent intent = new Intent(); final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, result, intent); assertThat(handled).isTrue(); assertInvokedOnce(listener).onPurchaseBadResult(result, intent); }
@Test public void parcelable() throws Exception { final SkuDetails s = new SkuDetails(JSON_SKU); final SkuDetails t = fromParcel(s, SkuDetails.CREATOR); assertThat(s.asJson()).isEqualTo(t.asJson()); assertEq(s, t); } }
@Test public void handleActivityResultBadResponseNull() { final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, RESULT_OK, null); assertThat(handled).isTrue(); assertInvokedOnce(listener).onPurchaseBadResponse(null); }
@Test public void checkAll() throws Exception { final String signature = "signature"; final Purchase p = new Purchase(JSON_PURCHASE, signature); cache.cache(p); final Purchase q = cache.load(); assertEq(p, q); cache.clear(); final Purchase r = cache.load(); assertThat(r).isNull(); } }
@Test public void purchaseOk() throws Exception { final IInAppBillingService service = new SuccessfulBillingService(); final Activity activity = mock(Activity.class); final Billing billing = billing(service); final boolean response = billing.purchase(activity, SKU, 0, null); assertInvokedOnce(activity).startIntentSenderForResult(null, 0, null, 0, 0, 0); assertThat(response).isTrue(); }
@Test public void handleActivityResultBadResponse() { final int badResponseCode = BILLING_RESPONSE_RESULT_OK - 1; final Intent intent = newBillingIntent(badResponseCode, null, null); final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, RESULT_OK, intent); assertThat(handled).isTrue(); assertInvokedOnce(listener).onPurchaseBadResponse(intent); }
@Test public void purchaseDetails() throws Exception { final Purchase purchase = new Purchase(JSON_PURCHASE, null); when(cache.load()).thenReturn(purchase); premiumer.bind(); assertBound(true); final boolean enqueued = premiumer.purchaseDetails(); assertThat(enqueued).isTrue(); assertInvokedOnce(listener).onPurchaseDetails(purchase); }