@@ -429,10 +429,10 @@ impl Parse for ExportAppInput {
429429}
430430
431431/// Swagger UI HTML template. Contains `{}` format placeholder for the OpenAPI spec JSON.
432- const SWAGGER_UI_HTML : & str = r#"<!DOCTYPE html><html lang=\ "en\ "><head><meta charset=\ "UTF-8\ "><title>Swagger UI</title><link rel=\ "stylesheet\ " href=\ "https://unpkg.com/swagger-ui-dist/swagger-ui.css\ " /></head><body style=\ "margin: 0; padding: 0;\ "><div id=\ "swagger-ui\ "></div><script src=\ "https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js\ "></script><script src=\ "https://unpkg.com/swagger-ui-dist/swagger-ui-standalone-preset.js\ "></script><script>const openapiSpec = {};window.onload = () => {{ SwaggerUIBundle({{ spec: openapiSpec, dom_id: \"\ #swagger-ui\ ", presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset], layout: \ "StandaloneLayout\ " }}); }};</script></body></html>"# ;
432+ const SWAGGER_UI_HTML : & str = r## "<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Swagger UI</title><link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist/swagger-ui.css" /></head><body style="margin: 0; padding: 0;"><div id="swagger-ui"></div><script src="https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js"></script><script src="https://unpkg.com/swagger-ui-dist/swagger-ui-standalone-preset.js"></script><script>const openapiSpec = {};window.onload = () => {{ SwaggerUIBundle({{ spec: openapiSpec, dom_id: " #swagger-ui", presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset], layout: "StandaloneLayout" }}); }};</script></body></html>"# # ;
433433
434434/// ReDoc HTML template. Contains `{}` format placeholder for the OpenAPI spec JSON.
435- const REDOC_HTML : & str = r#"<!DOCTYPE html><html lang=\ "en\ "><head><meta charset=\ "UTF-8\ "><title>ReDoc</title><meta name=\ "viewport\ " content=\ "width=device-width, initial-scale=1\ "><style>body {{ margin: 0; padding: 0; }}</style><link rel=\ "stylesheet\ " href=\ "https://unpkg.com/redoc/bundles/redoc.standalone.css\ " /></head><body><div id=\ "redoc-container\ "></div><script src=\ "https://unpkg.com/redoc/bundles/redoc.standalone.js\ "></script><script>const openapiSpec = {};Redoc.init(openapiSpec, {{}}, document.getElementById(\ "redoc-container\ "));</script></body></html>"# ;
435+ const REDOC_HTML : & str = r#"<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>ReDoc</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {{ margin: 0; padding: 0; }}</style><link rel="stylesheet" href="https://unpkg.com/redoc/bundles/redoc.standalone.css" /></head><body><div id="redoc-container"></div><script src="https://unpkg.com/redoc/bundles/redoc.standalone.js"></script><script>const openapiSpec = {};Redoc.init(openapiSpec, {{}}, document.getElementById("redoc-container"));</script></body></html>"# ;
436436
437437/// Generate a documentation route handler (Swagger UI or ReDoc).
438438///
@@ -1266,6 +1266,37 @@ pub fn get_users() -> String {
12661266 assert ! ( code. contains( "__VESPERA_SPEC" ) ) ;
12671267 }
12681268
1269+ #[ test]
1270+ fn test_swagger_html_template_renders_valid_quotes ( ) {
1271+ assert ! (
1272+ !SWAGGER_UI_HTML . contains( r#"\""# ) ,
1273+ "Swagger template should not contain literal backslash-quotes: {SWAGGER_UI_HTML}"
1274+ ) ;
1275+ assert ! (
1276+ SWAGGER_UI_HTML . contains( r#"href="https://unpkg.com/swagger-ui-dist/swagger-ui.css""# )
1277+ ) ;
1278+ assert ! (
1279+ SWAGGER_UI_HTML
1280+ . contains( r#"src="https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js""# )
1281+ ) ;
1282+ assert ! ( SWAGGER_UI_HTML . contains( r##"dom_id: "#swagger-ui""## ) ) ;
1283+ }
1284+
1285+ #[ test]
1286+ fn test_redoc_html_template_renders_valid_quotes ( ) {
1287+ assert ! (
1288+ !REDOC_HTML . contains( r#"\""# ) ,
1289+ "ReDoc template should not contain literal backslash-quotes: {REDOC_HTML}"
1290+ ) ;
1291+ assert ! (
1292+ REDOC_HTML . contains( r#"href="https://unpkg.com/redoc/bundles/redoc.standalone.css""# )
1293+ ) ;
1294+ assert ! (
1295+ REDOC_HTML . contains( r#"src="https://unpkg.com/redoc/bundles/redoc.standalone.js""# )
1296+ ) ;
1297+ assert ! ( REDOC_HTML . contains( r#"document.getElementById("redoc-container")"# ) ) ;
1298+ }
1299+
12691300 #[ test]
12701301 fn test_parse_server_struct_url_only ( ) {
12711302 // Test server struct parsing via AutoRouterInput
0 commit comments