Skip to content

Commit

Permalink
Update to latest mockwebserver3-junit5 version
Browse files Browse the repository at this point in the history
  • Loading branch information
cuioss committed Aug 21, 2024
1 parent 5d02f6c commit 03308bf
Show file tree
Hide file tree
Showing 12 changed files with 165 additions and 205 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,30 @@
*/
package de.cuioss.portal.authentication.oauth.impl;

import static de.cuioss.tools.io.FileLoaderUtility.toStringUnchecked;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.util.List;
import java.util.concurrent.TimeUnit;

import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.core.MediaType;

import org.jetbrains.annotations.NotNull;
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;

import de.cuioss.portal.authentication.oauth.OAuthConfigKeys;
import de.cuioss.portal.core.test.mocks.configuration.PortalTestConfiguration;
import de.cuioss.tools.collect.CollectionBuilder;
import de.cuioss.tools.io.FileLoader;
import de.cuioss.tools.io.FileLoaderUtility;
import de.cuioss.tools.io.FileTypePrefix;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.core.MediaType;
import lombok.Getter;
import lombok.Setter;
import mockwebserver3.Dispatcher;
import mockwebserver3.MockResponse;
import mockwebserver3.MockWebServer;
import mockwebserver3.RecordedRequest;
import okhttp3.Headers;
import org.jetbrains.annotations.NotNull;
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;

import java.util.List;
import java.util.concurrent.TimeUnit;

import static de.cuioss.tools.io.FileLoaderUtility.toStringUnchecked;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class OIDCWellKnownDispatcher extends Dispatcher {

Expand Down Expand Up @@ -80,12 +79,8 @@ public class OIDCWellKnownDispatcher extends Dispatcher {
private boolean simulateInvalidOidcConfig = false;

public void reset() {
tokenResult = new MockResponse().setResponseCode(HttpServletResponse.SC_OK)
.addHeader("Content-Type", MediaType.APPLICATION_JSON)
.setBody(toStringUnchecked(TOKEN));
userInfoResult = new MockResponse().setResponseCode(HttpServletResponse.SC_OK)
.addHeader("Content-Type", MediaType.APPLICATION_JSON)
.setBody(toStringUnchecked(USER_INFO));
tokenResult = new MockResponse(HttpServletResponse.SC_OK, Headers.of("Content-Type", MediaType.APPLICATION_JSON), toStringUnchecked(TOKEN));
userInfoResult = new MockResponse(HttpServletResponse.SC_OK, Headers.of("Content-Type", MediaType.APPLICATION_JSON), toStringUnchecked(USER_INFO));
}

public void assertAuthorizeURL(String actualUrl, String... parts) {
Expand Down Expand Up @@ -138,20 +133,19 @@ private boolean isOidcDiscoveryPath(String path) {

if (null == request.getPath()) {
LOGGER.warn(() -> "Unable to serve request " + request.getPath());
new MockResponse().setResponseCode(HttpServletResponse.SC_NOT_FOUND);
new MockResponse(HttpServletResponse.SC_NOT_FOUND);
}

return switch (request.getPath()) {
case "/" + OIDC_DISCOVERY_PATH -> new MockResponse().setResponseCode(HttpServletResponse.SC_OK)
.addHeader("Content-Type", MediaType.APPLICATION_JSON)
.setBody(simulateInvalidOidcConfig
? toStringUnchecked(INVALID_CONFIGURATION).replaceAll("5602", currentPort)
: toStringUnchecked(CONFIGURATION).replaceAll("5602", currentPort));
case "/" + OIDC_DISCOVERY_PATH ->
new MockResponse(HttpServletResponse.SC_OK, Headers.of("Content-Type", MediaType.APPLICATION_JSON), simulateInvalidOidcConfig
? toStringUnchecked(INVALID_CONFIGURATION).replaceAll("5602", currentPort)
: toStringUnchecked(CONFIGURATION).replaceAll("5602", currentPort));
case "/auth/realms/master/protocol/openid-connect/userinfo" -> userInfoResult;
case "/auth/realms/master/protocol/openid-connect/token" -> tokenResult;
default -> {
LOGGER.warn(() -> "Unable to serve request " + request.getPath());
yield new MockResponse().setResponseCode(HttpServletResponse.SC_NOT_FOUND);
yield new MockResponse(HttpServletResponse.SC_NOT_FOUND);
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,18 @@ public Dispatcher getDispatcher() {

@Override
public MockResponse dispatch(final @NonNull @NotNull RecordedRequest request) {
if ("/success/test".equals(request.getPath())) {
return new MockResponse().setResponseCode(HttpServletResponse.SC_OK);
if ("/success/test" .equals(request.getPath())) {
return new MockResponse(HttpServletResponse.SC_OK);
}
return new MockResponse().setResponseCode(HttpServletResponse.SC_NOT_FOUND);
return new MockResponse(HttpServletResponse.SC_NOT_FOUND);
}
};
}

@Test
void shouldProviderAuthorizationHeader() throws InterruptedException {
final var underTest = new CuiRestClientBuilder(log).url(mockWebServer.url("success").toString())
.bearerAuthToken("abcToken");
.bearerAuthToken("abcToken");
underTest.build(CuiRestClientBuilderTest.TestResource.class).test();
var request = mockWebServer.takeRequest();
var authHeader = request.getHeaders().values("Authorization");
Expand All @@ -86,12 +86,12 @@ void shouldProviderAuthorizationHeader() throws InterruptedException {
@Test
void shouldProviderAuthorizationHeaderWithInvalidValues() throws InterruptedException {
new CuiRestClientBuilder(log).url(mockWebServer.url("success").toString()).bearerAuthToken(null)
.build(CuiRestClientBuilderTest.TestResource.class).test();
.build(CuiRestClientBuilderTest.TestResource.class).test();
var request = mockWebServer.takeRequest();
var authHeader = request.getHeaders().values("Authorization");
assertTrue(authHeader.isEmpty());
new CuiRestClientBuilder(log).url(mockWebServer.url("success").toString()).bearerAuthToken("123\ntest: test2")
.build(CuiRestClientBuilderTest.TestResource.class).test();
.build(CuiRestClientBuilderTest.TestResource.class).test();
request = mockWebServer.takeRequest();
authHeader = request.getHeaders().values("Authorization");
assertFalse(authHeader.isEmpty());
Expand Down
Loading

0 comments on commit 03308bf

Please sign in to comment.