2016-04-19 9 views

Antwort

6
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)) 
    } 
} 
+0

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

+0

@ 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