Files
openide/plugins/configuration-script/test/PropertyValueReaderTest.kt
Dmitry Batkovich 0387731411 do not use custom plugin repositories from intellij.yaml if project is untrusted IDEA-320814
GitOrigin-RevId: 365dd3b979befd4bdeb444ab68274d011dfbeb90
2023-06-13 11:49:02 +00:00

54 lines
1.6 KiB
Kotlin

package com.intellij.configurationScript
import com.intellij.configurationScript.schemaGenerators.PluginJsonSchemaGenerator
import com.intellij.openapi.updateSettings.impl.PluginsConfiguration
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.assertions.Assertions.assertThat
import org.intellij.lang.annotations.Language
import org.junit.ClassRule
import org.junit.Test
import org.snakeyaml.engine.v2.nodes.MappingNode
class PropertyValueReaderTest {
companion object {
@JvmField
@ClassRule
val projectRule = ProjectRule()
}
@Test
fun collection() {
val result = doReadPluginsConfiguration("""
plugins:
repositories:
- foo
- bar
- http://example.com
""")
val options = PluginsConfiguration()
options.repositories.addAll(listOf("foo", "bar", "http://example.com"))
assertThat(result).isEqualTo(options)
}
@Test
fun `list of objects`() {
val result = JdkAutoHints()
readIntoObject(result, readYaml("""
sdks:
- sdkName: foo
sdkPath: /home/foo
""").value)
assertThat(result.sdks).hasSize(1)
val sdks = result.sdks
assertThat(sdks).hasSize(1)
}
}
private fun readYaml(@Language("YAML") data: String): MappingNode {
return doRead(data.trimIndent().reader())!!
}
private fun doReadPluginsConfiguration(@Suppress("SameParameterValue") @Language("YAML") data: String): PluginsConfiguration {
return readIntoObject(PluginsConfiguration(), findValueNodeByPath(PluginJsonSchemaGenerator.plugins, readYaml(data).value)!!)
}