Ich habe versucht, Betamax v2.0.0-alpha-1 zu konfigurieren, um HTTP (S) -Aufrufe von meinen Spock-Tests nachzuahmen. Anrufe an Nicht-SSL-Sites arbeiten, aber ein Anruf an eine HTTPS-Site führt die folgende Ausnahme:Wie konfiguriere ich Betamax, um SSL für meine Spock-Tests zu verwenden?
javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Ich habe den Code unten auf das unten gezeigt gekocht und groovy BetamaxTestSpec.groovy
Aufruf sollten Sie die Ausnahme geben. Wie Sie im Code sehen können, verwende ich die Jersey-Client-Bibliothek.
Gist: https://gist.github.com/dedickinson/6ad96679a15b24b2e3d3
Code:
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('software.betamax:betamax-junit:2.0.0-alpha-1')
@Grab('org.glassfish.jersey.core:jersey-client:2.22.1')
import org.junit.Rule
import software.betamax.ProxyConfiguration
import software.betamax.TapeMode
import software.betamax.junit.Betamax
import software.betamax.junit.RecorderRule
import spock.lang.Specification
import javax.ws.rs.client.ClientBuilder
import javax.ws.rs.core.MediaType
import groovy.json.JsonSlurper
class BetamaxTestSpec extends Specification {
@Rule
RecorderRule recorderRule = new RecorderRule(ProxyConfiguration.builder()
.sslEnabled(true)
.build())
@Betamax(tape = 'jCenterKeywordQuery.tape', mode = TapeMode.WRITE_ONLY)
def "Test basic keyword query with JCenter"() {
given:
def searcher = new Searcher()
def result = searcher.searchJCenter('groovy*')
expect:
1 == 1
}
@Betamax(tape = 'mvnKeywordQuery.tape', mode = TapeMode.WRITE_ONLY)
def "Test basic keyword query with Maven Central"() {
given:
def searcher = new Searcher()
def result = searcher.searchMavenCentral('groovy')
expect:
1 == 1
}
class Searcher {
def searchJCenter(qry) {
new JsonSlurper().parseText ClientBuilder.newClient().
target('https://api.bintray.com/search/packages/maven/'.toURI()).
queryParam('q', qry).
request(MediaType.APPLICATION_JSON_TYPE).get(String)
}
def searchMavenCentral(qry) {
new JsonSlurper().parseText ClientBuilder.newClient().
target('http://search.maven.org/solrsearch/select'.toURI()).
queryParam('q', qry).
queryParam('rows', 20).
queryParam('wt', 'json').
request().
get(String)
}
}
}
Wenn er gestartet wird, werden Sie zwei Dateien erstellt bemerken: „littleproxy_cert“ und „littleproxy_keystore.jks“. Möglicherweise muss ich dieses Zertifikat einrichten. – Duncan