Skip to content

Commit

Permalink
Merge bf845c0 into 049358c
Browse files Browse the repository at this point in the history
  • Loading branch information
Felipe444 committed Feb 12, 2019
2 parents 049358c + bf845c0 commit 14816cb
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 2 deletions.
93 changes: 93 additions & 0 deletions judge-d-server/src/test/groovy/dev/hltech/dredd/SwaggerIT.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package dev.hltech.dredd

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import dev.hltech.dredd.config.BeanFactory
import dev.hltech.dredd.config.SwaggerConfig
import dev.hltech.dredd.domain.JudgeD
import dev.hltech.dredd.domain.contracts.ServiceContractsRepository
import dev.hltech.dredd.domain.environment.EnvironmentRepository
import dev.hltech.dredd.interfaces.rest.contracts.ContractsController
import dev.hltech.dredd.interfaces.rest.contracts.ContractsMapper
import dev.hltech.dredd.interfaces.rest.environment.EnvironmentController
import dev.hltech.dredd.interfaces.rest.validation.ValidationController
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.http.MediaType
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.ResultHandler
import spock.lang.Specification

import java.nio.file.Files
import java.nio.file.Paths

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get

@WebMvcTest
@ContextConfiguration(classes = [SwaggerConfig, BeanFactory, ContractsController, EnvironmentController, ValidationController])
@ActiveProfiles("test")
class SwaggerIT extends Specification {

@MockBean
private ServiceContractsRepository serviceContractsRepository

@MockBean
private ContractsMapper contractsMapper

@MockBean
private EnvironmentRepository environmentRepository

@MockBean
private JudgeD judgeD

@Autowired
private MockMvc mockMvc

@Autowired
private ObjectMapper objectMapper

def "should return 200 and swagger json file on swagger endpoint"() {
when:
def response = mockMvc.perform(get(swaggerPath()).accept(MediaType.APPLICATION_JSON))
.andReturn().getResponse()

then:
response.getStatus() == 200
response.getContentType().contains("application/json")
JsonNode responseJson = objectMapper.readTree(response.contentAsString)
responseJson.findPath("tags").size() == 3
def controllersNodes = responseJson.findPath("tags").findValues("name")
controllersNodes.size() == 3
controllersNodes.any { node ->
node.textValue() == "contracts-controller"
}
controllersNodes.any { node ->
node.textValue() == "environment-controller"
}
controllersNodes.any { node ->
node.textValue() == "validation-controller"
}
}

def "should generate swagger json"() {
given:
ResultHandler resultHandler = { r ->
def swaggerDir = new File('target/swagger')
swaggerDir.mkdirs()
def swaggerJsonFile = new File(swaggerDir, 'swagger.json')
swaggerJsonFile.createNewFile()

Files.write(Paths.get(swaggerJsonFile.absolutePath), r.getResponse().getContentAsString().getBytes('UTF-8'))
}
expect:
mockMvc.perform(get(swaggerPath()).accept(MediaType.APPLICATION_JSON))
.andDo(resultHandler)
}

private static String swaggerPath() {
"/v2/api-docs"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
class ValidationControllerIT extends Specification {

@Autowired
ObjectMapper objectMapper;
ObjectMapper objectMapper

@Autowired
ServiceContractsRepository serviceContractsRepository

@Autowired
MockMvc mockMvc;
MockMvc mockMvc

def "should return 200 when validate given all went fine"() {
given:
Expand Down

0 comments on commit 14816cb

Please sign in to comment.