Skip to content

Commit 7799b3b

Browse files
committed
oauth2 redirect url calculated incorrectly when springdoc.swagger-ui.path=/. Fixes #1035
1 parent fd1043e commit 7799b3b

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerWelcomeCommon.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ protected void calculateOauth2RedirectUrl(UriComponentsBuilder uriComponentsBuil
108108
private String fromCurrentContextPath(ServerHttpRequest request) {
109109
String contextPath = request.getPath().contextPath().value();
110110
String url = UriComponentsBuilder.fromHttpRequest(request).toUriString();
111-
url = url.replace(request.getPath().toString(), "");
111+
url = url.replace(request.getPath().toString(), "/");
112112
buildConfigUrl(contextPath, UriComponentsBuilder.fromUriString(url));
113113
return contextPath;
114114
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
*
3+
* * Copyright 2019-2020 the original author or authors.
4+
* *
5+
* * Licensed under the Apache License, Version 2.0 (the "License");
6+
* * you may not use this file except in compliance with the License.
7+
* * You may obtain a copy of the License at
8+
* *
9+
* * https://www.apache.org/licenses/LICENSE-2.0
10+
* *
11+
* * Unless required by applicable law or agreed to in writing, software
12+
* * distributed under the License is distributed on an "AS IS" BASIS,
13+
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* * See the License for the specific language governing permissions and
15+
* * limitations under the License.
16+
*
17+
*/
18+
19+
package test.org.springdoc.ui.app4;
20+
21+
import org.hamcrest.Matchers;
22+
import org.junit.jupiter.api.Test;
23+
import test.org.springdoc.ui.AbstractSpringDocTest;
24+
25+
import org.springframework.boot.autoconfigure.SpringBootApplication;
26+
import org.springframework.test.context.TestPropertySource;
27+
import org.springframework.test.web.reactive.server.WebTestClient;
28+
29+
@TestPropertySource(properties = {
30+
"springdoc.swagger-ui.path=/"
31+
})
32+
public class SpringDocOauthBasePathsTest extends AbstractSpringDocTest {
33+
34+
@Test
35+
public void test_oauth2_default_base_path() throws Exception {
36+
37+
WebTestClient.ResponseSpec responseSpec = webTestClient.get().uri("/").exchange()
38+
.expectStatus().isTemporaryRedirect();
39+
responseSpec.expectHeader()
40+
.value("Location", Matchers.is("/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config"));
41+
42+
webTestClient.get().uri("/v3/api-docs/swagger-config").exchange()
43+
.expectStatus().isOk().expectBody()
44+
.jsonPath("$.validatorUrl").isEqualTo("")
45+
.jsonPath("$.oauth2RedirectUrl").isEqualTo("/webjars/swagger-ui/oauth2-redirect.html");
46+
47+
}
48+
49+
50+
51+
@SpringBootApplication
52+
static class SpringDocTestApp {}
53+
}

0 commit comments

Comments
 (0)