[Build, IGS] Make the consent checker tests parameterized tests

This commit is contained in:
Alexander.Likhachev
2023-08-09 18:09:05 +02:00
committed by Space Team
parent c7b2240c8e
commit 9dd4241a70
2 changed files with 41 additions and 47 deletions
@@ -11,7 +11,11 @@ repositories {
dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(kotlin("test-junit5"))
testImplementation(kotlin("test-junit5"))
testImplementation(platform(libs.junit.bom))
testImplementation(libs.junit.jupiter.api)
testImplementation(libs.junit.jupiter.params)
testRuntimeOnly(libs.junit.jupiter.engine)
}
kotlin.jvmToolchain(8)
@@ -6,17 +6,25 @@
package org.jetbrains.kotlin.build
import org.apache.tools.ant.filters.StringInputStream
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Named.named
import org.junit.jupiter.api.io.TempDir
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource
import java.io.ByteArrayOutputStream
import java.io.PrintStream
import java.nio.file.Files
import java.nio.file.Path
import java.util.stream.Stream
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull
import kotlin.test.assertTrue
data class ConsentConfiguration(
val globalConsent: Boolean?,
val localConsent: Boolean?,
val expected: Boolean?,
)
class ConsentManagerTest {
@TempDir
lateinit var workingDir: Path
@@ -29,50 +37,17 @@ class ConsentManagerTest {
LocalPropertiesModifier(localPropertiesFile.toFile())
}
@Test
@DisplayName("can check if there's no decision over the consent")
fun testNoConsentRead() {
assertNull(ConsentManager(modifier).getUserDecision())
}
@Test
@DisplayName("can check if there's agree to the consent")
fun testConsentAgreeRead() {
localPropertiesFile.toFile().writeText(USER_CONSENT_MARKER)
assertEquals(true, ConsentManager(modifier).getUserDecision())
}
@Test
@DisplayName("can check if there's refusal to the consent")
fun testConsentRefusalRead() {
localPropertiesFile.toFile().writeText(USER_REFUSAL_MARKER)
assertEquals(false, ConsentManager(modifier).getUserDecision())
}
@Test
@DisplayName("if there's no local consent, but the global one is given")
fun testGlobalConsentGiven() {
assertEquals(true, ConsentManager(modifier, true).getUserDecision())
}
@Test
@DisplayName("if there's no local consent, but the global one is refused")
fun testGlobalConsentRefusal() {
assertEquals(false, ConsentManager(modifier, false).getUserDecision())
}
@Test
@DisplayName("local given consent takes priority over the global one")
fun testLocalGivenConsentTakesPriority() {
localPropertiesFile.toFile().writeText(USER_CONSENT_MARKER)
assertEquals(true, ConsentManager(modifier, false).getUserDecision())
}
@Test
@DisplayName("local refused consent takes priority over the global one")
fun testLocalRefusedConsentTakesPriority() {
localPropertiesFile.toFile().writeText(USER_REFUSAL_MARKER)
assertEquals(false, ConsentManager(modifier, true).getUserDecision())
@ParameterizedTest(name = "{0}")
@MethodSource("getConfigurationsForParameterizedConsentCheckingTest")
fun testConsentChecker(consentConfiguration: ConsentConfiguration) {
when (consentConfiguration.localConsent) {
true -> localPropertiesFile.toFile().writeText(USER_CONSENT_MARKER)
false -> localPropertiesFile.toFile().writeText(USER_REFUSAL_MARKER)
null -> {
// do nothing
}
}
assertEquals(consentConfiguration.expected, ConsentManager(modifier, consentConfiguration.globalConsent).getUserDecision())
}
@Test
@@ -117,4 +92,19 @@ class ConsentManagerTest {
}
}
}
companion object {
@JvmStatic
private fun getConfigurationsForParameterizedConsentCheckingTest() = Stream.of(
named("no decision is provided", ConsentConfiguration(null, null, null)),
named("local consent given with no global decision", ConsentConfiguration(null, true, true)),
named("local consent refused with no global decision", ConsentConfiguration(null, false, false)),
named("global consent refused with no local decision", ConsentConfiguration(false, null, false)),
named("local given consent takes priority over the global refused one", ConsentConfiguration(false, true, true)),
named("both local and global consents are refused", ConsentConfiguration(false, false, false)),
named("global consent refused with no local decision", ConsentConfiguration(true, null, true)),
named("both local and global consents are given", ConsentConfiguration(true, true, true)),
named("local refused consent takes priority over the global given one", ConsentConfiguration(true, false, false)),
)
}
}