mirror of
https://github.com/bitwarden/android.git
synced 2026-05-29 07:56:39 -05:00
Move AutofillView data into a wrapper class (#590)
This commit is contained in:
@@ -16,6 +16,15 @@ import org.junit.jupiter.api.Test
|
||||
class FilledDataBuilderTest {
|
||||
private lateinit var filledDataBuilder: FilledDataBuilder
|
||||
|
||||
private val autofillId: AutofillId = mockk()
|
||||
private val autofillViewData = AutofillView.Data(
|
||||
autofillId = autofillId,
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
)
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
filledDataBuilder = FilledDataBuilderImpl()
|
||||
@@ -24,13 +33,8 @@ class FilledDataBuilderTest {
|
||||
@Test
|
||||
fun `build should return filled data and ignored AutofillIds when Login`() = runTest {
|
||||
// Setup
|
||||
val autofillId: AutofillId = mockk()
|
||||
val autofillView = AutofillView.Login.Username(
|
||||
autofillId = autofillId,
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData,
|
||||
)
|
||||
val autofillPartition = AutofillPartition.Login(
|
||||
views = listOf(autofillView),
|
||||
@@ -70,11 +74,7 @@ class FilledDataBuilderTest {
|
||||
// Setup
|
||||
val autofillId: AutofillId = mockk()
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = autofillId,
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData,
|
||||
)
|
||||
val autofillPartition = AutofillPartition.Card(
|
||||
views = listOf(autofillView),
|
||||
|
||||
@@ -22,6 +22,13 @@ import org.junit.jupiter.api.Test
|
||||
class AutofillParserTests {
|
||||
private lateinit var parser: AutofillParser
|
||||
|
||||
private val autofillViewData = AutofillView.Data(
|
||||
autofillId = mockk(),
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
)
|
||||
private val assistStructure: AssistStructure = mockk()
|
||||
private val cardAutofillHint = View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR
|
||||
private val cardAutofillId: AutofillId = mockk()
|
||||
@@ -86,11 +93,10 @@ class AutofillParserTests {
|
||||
val parentAutofillHint = View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR
|
||||
val parentAutofillId: AutofillId = mockk()
|
||||
val parentAutofillView: AutofillView.Card = AutofillView.Card.ExpirationMonth(
|
||||
autofillId = parentAutofillId,
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = parentAutofillId,
|
||||
isFocused = true,
|
||||
),
|
||||
)
|
||||
val parentViewNode: AssistStructure.ViewNode = mockk {
|
||||
every { this@mockk.autofillHints } returns arrayOf(parentAutofillHint)
|
||||
@@ -128,18 +134,16 @@ class AutofillParserTests {
|
||||
// Setup
|
||||
setupAssistStructureWithAllAutofillViewTypes()
|
||||
val cardAutofillView: AutofillView.Card = AutofillView.Card.ExpirationMonth(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = true,
|
||||
),
|
||||
)
|
||||
val loginAutofillView: AutofillView.Login = AutofillView.Login.Username(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = false,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = false,
|
||||
),
|
||||
)
|
||||
val autofillPartition = AutofillPartition.Card(
|
||||
views = listOf(cardAutofillView),
|
||||
@@ -167,18 +171,16 @@ class AutofillParserTests {
|
||||
// Setup
|
||||
setupAssistStructureWithAllAutofillViewTypes()
|
||||
val cardAutofillView: AutofillView.Card = AutofillView.Card.ExpirationMonth(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = false,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = false,
|
||||
),
|
||||
)
|
||||
val loginAutofillView: AutofillView.Login = AutofillView.Login.Username(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = true,
|
||||
),
|
||||
)
|
||||
val autofillPartition = AutofillPartition.Login(
|
||||
views = listOf(loginAutofillView),
|
||||
@@ -206,18 +208,16 @@ class AutofillParserTests {
|
||||
// Setup
|
||||
setupAssistStructureWithAllAutofillViewTypes()
|
||||
val cardAutofillView: AutofillView.Card = AutofillView.Card.ExpirationMonth(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = cardAutofillId,
|
||||
isFocused = true,
|
||||
),
|
||||
)
|
||||
val loginAutofillView: AutofillView.Login = AutofillView.Login.Username(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = true,
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
autofillId = loginAutofillId,
|
||||
isFocused = true,
|
||||
),
|
||||
)
|
||||
val autofillPartition = AutofillPartition.Card(
|
||||
views = listOf(cardAutofillView),
|
||||
|
||||
@@ -13,6 +13,13 @@ import org.junit.jupiter.api.Test
|
||||
class ViewNodeExtensionsTest {
|
||||
private val expectedAutofillId: AutofillId = mockk()
|
||||
private val expectedIsFocused = true
|
||||
private val autofillViewData = AutofillView.Data(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
)
|
||||
private val viewNode: AssistStructure.ViewNode = mockk {
|
||||
every { this@mockk.autofillId } returns expectedAutofillId
|
||||
every { this@mockk.childCount } returns 0
|
||||
@@ -27,11 +34,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH
|
||||
val expected = AutofillView.Card.ExpirationMonth(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -47,11 +50,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR
|
||||
val expected = AutofillView.Card.ExpirationYear(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -67,11 +66,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_CREDIT_CARD_NUMBER
|
||||
val expected = AutofillView.Card.Number(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -87,11 +82,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE
|
||||
val expected = AutofillView.Card.SecurityCode(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -107,11 +98,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_EMAIL_ADDRESS
|
||||
val expected = AutofillView.Login.EmailAddress(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -127,11 +114,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_PASSWORD
|
||||
val expected = AutofillView.Login.Password(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -147,11 +130,7 @@ class ViewNodeExtensionsTest {
|
||||
// Setup
|
||||
val autofillHint = View.AUTOFILL_HINT_USERNAME
|
||||
val expected = AutofillView.Login.Username(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHint)
|
||||
|
||||
@@ -181,11 +160,7 @@ class ViewNodeExtensionsTest {
|
||||
val autofillHintOne = "Shenanigans"
|
||||
val autofillHintTwo = View.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR
|
||||
val expected = AutofillView.Card.ExpirationYear(
|
||||
autofillId = expectedAutofillId,
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = expectedIsFocused,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData,
|
||||
)
|
||||
every { viewNode.autofillHints } returns arrayOf(autofillHintOne, autofillHintTwo)
|
||||
|
||||
|
||||
@@ -15,16 +15,22 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
every { this@mockk.windowNodeCount } returns 1
|
||||
every { this@mockk.getWindowNodeAt(0) } returns windowNode
|
||||
}
|
||||
private val autofillViewData = AutofillView.Data(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `buildUriOrNull should return URI when contains valid domain and scheme`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
data = autofillViewData.copy(
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = WEB_SCHEME,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -47,11 +53,10 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return URI with default scheme when domain valid and scheme null`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -75,11 +80,10 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return URI with default scheme when domain valid and scheme empty`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = "",
|
||||
data = autofillViewData.copy(
|
||||
webDomain = WEB_DOMAIN,
|
||||
webScheme = "",
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -102,11 +106,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return idPackage URI when domain is null`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = ID_PACKAGE,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -129,11 +133,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return idPackage URI when domain is empty`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = ID_PACKAGE,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = ID_PACKAGE,
|
||||
webDomain = "",
|
||||
webScheme = "",
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -156,11 +160,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return title URI when domain and idPackage are null`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -184,11 +188,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return title URI when domain and idPackage are empty`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = "",
|
||||
isFocused = false,
|
||||
webDomain = "",
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = "",
|
||||
webDomain = "",
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -212,11 +216,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return null when title, domain, and idPackage are null`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = null,
|
||||
isFocused = false,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = null,
|
||||
webDomain = null,
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
@@ -239,11 +243,11 @@ class ViewNodeTraversalDataExtensionsTest {
|
||||
fun `buildUriOrNull should return null when title, domain, and idPackage are empty`() {
|
||||
// Setup
|
||||
val autofillView = AutofillView.Card.Number(
|
||||
autofillId = mockk(),
|
||||
idPackage = "",
|
||||
isFocused = false,
|
||||
webDomain = "",
|
||||
webScheme = null,
|
||||
data = autofillViewData.copy(
|
||||
idPackage = "",
|
||||
webDomain = "",
|
||||
webScheme = null,
|
||||
),
|
||||
)
|
||||
val viewNodeTraversalData = ViewNodeTraversalData(
|
||||
autofillViews = listOf(
|
||||
|
||||
Reference in New Issue
Block a user