You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.3 KiB
Kotlin
112 lines
4.3 KiB
Kotlin
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.fenix.trackingprotection
|
|
|
|
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy.TrackingCategory.CRYPTOMINING
|
|
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy.TrackingCategory.FINGERPRINTING
|
|
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy.TrackingCategory.MOZILLA_SOCIAL
|
|
import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy.TrackingCategory.SCRIPTS_AND_SUB_RESOURCES
|
|
import mozilla.components.concept.engine.content.blocking.TrackerLog
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Test
|
|
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.CRYPTOMINERS
|
|
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.FINGERPRINTERS
|
|
|
|
private typealias FenixTrackingProtectionCategory = TrackingProtectionCategory
|
|
class TrackerBucketsTest {
|
|
|
|
@Test
|
|
fun `initializes with empty map`() {
|
|
assertTrue(TrackerBuckets().buckets.blockedBucketMap.isEmpty())
|
|
assertTrue(TrackerBuckets().buckets.loadedBucketMap.isEmpty())
|
|
}
|
|
|
|
@Test
|
|
fun `getter accesses corresponding bucket`() {
|
|
val buckets = TrackerBuckets()
|
|
val google = TrackerLog("https://google.com", listOf(), listOf(FINGERPRINTING))
|
|
val facebook = TrackerLog("http://facebook.com", listOf(MOZILLA_SOCIAL))
|
|
|
|
buckets.updateIfNeeded(
|
|
listOf(
|
|
google,
|
|
facebook,
|
|
TrackerLog("https://mozilla.com"),
|
|
),
|
|
)
|
|
|
|
assertEquals(google, buckets.buckets.blockedBucketMap[FINGERPRINTERS]!!.first())
|
|
assertEquals(
|
|
facebook,
|
|
buckets.buckets.loadedBucketMap[FenixTrackingProtectionCategory.SOCIAL_MEDIA_TRACKERS]!!.first(),
|
|
)
|
|
assertTrue(buckets.buckets.blockedBucketMap[CRYPTOMINERS].isNullOrEmpty())
|
|
assertTrue(buckets.buckets.loadedBucketMap[CRYPTOMINERS].isNullOrEmpty())
|
|
}
|
|
|
|
@Test
|
|
fun `sorts trackers into bucket`() {
|
|
val buckets = TrackerBuckets()
|
|
val google = TrackerLog("https://google.com", listOf(), listOf(FINGERPRINTING))
|
|
val facebook = TrackerLog("http://facebook.com", listOf(MOZILLA_SOCIAL))
|
|
val mozilla = TrackerLog("https://mozilla.com")
|
|
buckets.updateIfNeeded(
|
|
listOf(
|
|
facebook,
|
|
google,
|
|
mozilla,
|
|
),
|
|
)
|
|
|
|
assertEquals(
|
|
mapOf(
|
|
FenixTrackingProtectionCategory.SOCIAL_MEDIA_TRACKERS to listOf(facebook),
|
|
),
|
|
buckets.buckets.loadedBucketMap,
|
|
)
|
|
|
|
assertEquals(
|
|
mapOf(
|
|
FINGERPRINTERS to listOf(google),
|
|
),
|
|
buckets.buckets.blockedBucketMap,
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun `trackers in the same site but with different categories`() {
|
|
val buckets = TrackerBuckets()
|
|
val acCategories = listOf(
|
|
CRYPTOMINING,
|
|
MOZILLA_SOCIAL,
|
|
FINGERPRINTING,
|
|
SCRIPTS_AND_SUB_RESOURCES,
|
|
)
|
|
|
|
val trackerLog = TrackerLog(
|
|
url = "http://facebook.com",
|
|
cookiesHasBeenBlocked = true,
|
|
blockedCategories = acCategories,
|
|
loadedCategories = acCategories,
|
|
)
|
|
buckets.updateIfNeeded(listOf(trackerLog))
|
|
|
|
val expectedBlockedMap =
|
|
mapOf(
|
|
FenixTrackingProtectionCategory.SOCIAL_MEDIA_TRACKERS to listOf(trackerLog),
|
|
FenixTrackingProtectionCategory.TRACKING_CONTENT to listOf(trackerLog),
|
|
FenixTrackingProtectionCategory.FINGERPRINTERS to listOf(trackerLog),
|
|
FenixTrackingProtectionCategory.CRYPTOMINERS to listOf(trackerLog),
|
|
FenixTrackingProtectionCategory.CROSS_SITE_TRACKING_COOKIES to listOf(trackerLog),
|
|
)
|
|
val expectedLoadedMap =
|
|
expectedBlockedMap - FenixTrackingProtectionCategory.CROSS_SITE_TRACKING_COOKIES
|
|
|
|
assertEquals(expectedBlockedMap, buckets.buckets.blockedBucketMap)
|
|
assertEquals(expectedLoadedMap, buckets.buckets.loadedBucketMap)
|
|
}
|
|
}
|