Skip to content

Commit

Permalink
Check for valid timeout value
Browse files Browse the repository at this point in the history
  • Loading branch information
mshafrir-stripe committed Jul 10, 2019
1 parent 43c36f2 commit 20da305
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 deletions.
12 changes: 10 additions & 2 deletions stripe/src/main/java/com/stripe/android/PaymentAuthConfig.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.stripe.android;

import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
Expand Down Expand Up @@ -74,17 +75,24 @@ public static final class Stripe3ds2Config {
@NonNull final Stripe3ds2UiCustomization uiCustomization;

private Stripe3ds2Config(@NonNull Builder builder) {
timeout = builder.mTimeout;
timeout = checkValidTimeout(builder.mTimeout);
uiCustomization = Objects.requireNonNull(builder.mUiCustomization);
}

private int checkValidTimeout(int timeout) {
if (timeout < 5 || timeout > 99) {
throw new IllegalArgumentException("Timeout value must be between 5 and 99, inclusive");
}
return timeout;
}

public static final class Builder implements ObjectBuilder<Stripe3ds2Config> {
private int mTimeout = DEFAULT_TIMEOUT;
private Stripe3ds2UiCustomization mUiCustomization =
new Stripe3ds2UiCustomization.Builder().build();

@NonNull
public Builder setTimeout(int timeout) {
public Builder setTimeout(@IntRange(from = 5, to = 99) int timeout) {
this.mTimeout = timeout;
return this;
}
Expand Down
23 changes: 23 additions & 0 deletions stripe/src/test/java/com/stripe/android/PaymentAuthConfigTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@

import org.junit.Before;
import org.junit.Test;
import org.junit.function.ThrowingRunnable;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;

@RunWith(RobolectricTestRunner.class)
public class PaymentAuthConfigTest {
Expand Down Expand Up @@ -45,6 +47,27 @@ public void get_whenInit_returnsInstance() {
assertEquals(20, PaymentAuthConfig.get().stripe3ds2Config.timeout);
}

@Test
public void testCheckValidTimeout() {
assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
@Override
public void run() {
new PaymentAuthConfig.Stripe3ds2Config.Builder()
.setTimeout(1)
.build();
}
});

assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
@Override
public void run() {
new PaymentAuthConfig.Stripe3ds2Config.Builder()
.setTimeout(100)
.build();
}
});
}

@Test
public void testStripe3ds2ConfigBuilder() {
final PaymentAuthConfig.Stripe3ds2UiCustomization uiCustomization =
Expand Down

0 comments on commit 20da305

Please sign in to comment.