@@ -30,6 +30,7 @@ import org.sonar.check.Rule
30
30
import org.sonarsource.kotlin.api.checks.AbstractCheck
31
31
import org.sonarsource.kotlin.api.frontend.KotlinFileContext
32
32
import org.sonarsource.kotlin.gradle.checks.MissingSettingsCheck
33
+ import org.sonarsource.kotlin.gradle.checks.MissingVerificationMetadataCheck
33
34
import org.sonarsource.kotlin.testapi.AbstractSensorTest
34
35
import kotlin.io.path.createFile
35
36
@@ -80,7 +81,7 @@ internal class KotlinGraldeSensorTest : AbstractSensorTest() {
80
81
81
82
addBuildFile()
82
83
83
- val checkFactory = checkFactory(" S6631 " )
84
+ val checkFactory = checkFactory(MISSING_SETTINGS_RULE_KEY )
84
85
sensor(checkFactory).execute(context)
85
86
val issues = context.allIssues()
86
87
@@ -103,7 +104,7 @@ internal class KotlinGraldeSensorTest : AbstractSensorTest() {
103
104
addSettingsFile()
104
105
addBuildFile()
105
106
106
- val checkFactory = checkFactory(" S6631 " )
107
+ val checkFactory = checkFactory(MISSING_SETTINGS_RULE_KEY )
107
108
sensor(checkFactory).execute(context)
108
109
val issues = context.allIssues()
109
110
@@ -122,7 +123,7 @@ internal class KotlinGraldeSensorTest : AbstractSensorTest() {
122
123
addSettingsKtsFile()
123
124
addBuildFile()
124
125
125
- val checkFactory = checkFactory(" S6631 " )
126
+ val checkFactory = checkFactory(MISSING_SETTINGS_RULE_KEY )
126
127
sensor(checkFactory).execute(context)
127
128
val issues = context.allIssues()
128
129
@@ -147,6 +148,75 @@ internal class KotlinGraldeSensorTest : AbstractSensorTest() {
147
148
assertThat(issues).isEmpty()
148
149
}
149
150
151
+ @Test
152
+ fun test_missing_verification_metadata_rule_is_triggered_when_verification_metadata_is_not_present () {
153
+ mockkStatic(" org.sonarsource.kotlin.gradle.KotlinGradleCheckListKt" )
154
+ every { KOTLIN_GRADLE_CHECKS } returns listOf (MissingVerificationMetadataCheck ::class .java)
155
+
156
+ val settings = MapSettings ()
157
+ settings.setProperty(GRADLE_PROJECT_ROOT_PROPERTY , baseDir.toRealPath().toString())
158
+ context.setSettings(settings)
159
+
160
+ val checkFactory = checkFactory(MISSING_VERIFICATION_METADATA_RULE_KEY )
161
+ sensor(checkFactory).execute(context)
162
+ val issues = context.allIssues()
163
+
164
+ assertThat(issues).hasSize(1 )
165
+ val issue = issues.iterator().next()
166
+ assertThat(issue.primaryLocation().inputComponent().key()).isEqualTo(" projectKey" )
167
+ val expectedMessage = """ Dependencies are not verified because the "verification-metadata.xml" file is missing. Make sure it is safe here."""
168
+ assertThat(issue.primaryLocation().message()).isEqualTo(expectedMessage)
169
+ }
170
+
171
+ @Test
172
+ fun test_missing_verification_metadata_rule_is_not_triggered_when_verification_metadata_is_present () {
173
+ mockkStatic(" org.sonarsource.kotlin.gradle.KotlinGradleCheckListKt" )
174
+ every { KOTLIN_GRADLE_CHECKS } returns listOf (MissingVerificationMetadataCheck ::class .java)
175
+
176
+ val settings = MapSettings ()
177
+ settings.setProperty(GRADLE_PROJECT_ROOT_PROPERTY , baseDir.toRealPath().toString())
178
+ context.setSettings(settings)
179
+
180
+ addVerificationMetadataFile()
181
+
182
+ val checkFactory = checkFactory(MISSING_VERIFICATION_METADATA_RULE_KEY )
183
+ sensor(checkFactory).execute(context)
184
+
185
+ assertThat(context.allIssues()).isEmpty()
186
+ }
187
+
188
+ @Test
189
+ fun test_missing_verification_metadata_rule_is_not_triggered_when_rule_is_not_active () {
190
+ mockkStatic(" org.sonarsource.kotlin.gradle.KotlinGradleCheckListKt" )
191
+ every { KOTLIN_GRADLE_CHECKS } returns listOf (MissingVerificationMetadataCheck ::class .java)
192
+
193
+ val settings = MapSettings ()
194
+ settings.setProperty(GRADLE_PROJECT_ROOT_PROPERTY , baseDir.toRealPath().toString())
195
+ context.setSettings(settings)
196
+
197
+ addSettingsKtsFile()
198
+ addBuildFile()
199
+
200
+ val checkFactory = checkFactory() // No rule key
201
+ sensor(checkFactory).execute(context)
202
+
203
+ assertThat(context.allIssues()).isEmpty()
204
+ }
205
+
206
+ @Test
207
+ fun test_missing_verification_metadata_rule_is_not_triggereD_when_gradle_project_root_property_is_not_set () {
208
+ mockkStatic(" org.sonarsource.kotlin.gradle.KotlinGradleCheckListKt" )
209
+ every { KOTLIN_GRADLE_CHECKS } returns listOf (MissingVerificationMetadataCheck ::class .java)
210
+
211
+ val settings = MapSettings ()
212
+ context.setSettings(settings)
213
+
214
+ val checkFactory = checkFactory(MISSING_VERIFICATION_METADATA_RULE_KEY )
215
+ sensor(checkFactory).execute(context)
216
+
217
+ assertThat(context.allIssues()).isEmpty()
218
+ }
219
+
150
220
private fun addBuildFile () {
151
221
val buildFile = createInputFile(
152
222
" build.gradle.kts" , """
@@ -195,6 +265,29 @@ internal class KotlinGraldeSensorTest : AbstractSensorTest() {
195
265
context.fileSystem().add(settingsFile)
196
266
}
197
267
268
+ private fun addVerificationMetadataFile () {
269
+ val verificationMetadataFile = createInputFile(
270
+ " verification-metadata.xml" , """
271
+ <?xml version="1.0" encoding="UTF-8"?>
272
+ <verification-metadata xmlns="https://schema.gradle.org/dependency-verification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schema.gradle.org/dependency-verification https://schema.gradle.org/dependency-verification/dependency-verification-1.3.xsd">
273
+ <configuration>
274
+ <verify-metadata>false</verify-metadata>
275
+ <verify-signatures>false</verify-signatures>
276
+ </configuration>
277
+ <components>
278
+ <component group="ch.qos.logback" name="logback-classic" version="1.2.9">
279
+ <artifact name="logback-classic-1.2.9.jar">
280
+ <sha256 value="ad745cc243805800d1ebbf5b7deba03b37c95885e6bce71335a73f7d6d0f14ee" origin="Verified"/>
281
+ </artifact>
282
+ </component>
283
+ </components>
284
+ </verification-metadata>
285
+ """ .trimIndent())
286
+ baseDir.resolve(" gradle" ).toFile().mkdir()
287
+ baseDir.resolve(" gradle/verification-metadata.xml" ).createFile()
288
+ context.fileSystem().add(verificationMetadataFile)
289
+ }
290
+
198
291
private fun sensor (checkFactory : CheckFactory ): KotlinGradleSensor {
199
292
return KotlinGradleSensor (checkFactory, language())
200
293
}
0 commit comments