Verwendung von REST-gesichertem Framework im Spock-Framework. Dies wird beantworten geschlossen this closed topicREST-sicher mit Spock und Groovy als Integrationstest
Antwort
package cz.audatex.audanext.auth.endpoint.v1.member.settings
import com.jayway.restassured.RestAssured
import org.librucha.ServerApp
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.test.SpringApplicationConfiguration
import org.springframework.boot.test.WebIntegrationTest
import spock.lang.Specification
import spock.lang.Unroll
@SpringApplicationConfiguration(classes = ServerApp.class)
@WebIntegrationTest(randomPort = true)
class Test extends Specification {
@Value('${local.server.port}')
private int port
def setup() throws Exception {
RestAssured.port = port
}
@Unroll
def "Get services as '#accessor.role' [#iterationCount]"() {
given:
def request = given()
.accept(JSON)
.auth().oauth2(getToken(accessor.name))
.log().all()
when:
def response = request.with().get("/api/v1/services")
then:
response.then().log().all()
.statusCode(status)
.spec(specification)
where:
accessor || status || specification
[name: 'user-login', role: 'ordinary user'] || SC_FORBIDDEN || expect().body('code', equalTo('access_denied'), 'description', equalTo('Access is denied'))
[name: 'admin-login', role: 'super admin'] || SC_OK || expect().body('id', contains(1, 2, 3, 4))
}
}
Sieht ganz nett aus. Haben Sie Beispiele für kompliziertere Tests? Wird es mit einem großen Test oder einer großen Menge an Eingabedaten weniger nützlich? – RocketRaccoon
@ RocketRaccoon Leider war dieses Projekt kommerziell und mein Vertrag erlaubt mir nicht, Code zu veröffentlichen. Aber ich habe es für den gesamten REST-Integrationstest einschließlich der Autorisierung mit OAuth2 verwendet. – librucha
Mögliche Duplikat [REST-versichert mit Spock und Groovy] (http://stackoverflow.com/questions/25848889/rest-assured-with-spock-and-groovy) – jstrater