Skip to content

Commit

Permalink
spring
Browse files Browse the repository at this point in the history
  • Loading branch information
erikgb committed Feb 19, 2023
1 parent 23ee17c commit eae5a76
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 39 deletions.
5 changes: 0 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -588,11 +588,6 @@
<version>3.8.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-jre8</artifactId>
<version>2.35.0</version>
</dependency>
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-junit-jupiter-no-dependencies</artifactId>
Expand Down
4 changes: 2 additions & 2 deletions spring-components/rdf4j-spring/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-jre8</artifactId>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-junit-jupiter-no-dependencies</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,61 +10,74 @@
*******************************************************************************/
package org.eclipse.rdf4j.spring.repository.remote;

import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
import static com.github.tomakehurst.wiremock.client.WireMock.exactly;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockserver.model.HttpRequest.request;
import static org.mockserver.model.HttpResponse.response;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

import org.apache.commons.io.FileUtils;
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.spring.support.ConfigurationException;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockserver.client.MockServerClient;
import org.mockserver.junit.jupiter.MockServerExtension;
import org.mockserver.matchers.Times;
import org.mockserver.model.MediaType;
import org.mockserver.model.NottableString;
import org.mockserver.verify.VerificationTimes;

import com.github.tomakehurst.wiremock.WireMockServer;

@ExtendWith(MockServerExtension.class)
class RemoteRepositoryConfigTest {

private final RemoteRepositoryConfig remoteRepositoryConfig = new RemoteRepositoryConfig();
private static final WireMockServer wireMockServer = new WireMockServer(options()
.dynamicPort()
.usingFilesUnderClasspath("src/test/resources/"));

@BeforeAll
static void setUp() {
wireMockServer.start();
wireMockServer.stubFor(get(urlEqualTo("/repositories"))
.willReturn(aResponse().withStatus(200)
.withHeader("Content-Type", "application/sparql-results+json;charset=UTF-8")
.withBodyFile("repositories.srj")));
@BeforeEach
void setUp(MockServerClient client) {
client.when(
request()
.withMethod("GET")
.withPath("/repositories"),
Times.once()
)
.respond(
response()
.withContentType(MediaType.parse("application/sparql-results+json;charset=UTF-8"))
.withBody(readFileToString("repositories.srj"))
);
}

@Test
void getRemoteRepository() {
void getRemoteRepository(MockServerClient client) {
// Arrange
RemoteRepositoryProperties properties = new RemoteRepositoryProperties();
properties.setManagerUrl(wireMockServer.baseUrl());
properties.setManagerUrl("http://localhost:" + client.getPort());
properties.setName("test-repo");

// Act
Repository repository = remoteRepositoryConfig.getRemoteRepository(properties);

// Assert
assertThat(repository).isNotNull();
wireMockServer.verify(exactly(1), getRequestedFor(urlEqualTo("/repositories"))
.withoutHeader("Authorization"));
client.verify(
request()
.withMethod("GET")
.withPath("/repositories")
.withHeader(NottableString.not("Authorization")),
VerificationTimes.once()
);
}

@Test
void getRemoteRepositoryWithUsernameAndPassword() {
void getRemoteRepositoryWithUsernameAndPassword(MockServerClient client) {
// Arrange
RemoteRepositoryProperties properties = new RemoteRepositoryProperties();
properties.setManagerUrl(wireMockServer.baseUrl());
properties.setManagerUrl("http://localhost:" + client.getPort());
properties.setName("test-repo");
properties.setUsername("admin");
properties.setPassword("1234");
Expand All @@ -74,8 +87,13 @@ void getRemoteRepositoryWithUsernameAndPassword() {

// Assert
assertThat(repository).isNotNull();
wireMockServer.verify(exactly(1), getRequestedFor(urlEqualTo("/repositories"))
.withHeader("Authorization", equalTo("Basic YWRtaW46MTIzNA==")));
client.verify(
request()
.withMethod("GET")
.withPath("/repositories")
.withHeader("Authorization", "Basic YWRtaW46MTIzNA=="),
VerificationTimes.once()
);
}

@Test
Expand All @@ -90,8 +108,13 @@ void getRemoteRepository_error() {
.isThrownBy(() -> remoteRepositoryConfig.getRemoteRepository(properties));
}

@AfterAll
static void tearDown() {
wireMockServer.stop();
private String readFileToString(String fileName) {
try {
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(Objects.requireNonNull(classLoader.getResource("__files/" + fileName)).getFile());
return FileUtils.readFileToString(file, "UTF-8");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

0 comments on commit eae5a76

Please sign in to comment.