Adds tests for iconBit change to credentials API
This adds the icon bit tests to the credentials API so that we can
ensure the API modification is done properly.
Bug: 319723778
Test: These are JUnit Tests
Change-Id: Ieabc0ec4bcd796f45b957317f8e8abd20ad2e3af
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryJavaTest.java b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryJavaTest.java
index e85b605..3654984 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryJavaTest.java
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryJavaTest.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package androidx.credentials.provider.ui;
import static com.google.common.truth.Truth.assertThat;
@@ -44,47 +43,41 @@
import org.junit.runner.RunWith;
import java.time.Instant;
-
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 26)
@SmallTest
public class CustomCredentialEntryJavaTest {
private static final CharSequence TITLE = "title";
private static final CharSequence SUBTITLE = "subtitle";
-
private static final String TYPE = "custom_type";
private static final CharSequence TYPE_DISPLAY_NAME = "Password";
private static final String ENTRY_GROUP_ID = "entryGroupId";
+ private static final boolean DEFAULT_SINGLE_PROVIDER_ICON_BIT = false;
+ private static final boolean SINGLE_PROVIDER_ICON_BIT = true;
private static final Long LAST_USED_TIME = 10L;
private static final Icon ICON = Icon.createWithBitmap(Bitmap.createBitmap(
100, 100, Bitmap.Config.ARGB_8888));
private static final boolean IS_AUTO_SELECT_ALLOWED = true;
private final BeginGetCredentialOption mBeginCredentialOption =
new BeginGetCustomCredentialOption(
- "id", "custom_type", new Bundle());
-
+ "id", "custom_type", new Bundle());
private final Context mContext = ApplicationProvider.getApplicationContext();
private final Intent mIntent = new Intent();
private final PendingIntent mPendingIntent =
PendingIntent.getActivity(mContext, 0, mIntent,
PendingIntent.FLAG_IMMUTABLE);
-
@Test
public void build_requiredParameters_success() {
CustomCredentialEntry entry = constructEntryWithRequiredParams();
-
assertNotNull(entry);
assertEntryWithRequiredParams(entry);
}
-
@Test
public void build_allParameters_success() {
CustomCredentialEntry entry = constructEntryWithAllParams();
-
assertNotNull(entry);
assertEntryWithAllParams(entry);
}
-
@Test
public void build_nullTitle_throwsNPE() {
assertThrows("Expected null title to throw NPE",
@@ -93,7 +86,6 @@
mContext, TYPE, null, mPendingIntent, mBeginCredentialOption
));
}
-
@Test
public void build_nullContext_throwsNPE() {
assertThrows("Expected null title to throw NPE",
@@ -102,7 +94,6 @@
null, TYPE, TITLE, mPendingIntent, mBeginCredentialOption
).build());
}
-
@Test
public void build_nullPendingIntent_throwsNPE() {
assertThrows("Expected null pending intent to throw NPE",
@@ -111,7 +102,6 @@
mContext, TYPE, TITLE, null, mBeginCredentialOption
).build());
}
-
@Test
public void build_nullBeginOption_throwsNPE() {
assertThrows("Expected null option to throw NPE",
@@ -120,7 +110,6 @@
mContext, TYPE, TITLE, mPendingIntent, null
).build());
}
-
@Test
public void build_emptyTitle_throwsIAE() {
assertThrows("Expected empty title to throw IAE",
@@ -129,7 +118,6 @@
mContext, TYPE, "", mPendingIntent, mBeginCredentialOption
).build());
}
-
@Test
public void build_emptyType_throwsIAE() {
assertThrows("Expected empty type to throw NPE",
@@ -138,14 +126,23 @@
mContext, "", TITLE, mPendingIntent, mBeginCredentialOption
).build());
}
-
@Test
public void build_nullIcon_defaultIconSet() {
CustomCredentialEntry entry = constructEntryWithRequiredParams();
-
assertThat(TestUtilsKt.equals(entry.getIcon(),
Icon.createWithResource(mContext, R.drawable.ic_other_sign_in))).isTrue();
}
+ @Test
+ public void builder_setPreferredDefaultIconBit_retrieveSetIconBit() {
+ boolean expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT;
+ CustomCredentialEntry entry = new CustomCredentialEntry.Builder(
+ mContext, TYPE, TITLE, mPendingIntent,
+ mBeginCredentialOption)
+ .setDefaultIconPreferredAsSingleProvider(expectedPreferredDefaultIconBit)
+ .build();
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider())
+ .isEqualTo(expectedPreferredDefaultIconBit);
+ }
@Test
public void builder_constructDefault_containsOnlySetPropertiesAndDefaultValues() {
@@ -181,41 +178,32 @@
@SdkSuppress(minSdkVersion = 28)
public void fromSlice_requiredParams_success() {
CustomCredentialEntry originalEntry = constructEntryWithRequiredParams();
-
Slice slice = CustomCredentialEntry.toSlice(originalEntry);
CustomCredentialEntry entry = CustomCredentialEntry.fromSlice(
slice);
-
assertNotNull(entry);
assertEntryWithRequiredParamsFromSlice(entry);
}
-
@Test
@SdkSuppress(minSdkVersion = 28)
public void fromSlice_allParams_success() {
CustomCredentialEntry originalEntry = constructEntryWithAllParams();
-
Slice slice = CustomCredentialEntry.toSlice(originalEntry);
CustomCredentialEntry entry = CustomCredentialEntry.fromSlice(slice);
-
assertNotNull(entry);
assertEntryWithAllParamsFromSlice(entry);
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
public void fromCredentialEntry_allParams_success() {
CustomCredentialEntry originalEntry = constructEntryWithAllParams();
Slice slice = CustomCredentialEntry.toSlice(originalEntry);
assertNotNull(slice);
-
CustomCredentialEntry entry = CustomCredentialEntry.fromCredentialEntry(
new CredentialEntry("id", slice));
-
assertNotNull(entry);
assertEntryWithAllParamsFromSlice(entry);
}
-
private CustomCredentialEntry constructEntryWithRequiredParams() {
return new CustomCredentialEntry.Builder(
mContext,
@@ -225,7 +213,6 @@
mBeginCredentialOption
).build();
}
-
private CustomCredentialEntry constructEntryWithAllParams() {
return new CustomCredentialEntry.Builder(
mContext,
@@ -238,25 +225,27 @@
.setAutoSelectAllowed(IS_AUTO_SELECT_ALLOWED)
.setTypeDisplayName(TYPE_DISPLAY_NAME)
.setEntryGroupId(ENTRY_GROUP_ID)
+ .setDefaultIconPreferredAsSingleProvider(SINGLE_PROVIDER_ICON_BIT)
.build();
}
-
private void assertEntryWithRequiredParams(CustomCredentialEntry entry) {
assertThat(TITLE.equals(entry.getTitle()));
assertThat(TYPE.equals(entry.getType()));
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(TITLE);
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT);
}
-
private void assertEntryWithRequiredParamsFromSlice(CustomCredentialEntry entry) {
assertThat(TITLE.equals(entry.getTitle()));
assertThat(TYPE.equals(entry.getType()));
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(TITLE);
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT);
}
-
private void assertEntryWithAllParams(CustomCredentialEntry entry) {
assertThat(TITLE.equals(entry.getTitle()));
assertThat(TYPE.equals(entry.getType()));
@@ -270,8 +259,9 @@
assertThat(mBeginCredentialOption).isEqualTo(entry.getBeginGetCredentialOption());
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(ENTRY_GROUP_ID);
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ SINGLE_PROVIDER_ICON_BIT);
}
-
private void assertEntryWithAllParamsFromSlice(CustomCredentialEntry entry) {
assertThat(TITLE.equals(entry.getTitle()));
assertThat(TYPE.equals(entry.getType()));
@@ -284,5 +274,7 @@
assertThat(mBeginCredentialOption.getType()).isEqualTo(entry.getType());
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(ENTRY_GROUP_ID);
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ SINGLE_PROVIDER_ICON_BIT);
}
}
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryTest.kt b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryTest.kt
index 0ce4aac..c9f7331 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryTest.kt
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/CustomCredentialEntryTest.kt
@@ -14,7 +14,6 @@
* limitations under the License.
*/
package androidx.credentials.provider.ui
-
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
@@ -40,7 +39,6 @@
import org.junit.Assert.assertThrows
import org.junit.Test
import org.junit.runner.RunWith
-
@RunWith(AndroidJUnit4::class)
@SdkSuppress(minSdkVersion = 26)
@SmallTest
@@ -53,27 +51,21 @@
@SdkSuppress(minSdkVersion = 28)
fun constructor_requiredParams_success() {
val entry = constructEntryWithRequiredParams()
-
assertNotNull(entry)
assertEntryWithRequiredParams(entry)
}
-
@Test
fun constructor_allParams_success() {
val entry = constructEntryWithAllParams()
-
assertNotNull(entry)
assertEntryWithAllParams(entry)
}
-
@Test
fun constructor_allParameters_success() {
val entry: CustomCredentialEntry = constructEntryWithAllParams()
-
assertNotNull(entry)
assertEntryWithAllParams(entry)
}
-
@Test
fun constructor_emptyTitle_throwsIAE() {
assertThrows(
@@ -87,7 +79,6 @@
)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 28)
fun constructor_emptyType_throwsIAE() {
@@ -101,12 +92,10 @@
)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 23)
fun constructor_nullIcon_defaultIconSet() {
val entry = constructEntryWithRequiredParams()
-
assertThat(
equals(
entry.icon,
@@ -114,6 +103,30 @@
)
).isTrue()
}
+ @Test
+ fun constructor_setPreferredDefaultIconBit_retrieveSetPreferredDefaultIconBit() {
+ val expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT
+ val entry = CustomCredentialEntry(
+ mContext,
+ TITLE,
+ mPendingIntent,
+ BEGIN_OPTION,
+ isDefaultIconPreferredAsSingleProvider = SINGLE_PROVIDER_ICON_BIT
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider)
+ .isEqualTo(expectedPreferredDefaultIconBit)
+ }
+ @Test
+ fun constructor_preferredIconBitNotProvided_retrieveDefaultPreferredIconBit() {
+ val entry = CustomCredentialEntry(
+ mContext,
+ TITLE,
+ mPendingIntent,
+ BEGIN_OPTION,
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
+ }
@Test
fun constructor_emptyEntryGroupId_defaultEntryGroupIdSet() {
@@ -173,6 +186,16 @@
assertThat(entry.isAutoSelectAllowed).isFalse()
assertThat(entry.affiliatedDomain).isNull()
assertThat(entry.entryGroupId).isEqualTo(TITLE)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
+ }
+ @Test
+ fun builder_setNonEmpyDeduplicationId_retrieveSetDeduplicationId() {
+ val expectedIconBit = SINGLE_PROVIDER_ICON_BIT
+ val entry = CustomCredentialEntry.Builder(
+ mContext, TYPE, TITLE, mPendingIntent, BEGIN_OPTION)
+ .setDefaultIconPreferredAsSingleProvider(SINGLE_PROVIDER_ICON_BIT).build()
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(expectedIconBit)
}
@Test
@@ -202,51 +225,42 @@
@SdkSuppress(minSdkVersion = 28)
fun fromSlice_requiredParams_success() {
val originalEntry = constructEntryWithRequiredParams()
-
val slice = CustomCredentialEntry.toSlice(
originalEntry)
assertNotNull(slice)
val entry = fromSlice(slice!!)
-
assertNotNull(entry)
if (entry != null) {
assertEntryWithRequiredParamsFromSlice(entry)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 28)
fun fromSlice_allParams_success() {
val originalEntry = constructEntryWithAllParams()
-
val slice = CustomCredentialEntry.toSlice(
- originalEntry)
+ originalEntry)
assertNotNull(slice)
val entry = fromSlice(slice!!)
-
assertNotNull(entry)
if (entry != null) {
assertEntryWithAllParamsFromSlice(entry)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
fun fromCredentialEntry_allParams_success() {
val originalEntry = constructEntryWithAllParams()
val slice = toSlice(originalEntry)
-
assertNotNull(slice)
val entry = slice?.let { CredentialEntry("id", it) }?.let {
fromCredentialEntry(
it
)
}
-
assertNotNull(entry)
assertEntryWithAllParamsFromSlice(entry!!)
}
-
private fun constructEntryWithRequiredParams(): CustomCredentialEntry {
return CustomCredentialEntry(
mContext,
@@ -255,7 +269,6 @@
BEGIN_OPTION
)
}
-
private fun constructEntryWithAllParams(): CustomCredentialEntry {
return CustomCredentialEntry(
mContext,
@@ -267,10 +280,10 @@
Instant.ofEpochMilli(LAST_USED_TIME),
ICON,
IS_AUTO_SELECT_ALLOWED,
- ENTRY_GROUP_ID
+ ENTRY_GROUP_ID,
+ SINGLE_PROVIDER_ICON_BIT
)
}
-
private fun assertEntryWithAllParams(entry: CustomCredentialEntry) {
assertThat(TITLE == entry.title)
assertThat(TYPE == entry.type)
@@ -280,9 +293,9 @@
assertThat(Instant.ofEpochMilli(LAST_USED_TIME)).isEqualTo(entry.lastUsedTime)
assertThat(IS_AUTO_SELECT_ALLOWED).isEqualTo(entry.isAutoSelectAllowed)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(SINGLE_PROVIDER_ICON_BIT)
assertThat(ENTRY_GROUP_ID).isEqualTo(entry.entryGroupId)
}
-
private fun assertEntryWithAllParamsFromSlice(entry: CustomCredentialEntry) {
assertThat(TITLE == entry.title)
assertThat(TYPE == entry.type)
@@ -293,24 +306,26 @@
assertThat(IS_AUTO_SELECT_ALLOWED).isEqualTo(entry.isAutoSelectAllowed)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
assertThat(BEGIN_OPTION.type).isEqualTo(entry.type)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(SINGLE_PROVIDER_ICON_BIT)
assertThat(ENTRY_GROUP_ID).isEqualTo(entry.entryGroupId)
}
-
private fun assertEntryWithRequiredParams(entry: CustomCredentialEntry) {
assertThat(TITLE == entry.title)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
assertThat(BEGIN_OPTION.type).isEqualTo(entry.type)
assertThat(BEGIN_OPTION).isEqualTo(entry.beginGetCredentialOption)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.entryGroupId).isEqualTo(TITLE)
}
-
private fun assertEntryWithRequiredParamsFromSlice(entry: CustomCredentialEntry) {
assertThat(TITLE == entry.title)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
assertThat(BEGIN_OPTION.type).isEqualTo(entry.type)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.entryGroupId).isEqualTo(TITLE)
}
-
companion object {
private val TITLE: CharSequence = "title"
private val BEGIN_OPTION: BeginGetCredentialOption = BeginGetCustomCredentialOption(
@@ -325,6 +340,8 @@
)
)
private const val IS_AUTO_SELECT_ALLOWED = true
+ private const val DEFAULT_SINGLE_PROVIDER_ICON_BIT = false
+ private const val SINGLE_PROVIDER_ICON_BIT = true
private const val ENTRY_GROUP_ID = "entryGroupId"
}
}
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryJavaTest.java b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryJavaTest.java
index 750bd11..9b24056 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryJavaTest.java
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryJavaTest.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package androidx.credentials.provider.ui;
import static com.google.common.truth.Truth.assertThat;
@@ -45,7 +44,6 @@
import java.time.Instant;
import java.util.HashSet;
-
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 26)
@SmallTest
@@ -53,43 +51,35 @@
private static final CharSequence USERNAME = "title";
private static final CharSequence DISPLAYNAME = "subtitle";
private static final CharSequence TYPE_DISPLAY_NAME = "Password";
-
private static final String AFFILIATED_DOMAIN = "affiliation-name";
-
private static final Long LAST_USED_TIME = 10L;
-
+ private static final boolean DEFAULT_SINGLE_PROVIDER_ICON_BIT = false;
+ private static final boolean SINGLE_PROVIDER_ICON_BIT = true;
private static final boolean IS_AUTO_SELECT_ALLOWED = true;
-
private static final Icon ICON = Icon.createWithBitmap(Bitmap.createBitmap(
100, 100, Bitmap.Config.ARGB_8888));
private final BeginGetPasswordOption mBeginGetPasswordOption = new BeginGetPasswordOption(
new HashSet<>(),
Bundle.EMPTY, "id");
-
private final Context mContext = ApplicationProvider.getApplicationContext();
private final Intent mIntent = new Intent();
private final PendingIntent mPendingIntent =
PendingIntent.getActivity(mContext, 0, mIntent,
PendingIntent.FLAG_IMMUTABLE);
-
@Test
public void build_requiredParams_success() {
PasswordCredentialEntry entry = constructEntryWithRequiredParamsOnly();
-
assertNotNull(entry);
assertThat(entry.getType()).isEqualTo(PasswordCredential.TYPE_PASSWORD_CREDENTIAL);
assertEntryWithRequiredParamsOnly(entry, false);
}
-
@Test
public void build_allParams_success() {
PasswordCredentialEntry entry = constructEntryWithAllParams();
-
assertNotNull(entry);
assertThat(entry.getType()).isEqualTo(PasswordCredential.TYPE_PASSWORD_CREDENTIAL);
assertEntryWithAllParams(entry);
}
-
@Test
public void build_nullContext_throwsNPE() {
assertThrows("Expected null context to throw NPE",
@@ -98,7 +88,6 @@
null, USERNAME, mPendingIntent, mBeginGetPasswordOption
).build());
}
-
@Test
public void build_nullUsername_throwsNPE() {
assertThrows("Expected null username to throw NPE",
@@ -107,7 +96,6 @@
mContext, null, mPendingIntent, mBeginGetPasswordOption
).build());
}
-
@Test
public void build_nullPendingIntent_throwsNPE() {
assertThrows("Expected null pending intent to throw NPE",
@@ -116,7 +104,6 @@
mContext, USERNAME, null, mBeginGetPasswordOption
).build());
}
-
@Test
public void build_nullBeginOption_throwsNPE() {
assertThrows("Expected null option to throw NPE",
@@ -125,7 +112,6 @@
mContext, USERNAME, mPendingIntent, null
).build());
}
-
@Test
public void build_emptyUsername_throwsIAE() {
assertThrows("Expected empty username to throw IllegalArgumentException",
@@ -133,45 +119,35 @@
() -> new PasswordCredentialEntry.Builder(
mContext, "", mPendingIntent, mBeginGetPasswordOption).build());
}
-
@Test
public void build_nullIcon_defaultIconSet() {
PasswordCredentialEntry entry = new PasswordCredentialEntry
.Builder(mContext, USERNAME, mPendingIntent, mBeginGetPasswordOption).build();
-
assertThat(TestUtilsKt.equals(entry.getIcon(),
Icon.createWithResource(mContext, R.drawable.ic_password))).isTrue();
}
-
@Test
public void build_nullTypeDisplayName_defaultDisplayNameSet() {
PasswordCredentialEntry entry = new PasswordCredentialEntry.Builder(
- mContext, USERNAME, mPendingIntent, mBeginGetPasswordOption).build();
-
+ mContext, USERNAME, mPendingIntent, mBeginGetPasswordOption).build();
assertThat(entry.getTypeDisplayName()).isEqualTo(
mContext.getString(
R.string.android_credentials_TYPE_PASSWORD_CREDENTIAL)
);
}
-
@Test
public void build_isAutoSelectAllowedDefault_false() {
PasswordCredentialEntry entry = constructEntryWithRequiredParamsOnly();
-
assertFalse(entry.isAutoSelectAllowed());
}
-
@Test
public void constructor_defaultAffiliatedDomain() {
PasswordCredentialEntry entry = constructEntryWithRequiredParamsOnly();
-
assertThat(entry.getAffiliatedDomain()).isNull();
}
-
@Test
public void constructor_nonEmptyAffiliatedDomainSet_nonEmptyAffiliatedDomainRetrieved() {
String expectedAffiliatedDomain = "non-empty";
-
PasswordCredentialEntry entryWithAffiliatedDomain = new PasswordCredentialEntry(
mContext,
USERNAME,
@@ -181,84 +157,80 @@
Instant.ofEpochMilli(LAST_USED_TIME),
ICON,
false,
- expectedAffiliatedDomain
+ expectedAffiliatedDomain,
+ false
);
-
assertThat(entryWithAffiliatedDomain.getAffiliatedDomain())
.isEqualTo(expectedAffiliatedDomain);
}
-
@Test
public void builder_constructDefault_containsOnlyDefaultValuesForSettableParameters() {
PasswordCredentialEntry entry = new PasswordCredentialEntry.Builder(mContext, USERNAME,
mPendingIntent, mBeginGetPasswordOption).build();
-
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getDisplayName()).isNull();
assertThat(entry.getLastUsedTime()).isNull();
assertThat(entry.isAutoSelectAllowed()).isFalse();
assertThat(entry.getEntryGroupId()).isEqualTo(USERNAME);
}
-
@Test
public void builder_setAffiliatedDomainNull_retrieveNullAffiliatedDomain() {
PasswordCredentialEntry entry = new PasswordCredentialEntry.Builder(mContext, USERNAME,
mPendingIntent, mBeginGetPasswordOption).setAffiliatedDomain(null).build();
-
assertThat(entry.getAffiliatedDomain()).isNull();
}
-
@Test
public void builder_setAffiliatedDomainNonNull_retrieveNonNullAffiliatedDomain() {
String expectedAffiliatedDomain = "affiliated-domain";
-
PasswordCredentialEntry entry = new PasswordCredentialEntry.Builder(
mContext,
USERNAME,
mPendingIntent,
mBeginGetPasswordOption
).setAffiliatedDomain(expectedAffiliatedDomain).build();
-
assertThat(entry.getAffiliatedDomain()).isEqualTo(expectedAffiliatedDomain);
}
-
+ @Test
+ public void builder_setPreferredDefaultIconBit_retrieveSetIconBit() {
+ boolean expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT;
+ PasswordCredentialEntry entry = new PasswordCredentialEntry.Builder(
+ mContext,
+ USERNAME,
+ mPendingIntent,
+ mBeginGetPasswordOption
+ ).setDefaultIconPreferredAsSingleProvider(expectedPreferredDefaultIconBit)
+ .build();
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider())
+ .isEqualTo(expectedPreferredDefaultIconBit);
+ }
@Test
@SdkSuppress(minSdkVersion = 28)
public void fromSlice_requiredParams_success() {
PasswordCredentialEntry originalEntry = constructEntryWithRequiredParamsOnly();
-
PasswordCredentialEntry entry = PasswordCredentialEntry.fromSlice(
PasswordCredentialEntry.toSlice(originalEntry));
-
assertNotNull(entry);
assertEntryWithRequiredParamsOnly(entry, true);
}
-
@Test
@SdkSuppress(minSdkVersion = 28)
public void fromSlice_allParams_success() {
PasswordCredentialEntry originalEntry = constructEntryWithAllParams();
-
PasswordCredentialEntry entry = PasswordCredentialEntry.fromSlice(
PasswordCredentialEntry.toSlice(originalEntry));
-
assertNotNull(entry);
assertEntryWithAllParams(entry);
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
public void fromCredentialEntry_allParams_success() {
PasswordCredentialEntry originalEntry = constructEntryWithAllParams();
-
PasswordCredentialEntry entry = PasswordCredentialEntry.fromCredentialEntry(
new CredentialEntry("id",
PasswordCredentialEntry.toSlice(originalEntry)));
-
assertNotNull(entry);
assertEntryWithAllParams(entry);
}
-
private PasswordCredentialEntry constructEntryWithRequiredParamsOnly() {
return new PasswordCredentialEntry.Builder(
mContext,
@@ -266,7 +238,6 @@
mPendingIntent,
mBeginGetPasswordOption).build();
}
-
private PasswordCredentialEntry constructEntryWithAllParams() {
return new PasswordCredentialEntry.Builder(
mContext,
@@ -278,18 +249,19 @@
.setIcon(ICON)
.setAutoSelectAllowed(IS_AUTO_SELECT_ALLOWED)
.setAffiliatedDomain(AFFILIATED_DOMAIN)
+ .setDefaultIconPreferredAsSingleProvider(SINGLE_PROVIDER_ICON_BIT)
.build();
}
-
private void assertEntryWithRequiredParamsOnly(PasswordCredentialEntry entry,
Boolean assertOptionIdOnly) {
assertThat(USERNAME.equals(entry.getUsername()));
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
assertThat(mBeginGetPasswordOption.getType()).isEqualTo(entry.getType());
assertThat(entry.getAffiliatedDomain()).isNull();
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT);
assertThat(entry.getEntryGroupId()).isEqualTo(USERNAME);
}
-
private void assertEntryWithAllParams(PasswordCredentialEntry entry) {
assertThat(USERNAME.equals(entry.getUsername()));
assertThat(DISPLAYNAME.equals(entry.getDisplayName()));
@@ -300,6 +272,8 @@
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
assertThat(mBeginGetPasswordOption.getType()).isEqualTo(entry.getType());
assertThat(entry.getAffiliatedDomain()).isEqualTo(AFFILIATED_DOMAIN);
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ SINGLE_PROVIDER_ICON_BIT);
assertThat(entry.getEntryGroupId()).isEqualTo(USERNAME);
}
}
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryTest.kt b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryTest.kt
index 53eef77..96fd725 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryTest.kt
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PasswordCredentialEntryTest.kt
@@ -14,7 +14,6 @@
* limitations under the License.
*/
package androidx.credentials.provider.ui
-
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
@@ -39,7 +38,6 @@
import org.junit.Assert.assertThrows
import org.junit.Test
import org.junit.runner.RunWith
-
@RunWith(AndroidJUnit4::class)
@SdkSuppress(minSdkVersion = 26)
@SmallTest
@@ -50,26 +48,22 @@
mContext, 0, mIntent,
PendingIntent.FLAG_IMMUTABLE
)
-
@Test
fun constructor_requiredParams_success() {
val entry = constructEntryWithRequiredParamsOnly()
-
assertNotNull(entry)
assertThat(entry.type).isEqualTo(PasswordCredential.TYPE_PASSWORD_CREDENTIAL)
assertEntryWithRequiredParamsOnly(entry)
}
-
@Test
fun constructor_allParams_success() {
val entry = constructEntryWithAllParams()
-
assertNotNull(entry)
assertThat(entry.type).isEqualTo(PasswordCredential.TYPE_PASSWORD_CREDENTIAL)
assertEntryWithAllParams(entry)
}
-
@Test
+ @Suppress("DEPRECATION")
fun constructor_emptyUsername_throwsIAE() {
assertThrows(
"Expected empty username to throw IllegalArgumentException",
@@ -80,12 +74,10 @@
)
}
}
-
@Test
fun constructor_nullIcon_defaultIconSet() {
val entry = PasswordCredentialEntry.Builder(
mContext, USERNAME, mPendingIntent, BEGIN_OPTION).build()
-
assertThat(
equals(
entry.icon,
@@ -93,39 +85,32 @@
)
).isTrue()
}
-
@Test
+ @Suppress("DEPRECATION")
fun constructor_nullTypeDisplayName_defaultDisplayNameSet() {
val entry = PasswordCredentialEntry(
mContext, USERNAME, mPendingIntent, BEGIN_OPTION)
-
assertThat(entry.typeDisplayName).isEqualTo(
mContext.getString(
R.string.android_credentials_TYPE_PASSWORD_CREDENTIAL
)
)
}
-
@Test
fun constructor_isAutoSelectAllowedDefault_false() {
val entry = constructEntryWithRequiredParamsOnly()
val entry1 = constructEntryWithAllParams()
-
assertFalse(entry.isAutoSelectAllowed)
assertFalse(entry1.isAutoSelectAllowed)
}
-
@Test
fun constructor_defaultAffiliatedDomain() {
val defaultEntry = constructEntryWithRequiredParamsOnly()
-
assertThat(defaultEntry.affiliatedDomain).isNull()
}
-
@Test
fun constructor_nonEmptyAffiliatedDomainSet_nonEmptyAffiliatedDomainRetrieved() {
val expectedAffiliatedDomain = "non-empty"
-
val entryWithAffiliationType = PasswordCredentialEntry(
mContext,
USERNAME,
@@ -136,9 +121,35 @@
ICON,
affiliatedDomain = expectedAffiliatedDomain
)
-
assertThat(entryWithAffiliationType.affiliatedDomain).isEqualTo(expectedAffiliatedDomain)
}
+ @Test
+ fun constructor_setPreferredDefaultIconBit_retrieveSetPreferredDefaultIconBit() {
+ val expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT
+ val entry = PasswordCredentialEntry(
+ mContext,
+ USERNAME,
+ mPendingIntent,
+ BEGIN_OPTION,
+ DISPLAYNAME,
+ LAST_USED_TIME,
+ ICON,
+ isDefaultIconPreferredAsSingleProvider = expectedPreferredDefaultIconBit
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider)
+ .isEqualTo(expectedPreferredDefaultIconBit)
+ }
+ @Test
+ fun constructor_preferredIconBitNotProvided_retrieveDefaultPreferredIconBit() {
+ val entry = PasswordCredentialEntry(
+ mContext,
+ USERNAME,
+ mPendingIntent,
+ BEGIN_OPTION
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
+ }
@Test
fun constructor_allRequiredParamsUsed_defaultUsernameEntryGroupIdRetrieved() {
@@ -146,7 +157,6 @@
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
-
@Test
fun builder_constructDefault_containsOnlySetPropertiesAndDefaultValues() {
val entry = PasswordCredentialEntry.Builder(
@@ -170,7 +180,6 @@
assertThat(entry.affiliatedDomain).isNull()
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
-
@Test
fun builder_setAffiliatedDomainNull_retrieveNullAffiliatedDomain() {
val entry = PasswordCredentialEntry.Builder(
@@ -179,10 +188,8 @@
mPendingIntent,
BEGIN_OPTION
).setAffiliatedDomain(null).build()
-
assertThat(entry.affiliatedDomain).isNull()
}
-
@Test
fun builder_setAffiliatedDomainNonNull_retrieveNonNullAffiliatedDomain() {
val expectedAffiliatedDomain = "name"
@@ -192,45 +199,37 @@
mPendingIntent,
BEGIN_OPTION
).setAffiliatedDomain(expectedAffiliatedDomain).build()
-
assertThat(entry.affiliatedDomain).isEqualTo(expectedAffiliatedDomain)
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
fun fromSlice_success() {
val originalEntry = constructEntryWithAllParams()
val slice = PasswordCredentialEntry.toSlice(originalEntry)
assertNotNull(slice)
-
val entry = fromSlice(slice!!)
-
assertNotNull(entry)
entry?.let {
assertEntryWithAllParams(entry)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
fun fromCredentialEntry_success() {
val originalEntry = constructEntryWithAllParams()
val slice = PasswordCredentialEntry.toSlice(originalEntry)
-
assertNotNull(slice)
-
val entry = slice?.let { CredentialEntry("id", it) }?.let {
PasswordCredentialEntry.fromCredentialEntry(
it
)
}
-
assertNotNull(entry)
entry?.let {
assertEntryWithAllParams(entry)
}
}
-
+ @Suppress("DEPRECATION")
private fun constructEntryWithRequiredParamsOnly(): PasswordCredentialEntry {
return PasswordCredentialEntry(
mContext,
@@ -239,7 +238,6 @@
BEGIN_OPTION
)
}
-
private fun constructEntryWithAllParams(): PasswordCredentialEntry {
return PasswordCredentialEntry(
mContext,
@@ -250,17 +248,18 @@
LAST_USED_TIME,
ICON,
IS_AUTO_SELECT_ALLOWED,
- AFFILIATED_DOMAIN
+ AFFILIATED_DOMAIN,
+ SINGLE_PROVIDER_ICON_BIT
)
}
-
private fun assertEntryWithRequiredParamsOnly(entry: PasswordCredentialEntry) {
assertThat(USERNAME == entry.username)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
assertThat(entry.affiliatedDomain).isNull()
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
-
private fun assertEntryWithAllParams(entry: PasswordCredentialEntry) {
assertThat(USERNAME == entry.username)
assertThat(DISPLAYNAME == entry.displayName)
@@ -274,9 +273,9 @@
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
assertThat(entry.isAutoSelectAllowed).isEqualTo(IS_AUTO_SELECT_ALLOWED)
assertThat(entry.affiliatedDomain).isEqualTo(AFFILIATED_DOMAIN)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
-
companion object {
private val USERNAME: CharSequence = "title"
private val DISPLAYNAME: CharSequence = "subtitle"
@@ -292,5 +291,7 @@
)
private val IS_AUTO_SELECT_ALLOWED = false
private val AFFILIATED_DOMAIN = "affiliation-name"
+ private const val DEFAULT_SINGLE_PROVIDER_ICON_BIT = false
+ private const val SINGLE_PROVIDER_ICON_BIT = true
}
}
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryJavaTest.java b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryJavaTest.java
index d150ae4..cc50aad 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryJavaTest.java
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryJavaTest.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package androidx.credentials.provider.ui;
import static com.google.common.truth.Truth.assertThat;
@@ -43,7 +42,6 @@
import org.junit.runner.RunWith;
import java.time.Instant;
-
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 26)
@SmallTest
@@ -52,145 +50,118 @@
private static final CharSequence DISPLAYNAME = "subtitle";
private static final CharSequence TYPE_DISPLAY_NAME = "Password";
private static final Long LAST_USED_TIME = 10L;
- private static final Icon ICON = Icon.createWithBitmap(Bitmap.createBitmap(
- 100, 100, Bitmap.Config.ARGB_8888));
+ private static final boolean DEFAULT_SINGLE_PROVIDER_ICON_BIT = false;
+ private static final boolean SINGLE_PROVIDER_ICON_BIT = true;
+ private static final Icon ICON = Icon.createWithBitmap(
+ Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888));
private static final boolean IS_AUTO_SELECT_ALLOWED = true;
private final BeginGetPublicKeyCredentialOption mBeginOption =
- new BeginGetPublicKeyCredentialOption(
- new Bundle(), "id", "{\"key1\":{\"key2\":{\"key3\":\"value3\"}}}");
-
+ new BeginGetPublicKeyCredentialOption(new Bundle(), "id",
+ "{\"key1\":{\"key2\":{\"key3\":\"value3\"}}}");
private final Context mContext = ApplicationProvider.getApplicationContext();
private final Intent mIntent = new Intent();
- private final PendingIntent mPendingIntent =
- PendingIntent.getActivity(mContext, 0, mIntent,
- PendingIntent.FLAG_IMMUTABLE);
-
+ private final PendingIntent mPendingIntent = PendingIntent.getActivity(mContext, 0, mIntent,
+ PendingIntent.FLAG_IMMUTABLE);
@Test
public void build_requiredParamsOnly_success() {
PublicKeyCredentialEntry entry = constructWithRequiredParamsOnly();
-
assertNotNull(entry);
assertThat(entry.getType()).isEqualTo(PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL);
assertEntryWithRequiredParams(entry);
}
-
@Test
public void build_allParams_success() {
PublicKeyCredentialEntry entry = constructWithAllParams();
-
assertNotNull(entry);
assertThat(entry.getType()).isEqualTo(PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL);
assertEntryWithAllParams(entry);
}
-
@Test
public void build_withNullUsername_throwsNPE() {
- assertThrows("Expected null username to throw NPE",
- NullPointerException.class,
- () -> new PublicKeyCredentialEntry.Builder(
- mContext, null, mPendingIntent, mBeginOption
- ).build());
+ assertThrows("Expected null username to throw NPE", NullPointerException.class,
+ () -> new PublicKeyCredentialEntry.Builder(mContext, null, mPendingIntent,
+ mBeginOption).build());
}
-
@Test
public void build_withNullBeginOption_throwsNPE() {
- assertThrows("Expected null option to throw NPE",
- NullPointerException.class,
- () -> new PublicKeyCredentialEntry.Builder(
- mContext, USERNAME, mPendingIntent, null
- ).build());
+ assertThrows("Expected null option to throw NPE", NullPointerException.class,
+ () -> new PublicKeyCredentialEntry.Builder(mContext, USERNAME, mPendingIntent,
+ null).build());
}
-
@Test
public void build_withNullPendingIntent_throwsNPE() {
- assertThrows("Expected null pending intent to throw NPE",
- NullPointerException.class,
- () -> new PublicKeyCredentialEntry.Builder(
- mContext, USERNAME, null, mBeginOption
- ).build());
+ assertThrows("Expected null pending intent to throw NPE", NullPointerException.class,
+ () -> new PublicKeyCredentialEntry.Builder(mContext, USERNAME, null,
+ mBeginOption).build());
}
-
@Test
public void build_withEmptyUsername_throwsIAE() {
assertThrows("Expected empty username to throw IllegalArgumentException",
IllegalArgumentException.class,
- () -> new PublicKeyCredentialEntry.Builder(
- mContext, "", mPendingIntent, mBeginOption).build());
+ () -> new PublicKeyCredentialEntry.Builder(mContext, "", mPendingIntent,
+ mBeginOption).build());
}
-
@Test
public void build_withNullIcon_defaultIconSet() {
- PublicKeyCredentialEntry entry = new PublicKeyCredentialEntry
- .Builder(
- mContext, USERNAME, mPendingIntent, mBeginOption).build();
-
+ PublicKeyCredentialEntry entry = new PublicKeyCredentialEntry.Builder(mContext, USERNAME,
+ mPendingIntent, mBeginOption).build();
assertThat(TestUtilsKt.equals(entry.getIcon(),
Icon.createWithResource(mContext, R.drawable.ic_passkey))).isTrue();
}
-
@Test
public void build_nullTypeDisplayName_defaultDisplayNameSet() {
- PublicKeyCredentialEntry entry = new PublicKeyCredentialEntry.Builder(
- mContext, USERNAME, mPendingIntent, mBeginOption).build();
-
+ PublicKeyCredentialEntry entry = new PublicKeyCredentialEntry.Builder(mContext, USERNAME,
+ mPendingIntent, mBeginOption).build();
assertThat(entry.getTypeDisplayName()).isEqualTo(
- mContext.getString(
- R.string.androidx_credentials_TYPE_PUBLIC_KEY_CREDENTIAL)
- );
+ mContext.getString(R.string.androidx_credentials_TYPE_PUBLIC_KEY_CREDENTIAL));
}
-
+ @Test
+ public void builder_setPreferredDefaultIconBit_retrieveSetIconBit() {
+ boolean expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT;
+ PublicKeyCredentialEntry entry = new PublicKeyCredentialEntry.Builder(mContext, USERNAME,
+ mPendingIntent, mBeginOption).setDefaultIconPreferredAsSingleProvider(
+ expectedPreferredDefaultIconBit).build();
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ expectedPreferredDefaultIconBit);
+ }
@Test
@SdkSuppress(minSdkVersion = 28)
public void fromSlice_success() {
- PublicKeyCredentialEntry originalEntry = constructWithAllParams();
-
+ PublicKeyCredentialEntry originalEntry = constructWithRequiredParamsOnly();
PublicKeyCredentialEntry entry = PublicKeyCredentialEntry.fromSlice(
PublicKeyCredentialEntry.toSlice(originalEntry));
-
assertNotNull(entry);
assertEntryWithRequiredParams(entry);
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
public void fromCredentialEntry_success() {
PublicKeyCredentialEntry originalEntry = constructWithAllParams();
Slice slice = PublicKeyCredentialEntry.toSlice(originalEntry);
assertNotNull(slice);
-
PublicKeyCredentialEntry entry = PublicKeyCredentialEntry.fromCredentialEntry(
new android.service.credentials.CredentialEntry("id", slice));
-
assertNotNull(entry);
- assertEntryWithRequiredParams(entry);
+ assertEntryWithAllParams(entry);
}
-
private PublicKeyCredentialEntry constructWithRequiredParamsOnly() {
- return new PublicKeyCredentialEntry.Builder(
- mContext,
- USERNAME,
- mPendingIntent,
- mBeginOption
- ).build();
+ return new PublicKeyCredentialEntry.Builder(mContext, USERNAME, mPendingIntent,
+ mBeginOption).build();
}
-
private PublicKeyCredentialEntry constructWithAllParams() {
- return new PublicKeyCredentialEntry.Builder(
- mContext, USERNAME, mPendingIntent, mBeginOption)
- .setAutoSelectAllowed(IS_AUTO_SELECT_ALLOWED)
- .setDisplayName(DISPLAYNAME)
- .setLastUsedTime(Instant.ofEpochMilli(LAST_USED_TIME))
- .setIcon(ICON)
- .build();
+ return new PublicKeyCredentialEntry.Builder(mContext, USERNAME, mPendingIntent,
+ mBeginOption).setAutoSelectAllowed(IS_AUTO_SELECT_ALLOWED).setDisplayName(
+ DISPLAYNAME).setLastUsedTime(Instant.ofEpochMilli(LAST_USED_TIME)).setIcon(
+ ICON).setDefaultIconPreferredAsSingleProvider(SINGLE_PROVIDER_ICON_BIT).build();
}
-
private void assertEntryWithRequiredParams(PublicKeyCredentialEntry entry) {
assertThat(USERNAME.equals(entry.getUsername()));
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT);
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(USERNAME);
}
-
private void assertEntryWithAllParams(PublicKeyCredentialEntry entry) {
assertThat(USERNAME.equals(entry.getUsername()));
assertThat(DISPLAYNAME.equals(entry.getDisplayName()));
@@ -199,6 +170,8 @@
assertThat(Instant.ofEpochMilli(LAST_USED_TIME)).isEqualTo(entry.getLastUsedTime());
assertThat(IS_AUTO_SELECT_ALLOWED).isEqualTo(entry.isAutoSelectAllowed());
assertThat(mPendingIntent).isEqualTo(entry.getPendingIntent());
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider()).isEqualTo(
+ SINGLE_PROVIDER_ICON_BIT);
assertThat(entry.getAffiliatedDomain()).isNull();
assertThat(entry.getEntryGroupId()).isEqualTo(USERNAME);
}
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryTest.kt b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryTest.kt
index c09a0e4..07df803 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryTest.kt
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/provider/ui/PublicKeyCredentialEntryTest.kt
@@ -14,7 +14,6 @@
* limitations under the License.
*/
package androidx.credentials.provider.ui
-
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
@@ -41,7 +40,6 @@
import org.junit.Assert.assertThrows
import org.junit.Test
import org.junit.runner.RunWith
-
@SdkSuppress(minSdkVersion = 26)
@RunWith(AndroidJUnit4::class)
@SmallTest
@@ -52,16 +50,13 @@
mContext, 0, mIntent,
PendingIntent.FLAG_IMMUTABLE
)
-
@Test
fun constructor_requiredParamsOnly_success() {
val entry = constructWithRequiredParamsOnly()
-
assertNotNull(entry)
assertThat(entry.type).isEqualTo(PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL)
assertEntryWithRequiredParams(entry)
}
-
@Test
fun constructor_allParams_success() {
val entry = constructWithAllParams()
@@ -69,7 +64,6 @@
assertThat(entry.type).isEqualTo(PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL)
assertEntryWithAllParams(entry)
}
-
@Test
fun constructor_emptyUsername_throwsIAE() {
assertThrows(
@@ -81,13 +75,11 @@
)
}
}
-
@Test
fun constructor_nullIcon_defaultIconSet() {
val entry = PublicKeyCredentialEntry(
mContext, USERNAME, mPendingIntent, BEGIN_OPTION
)
-
assertThat(
equals(
entry.icon,
@@ -95,7 +87,6 @@
)
).isTrue()
}
-
@Test
fun constructor_nullTypeDisplayName_defaultDisplayNameSet() {
val entry = PublicKeyCredentialEntry(
@@ -108,6 +99,34 @@
)
}
@Test
+ fun constructor_setPreferredDefaultIconBit_retrieveSetPreferredDefaultIconBit() {
+ val expectedPreferredDefaultIconBit = SINGLE_PROVIDER_ICON_BIT
+ val entry = PublicKeyCredentialEntry(
+ mContext,
+ USERNAME,
+ mPendingIntent,
+ BEGIN_OPTION,
+ DISPLAYNAME,
+ Instant.ofEpochMilli(LAST_USED_TIME),
+ ICON,
+ IS_AUTO_SELECT_ALLOWED,
+ isDefaultIconPreferredAsSingleProvider = expectedPreferredDefaultIconBit
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider)
+ .isEqualTo(expectedPreferredDefaultIconBit)
+ }
+ @Test
+ fun constructor_preferredIconBitNotProvided_retrieveDefaultPreferredIconBit() {
+ val entry = PublicKeyCredentialEntry(
+ mContext,
+ USERNAME,
+ mPendingIntent,
+ BEGIN_OPTION
+ )
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
+ }
+ @Test
fun constructor_allRequiredParamsUsed_defaultUsernameEntryGroupIdRetrieved() {
val entry = constructWithAllParams()
@@ -143,28 +162,22 @@
fun fromSlice_success() {
val originalEntry = constructWithAllParams()
val slice = PublicKeyCredentialEntry.toSlice(originalEntry)
-
assertNotNull(slice)
val entry = fromSlice(slice!!)
-
assertNotNull(entry)
entry?.let {
- assertEntryWithRequiredParams(entry)
+ assertEntryWithAllParams(entry)
}
}
-
@Test
@SdkSuppress(minSdkVersion = 34)
fun fromCredentialEntry_success() {
val originalEntry = constructWithAllParams()
-
val entry = toSlice(originalEntry)?.let { CredentialEntry("id", it) }
?.let { fromCredentialEntry(it) }
-
Assert.assertNotNull(entry)
- assertEntryWithRequiredParams(entry!!)
+ assertEntryWithAllParams(entry!!)
}
-
private fun constructWithRequiredParamsOnly(): PublicKeyCredentialEntry {
return PublicKeyCredentialEntry(
mContext,
@@ -173,7 +186,6 @@
BEGIN_OPTION
)
}
-
private fun constructWithAllParams(): PublicKeyCredentialEntry {
return PublicKeyCredentialEntry(
mContext,
@@ -183,17 +195,18 @@
DISPLAYNAME,
Instant.ofEpochMilli(LAST_USED_TIME),
ICON,
- IS_AUTO_SELECT_ALLOWED
+ IS_AUTO_SELECT_ALLOWED,
+ SINGLE_PROVIDER_ICON_BIT
)
}
-
private fun assertEntryWithRequiredParams(entry: PublicKeyCredentialEntry) {
assertThat(USERNAME == entry.username)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(
+ DEFAULT_SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.affiliatedDomain).isNull()
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
-
private fun assertEntryWithAllParams(entry: PublicKeyCredentialEntry) {
assertThat(USERNAME == entry.username)
assertThat(DISPLAYNAME == entry.displayName)
@@ -202,6 +215,7 @@
assertThat(Instant.ofEpochMilli(LAST_USED_TIME)).isEqualTo(entry.lastUsedTime)
assertThat(IS_AUTO_SELECT_ALLOWED).isEqualTo(entry.isAutoSelectAllowed)
assertThat(mPendingIntent).isEqualTo(entry.pendingIntent)
+ assertThat(entry.isDefaultIconPreferredAsSingleProvider).isEqualTo(SINGLE_PROVIDER_ICON_BIT)
assertThat(entry.affiliatedDomain).isNull()
assertThat(entry.entryGroupId).isEqualTo(USERNAME)
}
@@ -217,5 +231,7 @@
private val ICON = Icon.createWithBitmap(Bitmap.createBitmap(
100, 100, Bitmap.Config.ARGB_8888))
private const val IS_AUTO_SELECT_ALLOWED = true
+ private const val DEFAULT_SINGLE_PROVIDER_ICON_BIT = false
+ private const val SINGLE_PROVIDER_ICON_BIT = true
}
}