Skip to content

Commit b2b006b

Browse files
committed
Test with and without preauth
1 parent 454eebb commit b2b006b

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

binder/src/test/java/io/grpc/binder/internal/RobolectricBinderTransportTest.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.app.Application;
2222
import android.content.Intent;
2323
import androidx.test.core.app.ApplicationProvider;
24+
import com.google.common.collect.ImmutableList;
2425
import io.grpc.ServerStreamTracer;
2526
import io.grpc.binder.AndroidComponentAddress;
2627
import io.grpc.internal.AbstractTransportTest;
@@ -33,10 +34,13 @@
3334
import java.util.List;
3435
import java.util.concurrent.Executor;
3536
import java.util.concurrent.ScheduledExecutorService;
37+
import org.junit.Before;
3638
import org.junit.Ignore;
3739
import org.junit.Test;
3840
import org.junit.runner.RunWith;
39-
import org.robolectric.RobolectricTestRunner;
41+
import org.robolectric.ParameterizedRobolectricTestRunner;
42+
import org.robolectric.ParameterizedRobolectricTestRunner.Parameter;
43+
import org.robolectric.ParameterizedRobolectricTestRunner.Parameters;
4044
import org.robolectric.annotation.LooperMode;
4145
import org.robolectric.annotation.LooperMode.Mode;
4246

@@ -52,7 +56,7 @@
5256
* meaning test cases don't run on the main thread. This supports the AbstractTransportTest approach
5357
* where the test thread frequently blocks waiting for transport state changes to take effect.
5458
*/
55-
@RunWith(RobolectricTestRunner.class)
59+
@RunWith(ParameterizedRobolectricTestRunner.class)
5660
@LooperMode(Mode.INSTRUMENTATION_TEST)
5761
public final class RobolectricBinderTransportTest extends AbstractTransportTest {
5862

@@ -66,6 +70,20 @@ public final class RobolectricBinderTransportTest extends AbstractTransportTest
6670

6771
private int nextServerAddress;
6872

73+
@Parameter
74+
public boolean preAuthorizeServers;
75+
76+
@Parameters(name = "preAuthorizeServers={0}")
77+
public static ImmutableList<Boolean> data() {
78+
return ImmutableList.of(true, false);
79+
}
80+
81+
@Before
82+
public void requestRealisticBindServiceBehavior() {
83+
shadowOf(application).setBindServiceCallsOnServiceConnectedDirectly(false);
84+
shadowOf(application).setUnbindServiceCallsOnServiceDisconnected(false);
85+
}
86+
6987
@Override
7088
protected InternalServer newServer(List<ServerStreamTracer.Factory> streamTracerFactories) {
7189
AndroidComponentAddress listenAddr = AndroidComponentAddress.forBindIntent(
@@ -81,6 +99,7 @@ protected InternalServer newServer(List<ServerStreamTracer.Factory> streamTracer
8199
.setStreamTracerFactories(streamTracerFactories)
82100
.build();
83101

102+
shadowOf(application.getPackageManager()).addServiceIfNotPresent(listenAddr.getComponent());
84103
shadowOf(application)
85104
.setComponentNameAndServiceForBindServiceForIntent(
86105
listenAddr.asBindIntent(), listenAddr.getComponent(), binderServer.getHostBinder());
@@ -101,6 +120,7 @@ protected InternalServer newServer(
101120
protected ManagedClientTransport newClientTransport(InternalServer server) {
102121
BinderClientTransportFactory.Builder builder =
103122
new BinderClientTransportFactory.Builder()
123+
.setPreAuthorizeServers(preAuthorizeServers)
104124
.setSourceContext(application)
105125
.setScheduledExecutorPool(executorServicePool)
106126
.setOffloadExecutorPool(offloadExecutorPool);

0 commit comments

Comments
 (0)