NsdManager: unit tests for argument validation

Test: new tests pass.
Bug: 37013369, 33298084
Change-Id: Ia514d2bbd967d46fed54e379f319b572ade22c62
This commit is contained in:
Hugo Benichi
2017-04-25 15:04:10 +09:00
parent 59ade871f8
commit bad1bfedcd

View File

@@ -18,6 +18,7 @@ package android.net.nsd;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any; import static org.mockito.Mockito.any;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
@@ -42,6 +43,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.function.Consumer;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@SmallTest @SmallTest
public class NsdManagerTest { public class NsdManagerTest {
@@ -103,6 +106,70 @@ public class NsdManagerTest {
verify(listener2, timeout(mTimeoutMs).times(1)).onServiceResolved(reply); verify(listener2, timeout(mTimeoutMs).times(1)).onServiceResolved(reply);
} }
@Test
public void testInvalidCalls() {
NsdManager manager = new NsdManager(mContext, mService);
NsdManager.RegistrationListener listener1 = mock(NsdManager.RegistrationListener.class);
NsdManager.DiscoveryListener listener2 = mock(NsdManager.DiscoveryListener.class);
NsdManager.ResolveListener listener3 = mock(NsdManager.ResolveListener.class);
NsdServiceInfo invalidService = new NsdServiceInfo(null, null);
NsdServiceInfo validService = new NsdServiceInfo("a_name", "a_type");
validService.setPort(2222);
int protocol = NsdManager.PROTOCOL_DNS_SD;
// Service registration
// - invalid arguments
mustFail(() -> { manager.unregisterService(null); });
mustFail(() -> { manager.registerService(null, -1, null); });
mustFail(() -> { manager.registerService(null, protocol, listener1); });
mustFail(() -> { manager.registerService(invalidService, protocol, listener1); });
mustFail(() -> { manager.registerService(validService, -1, listener1); });
mustFail(() -> { manager.registerService(validService, protocol, null); });
manager.registerService(validService, protocol, listener1);
// - listener already registered
mustFail(() -> { manager.registerService(validService, protocol, listener1); });
manager.unregisterService(listener1);
// TODO: make listener immediately reusable
//mustFail(() -> { manager.unregisterService(listener1); });
//manager.registerService(validService, protocol, listener1);
// Discover service
// - invalid arguments
mustFail(() -> { manager.stopServiceDiscovery(null); });
mustFail(() -> { manager.discoverServices(null, -1, null); });
mustFail(() -> { manager.discoverServices(null, protocol, listener2); });
mustFail(() -> { manager.discoverServices("a_service", -1, listener2); });
mustFail(() -> { manager.discoverServices("a_service", protocol, null); });
manager.discoverServices("a_service", protocol, listener2);
// - listener already registered
mustFail(() -> { manager.discoverServices("another_service", protocol, listener2); });
manager.stopServiceDiscovery(listener2);
// TODO: make listener immediately reusable
//mustFail(() -> { manager.stopServiceDiscovery(listener2); });
//manager.discoverServices("another_service", protocol, listener2);
// Resolver service
// - invalid arguments
mustFail(() -> { manager.resolveService(null, null); });
mustFail(() -> { manager.resolveService(null, listener3); });
mustFail(() -> { manager.resolveService(invalidService, listener3); });
mustFail(() -> { manager.resolveService(validService, null); });
manager.resolveService(validService, listener3);
// - listener already registered:w
mustFail(() -> { manager.resolveService(validService, listener3); });
}
public void mustFail(Runnable fn) {
try {
fn.run();
fail();
} catch (Exception expected) {
}
}
NsdManager makeManager() { NsdManager makeManager() {
NsdManager manager = new NsdManager(mContext, mService); NsdManager manager = new NsdManager(mContext, mService);
// Acknowledge first two messages connecting the AsyncChannel. // Acknowledge first two messages connecting the AsyncChannel.