Skip to content

Commit f8aa2e4

Browse files
chris-schuetzesmou
authored andcommitted
Add support for swagger-ui.url property
1 parent 992065f commit f8aa2e4

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/ui/AbstractSwaggerIndexTransformer.java

+14
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,16 @@ protected String overwriteSwaggerDefaultUrl(String html) {
135135
return html.replace(Constants.SWAGGER_UI_DEFAULT_URL, StringUtils.EMPTY);
136136
}
137137

138+
/**
139+
* Setting the url configured with swagger ui properties
140+
*
141+
* @param html
142+
* @return modifed html
143+
*/
144+
protected String setConfiguredApiDocsUrl(String html){
145+
return html.replace(Constants.SWAGGER_UI_DEFAULT_URL, swaggerUiConfig.getUrl());
146+
}
147+
138148
/**
139149
* Default transformations string.
140150
*
@@ -167,6 +177,10 @@ else if (swaggerUiConfig.getCsrf().isUseSessionStorage())
167177
if (swaggerUiConfig.isDisableSwaggerDefaultUrl())
168178
html = overwriteSwaggerDefaultUrl(html);
169179

180+
if(StringUtils.isNotEmpty(swaggerUiConfig.getUrl())){
181+
html = setConfiguredApiDocsUrl(html);
182+
}
183+
170184
return html;
171185
}
172186

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.springdoc.ui;
2+
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.ExtendWith;
6+
import org.mockito.Mock;
7+
import org.mockito.junit.jupiter.MockitoExtension;
8+
import org.springdoc.core.properties.SwaggerUiConfigParameters;
9+
import org.springdoc.core.properties.SwaggerUiConfigProperties;
10+
import org.springdoc.core.properties.SwaggerUiOAuthProperties;
11+
import org.springdoc.core.providers.ObjectMapperProvider;
12+
13+
import java.io.ByteArrayInputStream;
14+
import java.io.IOException;
15+
import java.io.InputStream;
16+
17+
import static org.hamcrest.MatcherAssert.assertThat;
18+
import static org.hamcrest.Matchers.containsString;
19+
20+
@ExtendWith(MockitoExtension.class)
21+
public class AbstractSwaggerIndexTransformerTest {
22+
23+
private SwaggerUiConfigProperties swaggerUiConfig;
24+
@Mock
25+
private SwaggerUiOAuthProperties swaggerUiOAuthProperties;
26+
@Mock
27+
private SwaggerUiConfigParameters swaggerUiConfigParameters;
28+
@Mock
29+
private ObjectMapperProvider objectMapperProvider;
30+
31+
private AbstractSwaggerIndexTransformer underTest;
32+
33+
private final String swaggerInitJs = "window.onload = function() {\n" +
34+
"\n" +
35+
" window.ui = SwaggerUIBundle({\n" +
36+
" url: \"https://petstore.swagger.io/v2/swagger.json\",\n" +
37+
" dom_id: '#swagger-ui',\n" +
38+
" deepLinking: true,\n" +
39+
" presets: [\n" +
40+
" SwaggerUIBundle.presets.apis,\n" +
41+
" SwaggerUIStandalonePreset\n" +
42+
" ],\n" +
43+
" plugins: [\n" +
44+
" SwaggerUIBundle.plugins.DownloadUrl\n" +
45+
" ],\n" +
46+
" layout: \"StandaloneLayout\"\n" +
47+
" });\n" +
48+
"\n" +
49+
" //</editor-fold>\n" +
50+
"};";
51+
private final InputStream is = new ByteArrayInputStream(swaggerInitJs.getBytes());
52+
53+
private final String apiDocUrl = "http://test.springdoc.com/apidoc";
54+
55+
@BeforeEach
56+
public void setup(){
57+
swaggerUiConfig = new SwaggerUiConfigProperties();
58+
swaggerUiConfig.setUrl(apiDocUrl);
59+
underTest = new AbstractSwaggerIndexTransformer(swaggerUiConfig, swaggerUiOAuthProperties, swaggerUiConfigParameters, objectMapperProvider);
60+
61+
}
62+
63+
@Test
64+
void setApiDocUrlCorrectly() throws IOException {
65+
var html = underTest.defaultTransformations(is);
66+
assertThat(html, containsString(apiDocUrl));
67+
}
68+
}

0 commit comments

Comments
 (0)