Skip to content

Commit

Permalink
IDE-207 Fix TrustUserDomainsTest (#4882)
Browse files Browse the repository at this point in the history
  • Loading branch information
becothas authored Oct 10, 2023
1 parent 089de40 commit 0c84e26
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 17 deletions.
28 changes: 20 additions & 8 deletions catroid/src/main/java/org/catrobat/catroid/TrustedDomainManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,17 @@ object TrustedDomainManager {
private const val READ_ERROR_LOG = "Cannot read trusted domains"
private const val PARSE_ERROR_LOG = "Cannot parse trusted domains"

private val trustListPattern: Pattern? by lazy {
initializeTrustListPattern()
}
private var trustListPattern: Pattern? = null
var userTrustListPattern: Pattern? = null

@Synchronized
fun isURLTrusted(url: String): Boolean {
if (userTrustListPattern == null) {
userTrustListPattern = initializeUserTrustListPattern()
}
if (trustListPattern == null) {
trustListPattern = initializeTrustListPattern()
}
return trustListPattern?.matcher(url)?.matches() ?: false ||
userTrustListPattern?.matcher(url)?.matches() ?: false
}
Expand All @@ -61,9 +62,14 @@ object TrustedDomainManager {
TRUSTED_USER_DOMAINS_FILE.exists() ->
TRUSTED_USER_DOMAINS_FILE.inputStream().use {
val trustList = Utils.getJsonObjectFromInputStream(it)
trustList.getJSONArray(TRUST_LIST_JSON_ARRAY_NAME).put(cleanUpUserInput(domain))
}
TRUSTED_USER_DOMAINS_FILE.createNewFile() -> JSONArray(listOf(cleanUpUserInput(domain)))
trustList.getJSONArray(TRUST_LIST_JSON_ARRAY_NAME)
.put(cleanUpUserInput(domain))
}

TRUSTED_USER_DOMAINS_FILE.createNewFile() -> JSONArray(
listOf(cleanUpUserInput(domain))
)

else -> return false
}
userTrustListPattern = getTrustListPatternFromDomains(domains)
Expand Down Expand Up @@ -108,6 +114,7 @@ object TrustedDomainManager {
TRUSTED_USER_DOMAINS_FILE.writeText(trustList.toString(JSON_INDENTATION))
true
}

else -> false
}
} catch (e: IOException) {
Expand Down Expand Up @@ -177,9 +184,14 @@ object TrustedDomainManager {
private fun cleanUpUserInput(string: String): String =
string.replace("[ \"{}\\[\\]]|(\\n){2,}".toRegex(), "").removeSuffix("\n")

@VisibleForTesting
fun resetUserTrustList(): Boolean {
private fun resetUserTrustList(): Boolean {
userTrustListPattern = null
return TRUSTED_USER_DOMAINS_FILE.delete()
}

@VisibleForTesting
fun reset() {
resetUserTrustList()
trustListPattern = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ package org.catrobat.catroid.test.utiltests

import android.content.Context
import org.catrobat.catroid.CatroidApplication
import org.catrobat.catroid.TrustedDomainManager
import org.catrobat.catroid.TrustedDomainManager.addToUserTrustList
import org.catrobat.catroid.TrustedDomainManager.getUserTrustList
import org.catrobat.catroid.TrustedDomainManager.isURLTrusted
import org.catrobat.catroid.TrustedDomainManager.reset
import org.catrobat.catroid.TrustedDomainManager.setUserTrustList
import org.catrobat.catroid.common.Constants
import org.catrobat.catroid.common.Constants.TRUSTED_USER_DOMAINS_FILE
import org.catrobat.catroid.common.Constants.TRUST_LIST_JSON_ARRAY_NAME
import org.catrobat.catroid.common.FlavoredConstants
import org.catrobat.catroid.utils.Utils
import org.json.JSONArray
Expand Down Expand Up @@ -96,9 +98,10 @@ class TrustedUserDomainsTest {

@Test
fun testAddToUserTrustList() {
Constants.TRUSTED_USER_DOMAINS_FILE.createNewFile()
given(Utils.getJsonObjectFromInputStream(any()))
.willReturn(constructTrustList(listOf("tugraz.at")))
TRUSTED_USER_DOMAINS_FILE.createNewFile()
given(Utils.getJsonObjectFromInputStream(any())).willReturn(
constructTrustList(listOf("tugraz.at"))
)
addToUserTrustList("wikipedia.net")
assertTrue(isURLTrusted("https://www.tugraz.at"))
assertTrue(isURLTrusted("https://www.wikipedia.net/blabla"))
Expand All @@ -107,17 +110,18 @@ class TrustedUserDomainsTest {

@Test
fun testGetUserTrustList() {
Constants.TRUSTED_USER_DOMAINS_FILE.createNewFile()
given(Utils.getJsonObjectFromInputStream(any()))
.willReturn(constructTrustList(listOf("tugraz.at", "wikipedia.net")))
TRUSTED_USER_DOMAINS_FILE.createNewFile()
given(Utils.getJsonObjectFromInputStream(any())).willReturn(
constructTrustList(listOf("tugraz.at", "wikipedia.net"))
)
assertEquals("tugraz.at\nwikipedia.net", getUserTrustList())
}

@After
fun tearDown() {
TrustedDomainManager.resetUserTrustList()
reset()
}

private fun constructTrustList(domains: List<String>): JSONObject =
JSONObject(mapOf(Constants.TRUST_LIST_JSON_ARRAY_NAME to JSONArray(domains)))
JSONObject(mapOf(TRUST_LIST_JSON_ARRAY_NAME to JSONArray(domains)))
}

0 comments on commit 0c84e26

Please sign in to comment.