package com.lechucksoftware.proxy.proxysettings.test;
import android.net.Uri;
import android.net.wifi.WifiConfiguration;
import android.support.test.espresso.Espresso;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import com.lechucksoftware.proxy.proxysettings.App;
import com.lechucksoftware.proxy.proxysettings.db.ProxyEntity;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import be.shouldit.proxy.lib.APL;
import be.shouldit.proxy.lib.APLNetworkId;
import be.shouldit.proxy.lib.WiFiApConfig;
import be.shouldit.proxy.lib.reflection.android.ProxySetting;
import timber.log.Timber;
/**
* Created by mpagliar on 22/08/2014.
*/
public class APLTests
{
@BeforeClass
public static void setUpAPL()
{
APL.setup(App.getInstance());
}
@Test
public void testToggleWifi() throws Exception
{
for(int i=0;i<10;i++)
{
APL.enableWifi();
Thread.sleep(5000);
junit.framework.Assert.assertEquals(true, APL.getWifiManager().isWifiEnabled());
APL.disableWifi();
Thread.sleep(5000);
junit.framework.Assert.assertEquals(false, APL.getWifiManager().isWifiEnabled());
APL.enableWifi();
Thread.sleep(5000);
junit.framework.Assert.assertEquals(true, APL.getWifiManager().isWifiEnabled());
}
}
@Test
public void testChangeWifiSettings() throws Exception
{
Map<APLNetworkId, WiFiApConfig> networksMap = APL.getWifiAPConfigurations();
for (APLNetworkId networkId : networksMap.keySet())
{
Timber.d("Testing update proxy settings on network: %s", networkId.toString());
WiFiApConfig network = networksMap.get(networkId);
updateWifiNetwork(network);
}
}
private void updateWifiNetwork(WiFiApConfig network) throws Exception
{
Timber.d("Got network to update: %s", network.toShortString());
ProxySetting proxySetting = network.getProxySetting();
String host = network.getProxyHost();
Integer port = network.getProxyPort();
String exclusion = network.getProxyExclusionList();
Uri pac = network.getPacFileUri();
ProxyEntity pe = TestUtils.createRandomHTTPProxy();
Timber.d("Created random proxy: %s", pe.toString());
network.setProxySetting(ProxySetting.STATIC);
network.setProxyHost(pe.getHost());
network.setProxyPort(pe.getPort());
network.setPacUriFile(Uri.EMPTY);
Timber.d("Write updated network to device: %s", network.toShortString());
App.getWifiNetworksManager().asyncSaveWifiApConfig(network);
Thread.sleep(2000);
WifiConfiguration updatedConfig = APL.getConfiguredNetwork(network.getNetworkId());
WiFiApConfig updatedNetwork = APL.getWiFiAPConfiguration(updatedConfig);
Timber.d("Check network configuration has been written to device: %s", updatedNetwork.toShortString());
Assert.assertFalse(updatedNetwork.isSameConfiguration(network));
network.setProxySetting(proxySetting);
network.setProxyHost(host);
network.setProxyPort(port);
network.setPacUriFile(pac);
App.getWifiNetworksManager().asyncSaveWifiApConfig(network);
Timber.d("Restoring network configuration to start properties: %s", network.toShortString());
Thread.sleep(2000);
Assert.assertFalse(updatedNetwork.isSameConfiguration(network));
}
}