package com.mopub.network;
import android.app.Activity;
import com.mopub.common.test.support.SdkTestRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import java.util.concurrent.Semaphore;
import static org.fest.assertions.api.Assertions.assertThat;
@RunWith(SdkTestRunner.class)
public class NetworkingTest {
private Activity context;
static String sUserAgent;
@Before
public void setUp() {
context = Robolectric.buildActivity(Activity.class).create().get();
}
@After
public void tearDown() {
Networking.clearForTesting();
sUserAgent = null;
}
@Test
public void getUserAgent_usesCachedUserAgent() {
Networking.setUserAgentForTesting("some cached user agent");
String userAgent = Networking.getUserAgent(context);
assertThat(userAgent).isEqualTo("some cached user agent");
}
@Test
public void getUserAgent_fromMainThread_shouldIncludeAndroid() throws InterruptedException {
context.runOnUiThread(new Runnable() {
@Override
public void run() {
String userAgent = Networking.getUserAgent(context);
assertThat(userAgent).containsIgnoringCase("android");
}
});
}
@Test
public void getUserAgent_fromBackgroundThread_shouldIncludeAndroid() throws InterruptedException {
System.setProperty("http.agent", "system level user agent");
final Semaphore semaphore = new Semaphore(0);
new Thread(new Runnable() {
@Override
public void run() {
sUserAgent = Networking.getUserAgent(context);
semaphore.release();
}
}).start();
semaphore.acquire();
assertThat(sUserAgent).isEqualTo("system level user agent");
}
}