diff options
| -rw-r--r-- | wifi/java/android/net/wifi/hotspot2/pps/Credential.java | 13 | ||||
| -rw-r--r-- | wifi/tests/src/android/net/wifi/hotspot2/pps/CredentialTest.java | 65 |
2 files changed, 66 insertions, 12 deletions
diff --git a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java index 65e8b3d9283d..fa806e7797cd 100644 --- a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java +++ b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java @@ -1037,18 +1037,7 @@ public final class Credential implements Parcelable { * @return a Unique identifier for a Credential object */ public int getUniqueId() { - int usedCredential; - - // Initialize usedCredential based on the credential type of the profile - if (mUserCredential != null) { - usedCredential = 0; - } else if (mCertCredential != null) { - usedCredential = 1; - } else { - usedCredential = 2; - } - - return Objects.hash(usedCredential, mRealm); + return Objects.hash(mUserCredential, mCertCredential, mSimCredential, mRealm); } @Override diff --git a/wifi/tests/src/android/net/wifi/hotspot2/pps/CredentialTest.java b/wifi/tests/src/android/net/wifi/hotspot2/pps/CredentialTest.java index c6825822f4cc..829d8f0a9a3a 100644 --- a/wifi/tests/src/android/net/wifi/hotspot2/pps/CredentialTest.java +++ b/wifi/tests/src/android/net/wifi/hotspot2/pps/CredentialTest.java @@ -18,6 +18,7 @@ package android.net.wifi.hotspot2.pps; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import android.net.wifi.EAPConstants; @@ -551,4 +552,68 @@ public class CredentialTest { public void validateTwoCertificateDifferent() { assertFalse(Credential.isX509CertificateEquals(FakeKeys.CA_CERT0, FakeKeys.CA_CERT1)); } + + /** + * Verify that unique identifiers are the same for objects with the same credentials + */ + @Test + public void testUniqueIdSameCredentialTypes() throws Exception { + assertEquals(createCredentialWithSimCredential().getUniqueId(), + createCredentialWithSimCredential().getUniqueId()); + assertEquals(createCredentialWithCertificateCredential().getUniqueId(), + createCredentialWithCertificateCredential().getUniqueId()); + assertEquals(createCredentialWithUserCredential().getUniqueId(), + createCredentialWithUserCredential().getUniqueId()); + } + + /** + * Verify that unique identifiers are different for each credential + */ + @Test + public void testUniqueIdDifferentForDifferentCredentialTypes() throws Exception { + Credential simCred = createCredentialWithSimCredential(); + Credential certCred = createCredentialWithCertificateCredential(); + Credential userCred = createCredentialWithUserCredential(); + + assertNotEquals(simCred.getUniqueId(), userCred.getUniqueId()); + assertNotEquals(simCred.getUniqueId(), certCred.getUniqueId()); + assertNotEquals(certCred.getUniqueId(), userCred.getUniqueId()); + } + + /** + * Verify that unique identifiers are different for a credential with different values + */ + @Test + public void testUniqueIdDifferentForSimCredentialsWithDifferentValues() throws Exception { + Credential simCred1 = createCredentialWithSimCredential(); + Credential simCred2 = createCredentialWithSimCredential(); + simCred2.getSimCredential().setImsi("567890*"); + + assertNotEquals(simCred1.getUniqueId(), simCred2.getUniqueId()); + } + + /** + * Verify that unique identifiers are different for a credential with different values + */ + @Test + public void testUniqueIdDifferentForUserCredentialsWithDifferentValues() throws Exception { + Credential userCred1 = createCredentialWithUserCredential(); + Credential userCred2 = createCredentialWithUserCredential(); + userCred2.getUserCredential().setUsername("anotheruser"); + + assertNotEquals(userCred1.getUniqueId(), userCred2.getUniqueId()); + } + + /** + * Verify that unique identifiers are different for a credential with different values + */ + @Test + public void testUniqueIdDifferentForCertCredentialsWithDifferentValues() throws Exception { + Credential certCred1 = createCredentialWithCertificateCredential(); + Credential certCred2 = createCredentialWithCertificateCredential(); + certCred2.getCertCredential().setCertSha256Fingerprint( + MessageDigest.getInstance("SHA-256").digest(FakeKeys.CA_CERT0.getEncoded())); + + assertNotEquals(certCred1.getUniqueId(), certCred2.getUniqueId()); + } } |