[CTS] WifiHotspot2Test: Add more uniqueId tests

Add additional test for PasspointConfiguration unique ID.

Bug: 151478195
Test: atest WifiHotspot2Test
Change-Id: If01cd5ae98b74f3df083af8131c95c3d91f27de9
This commit is contained in:
Hai Shalom
2020-03-13 18:38:56 -07:00
parent 5944b984d2
commit 0696191fc3

View File

@@ -23,11 +23,18 @@ import android.net.wifi.hotspot2.pps.Credential;
import android.net.wifi.hotspot2.pps.HomeSp;
import android.test.AndroidTestCase;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
public class WifiHotspot2Test extends AndroidTestCase {
static final int SIM_CREDENTIAL = 0;
static final int USER_CREDENTIAL = 1;
static final int CERT_CREDENTIAL = 2;
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -44,7 +51,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link PasspointConfiguration#getMeteredOverride()} method.
*
* <p>
* Test default value
*/
public void testGetMeteredOverride() throws Exception {
@@ -58,7 +65,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link PasspointConfiguration#getSubscriptionExpirationTimeMillis()} method.
*
* <p>
* Test default value
*/
public void testGetSubscriptionExpirationTimeMillis() throws Exception {
@@ -73,7 +80,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link PasspointConfiguration#getUniqueId()} method.
*
* <p>
* Test unique identifier is not null
*/
public void testGetUniqueId() throws Exception {
@@ -81,13 +88,32 @@ public class WifiHotspot2Test extends AndroidTestCase {
// skip the test if WiFi is not supported
return;
}
PasspointConfiguration passpointConfiguration = createConfig();
assertNotNull(passpointConfiguration.getUniqueId());
// Create a configuration and make sure the unique ID is not null
PasspointConfiguration passpointConfiguration1 = createConfig(SIM_CREDENTIAL, "123456*",
18 /* EAP_SIM */);
String uniqueId1 = passpointConfiguration1.getUniqueId();
assertNotNull(uniqueId1);
// Create another configuration and make sure the unique ID is not null
PasspointConfiguration passpointConfiguration2 = createConfig(SIM_CREDENTIAL, "567890*",
23 /* EAP_AKA */);
String uniqueId2 = passpointConfiguration2.getUniqueId();
assertNotNull(uniqueId2);
// Make sure the IDs are not equal
assertFalse(uniqueId1.equals(uniqueId2));
passpointConfiguration2 = createConfig(USER_CREDENTIAL);
assertFalse(uniqueId1.equals(passpointConfiguration2.getUniqueId()));
passpointConfiguration2 = createConfig(CERT_CREDENTIAL);
assertFalse(uniqueId1.equals(passpointConfiguration2.getUniqueId()));
}
/**
* Tests {@link PasspointConfiguration#isAutojoinEnabled()} method.
*
* <p>
* Test default value
*/
public void testIsAutojoinEnabled() throws Exception {
@@ -101,7 +127,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link PasspointConfiguration#isMacRandomizationEnabled()} method.
*
* <p>
* Test default value
*/
public void testIsMacRandomizationEnabled() throws Exception {
@@ -115,7 +141,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link PasspointConfiguration#isOsuProvisioned()} method.
*
* <p>
* Test default value
*/
public void testIsOsuProvisioned() throws Exception {
@@ -123,13 +149,13 @@ public class WifiHotspot2Test extends AndroidTestCase {
// skip the test if WiFi is not supported
return;
}
PasspointConfiguration passpointConfiguration = createConfig();
PasspointConfiguration passpointConfiguration = createConfig(USER_CREDENTIAL);
assertFalse(passpointConfiguration.isOsuProvisioned());
}
/**
* Tests {@link PasspointConfiguration#PasspointConfiguration(PasspointConfiguration)} method.
*
* <p>
* Test the PasspointConfiguration copy constructor
*/
public void testPasspointConfigurationCopyConstructor() throws Exception {
@@ -137,7 +163,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
// skip the test if WiFi is not supported
return;
}
PasspointConfiguration passpointConfiguration = createConfig();
PasspointConfiguration passpointConfiguration = createConfig(USER_CREDENTIAL);
PasspointConfiguration copyOfPasspointConfiguration =
new PasspointConfiguration(passpointConfiguration);
assertEquals(passpointConfiguration, copyOfPasspointConfiguration);
@@ -145,7 +171,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link HomeSp#HomeSp(HomeSp)} method.
*
* <p>
* Test the HomeSp copy constructor
*/
public void testHomeSpCopyConstructor() throws Exception {
@@ -160,7 +186,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link Credential#Credential(Credential)} method.
*
* <p>
* Test the Credential copy constructor
*/
public void testCredentialCopyConstructor() throws Exception {
@@ -168,14 +194,14 @@ public class WifiHotspot2Test extends AndroidTestCase {
// skip the test if WiFi is not supported
return;
}
Credential credential = createCredential();
Credential credential = createCredentialWithSimCredential("123456*", 18 /* EAP_SIM */);
Credential copyOfCredential = new Credential(credential);
assertEquals(copyOfCredential, credential);
}
/**
* Tests {@link Credential.UserCredential#UserCredential(Credential.UserCredential)} method.
*
* <p>
* Test the Credential.UserCredential copy constructor
*/
public void testUserCredentialCopyConstructor() throws Exception {
@@ -195,9 +221,10 @@ public class WifiHotspot2Test extends AndroidTestCase {
}
/**
* Tests {@link Credential.CertificateCredential#CertificateCredential(Credential.CertificateCredential)}
* Tests
* {@link Credential.CertificateCredential#CertificateCredential(Credential.CertificateCredential)}
* method.
*
* <p>
* Test the Credential.CertificateCredential copy constructor
*/
public void testCertCredentialCopyConstructor() throws Exception {
@@ -214,9 +241,8 @@ public class WifiHotspot2Test extends AndroidTestCase {
}
/**
* Tests {@link Credential.SimCredential#SimCredential(Credential.SimCredential)}
* method.
*
* Tests {@link Credential.SimCredential#SimCredential(Credential.SimCredential)} method.
* <p>
* Test the Credential.SimCredential copy constructor
*/
public void testSimCredentialCopyConstructor() throws Exception {
@@ -234,7 +260,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link Credential#getCaCertificate()} method.
*
* <p>
* Test that getting a set certificate produces the same value
*/
public void testCredentialGetCertificate() throws Exception {
@@ -249,9 +275,9 @@ public class WifiHotspot2Test extends AndroidTestCase {
}
/**
* Tests {@link Credential#getClientCertificateChain()} and
* {@link Credential#setCaCertificates(X509Certificate[])} methods.
*
* Tests {@link Credential#getClientCertificateChain()} and {@link
* Credential#setCaCertificates(X509Certificate[])} methods.
* <p>
* Test that getting a set client certificate chain produces the same value
*/
public void testCredentialClientCertificateChain() throws Exception {
@@ -260,7 +286,7 @@ public class WifiHotspot2Test extends AndroidTestCase {
return;
}
Credential credential = new Credential();
X509Certificate[] certificates = new X509Certificate[] {FakeKeys.CLIENT_CERT};
X509Certificate[] certificates = new X509Certificate[]{FakeKeys.CLIENT_CERT};
credential.setClientCertificateChain(certificates);
assertTrue(Arrays.equals(certificates, credential.getClientCertificateChain()));
@@ -268,8 +294,9 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link Credential#getClientPrivateKey()} and
* {@link Credential#setClientPrivateKey(PrivateKey)} methods.
*
* {@link Credential#setClientPrivateKey(PrivateKey)}
* methods.
* <p>
* Test that getting a set client private key produces the same value
*/
public void testCredentialSetGetClientPrivateKey() throws Exception {
@@ -285,8 +312,9 @@ public class WifiHotspot2Test extends AndroidTestCase {
/**
* Tests {@link Credential#getClientPrivateKey()} and
* {@link Credential#setClientPrivateKey(PrivateKey)} methods.
*
* {@link Credential#setClientPrivateKey(PrivateKey)}
* methods.
* <p>
* Test that getting a set client private key produces the same value
*/
public void testCredentialGetClientPrivateKey() throws Exception {
@@ -300,32 +328,110 @@ public class WifiHotspot2Test extends AndroidTestCase {
assertEquals(FakeKeys.RSA_KEY1, credential.getClientPrivateKey());
}
private static PasspointConfiguration createConfig() {
private static PasspointConfiguration createConfig(int type) throws Exception {
return createConfig(type, "123456*", 18 /* EAP_SIM */);
}
private static PasspointConfiguration createConfig(int type, String imsi, int eapType)
throws Exception {
PasspointConfiguration config = new PasspointConfiguration();
config.setHomeSp(createHomeSp());
config.setCredential(createCredential());
switch (type) {
default:
case SIM_CREDENTIAL:
config.setCredential(
createCredentialWithSimCredential(imsi, eapType));
break;
case USER_CREDENTIAL:
config.setCredential(createCredentialWithUserCredential());
break;
case CERT_CREDENTIAL:
config.setCredential(createCredentialWithCertificateCredential());
break;
}
return config;
}
/**
* Helper function for generating HomeSp for testing.
*
* @return {@link HomeSp}
*/
private static HomeSp createHomeSp() {
HomeSp homeSp = new HomeSp();
homeSp.setFqdn("test.com");
homeSp.setFriendlyName("friendly name");
homeSp.setRoamingConsortiumOis(new long[] {0x55, 0x66});
homeSp.setRoamingConsortiumOis(new long[]{0x55, 0x66});
return homeSp;
}
private static Credential createCredential() {
/**
* Helper function for generating Credential for testing.
*
* @param userCred Instance of UserCredential
* @param certCred Instance of CertificateCredential
* @param simCred Instance of SimCredential
* @param clientCertificateChain Chain of client certificates
* @param clientPrivateKey Client private key
* @param caCerts CA certificates
* @return {@link Credential}
*/
private static Credential createCredential(Credential.UserCredential userCred,
Credential.CertificateCredential certCred,
Credential.SimCredential simCred,
X509Certificate[] clientCertificateChain, PrivateKey clientPrivateKey,
X509Certificate... caCerts) {
Credential cred = new Credential();
cred.setRealm("realm");
cred.setUserCredential(null);
cred.setCertCredential(null);
cred.setSimCredential(new Credential.SimCredential());
cred.getSimCredential().setImsi("1234*");
cred.getSimCredential().setEapType(18/* EAP_SIM */);
cred.setCaCertificate(null);
cred.setClientCertificateChain(null);
cred.setClientPrivateKey(null);
cred.setUserCredential(userCred);
cred.setCertCredential(certCred);
cred.setSimCredential(simCred);
return cred;
}
/**
* Helper function for generating certificate credential for testing.
*
* @return {@link Credential}
*/
private static Credential createCredentialWithCertificateCredential()
throws NoSuchAlgorithmException, CertificateEncodingException {
Credential.CertificateCredential certCred = new Credential.CertificateCredential();
certCred.setCertType("x509v3");
certCred.setCertSha256Fingerprint(
MessageDigest.getInstance("SHA-256").digest(
FakeKeys.CLIENT_CERT.getEncoded()));
return createCredential(null, certCred, null, new X509Certificate[]{
FakeKeys.CLIENT_CERT},
FakeKeys.RSA_KEY1, FakeKeys.CA_CERT0,
FakeKeys.CA_CERT1);
}
/**
* Helper function for generating SIM credential for testing.
*
* @return {@link Credential}
*/
private static Credential createCredentialWithSimCredential(String imsi, int eapType) {
Credential.SimCredential simCred = new Credential.SimCredential();
simCred.setImsi(imsi);
simCred.setEapType(eapType);
return createCredential(null, null, simCred, null, null, (X509Certificate[]) null);
}
/**
* Helper function for generating user credential for testing.
*
* @return {@link Credential}
*/
private static Credential createCredentialWithUserCredential() {
Credential.UserCredential userCred = new Credential.UserCredential();
userCred.setUsername("username");
userCred.setPassword("password");
userCred.setEapType(21 /* EAP_TTLS */);
userCred.setNonEapInnerMethod("MS-CHAP");
return createCredential(userCred, null, null, null, null,
FakeKeys.CA_CERT0);
}
}