Tipp: Grails und wie man die Konfiguration mit Spock testen kann

von Peter Soth

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
    }
}

Fazit

Mit diesem einfachen Integrationstest kann man sehr schön Konfigurationsparameter überprüfen und sicherstellen, dass diese in der Produktion auch stimmen. Das Ganze funktioniert natürlich auch für die Absicherung von Data-Sources in DataSource.groovy.

Kategorien: GrailsSpockTesting

Zurück