Tipp: Grails und wie man die Konfiguration mit Spock testen kann
Folgendes Problem: Entwickler ändert die Produktions-Settings, um auf der Test-Umgebung einen speziellen Test auszuführen. Leider vergisst er die richtigen Settings wiederherzustellen. Mit einem Integrationstest kann man sehr schön die Konfiguration absichern.
Möchte man bspw. testen, ob in der Config.groovy in der Umgebung prod_rz01 die Variable disabled auf false steht.
import org.springframework.beans.factory.annotation.Autowired
import com.exensio.common.Constants
import grails.util.Environment
// configuration of mail plugin
environments {
...
prod_rz01 {
grails {
mail {
host = "smtp.mail.de"
port = 465
username = "testmails@mail.de"
password = "testmails"
props = ["mail.smtp.auth": "true",
"mail.smtp.socketFactory.port": "465",
"mail.smtp.socketFactory.class": "javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback": "false"]
disabled = false
}
mail.default.from = "no-reply@mail.com"
}
}
...
}
So kann man dies mit dem ConfigSlurper und dem Beispiel-Code unten bewerkstelligen.
package com.exensio.test.common
import grails.plugin.spock.IntegrationSpec
class CheckConfigurationIntSpec extends IntegrationSpec {
def grailsApplication
def "check prod_rz01 production mail settings"() {
given:
def config = new ConfigSlurper('prod_rz01').parse(new File('grails-app/conf/Config.groovy').toURL())
expect:
config.grails.mail.disabled == false
}
}