@@ -318,5 +318,177 @@ public void InvalidHostShouldYieldError()
318318 Format = OpenApiConstants . Yaml
319319 } , result . Diagnostic ) ;
320320 }
321+
322+ [ Fact ]
323+ public void BaseUrlWithPortShouldPreservePort ( )
324+ {
325+ var input =
326+ """
327+ swagger: 2.0
328+ info:
329+ title: test
330+ version: 1.0.0
331+ paths: {}
332+ """ ;
333+ var settings = new OpenApiReaderSettings
334+ {
335+ BaseUrl = new ( "http://demo.testfire.net:8080" )
336+ } ;
337+ settings . AddYamlReader ( ) ;
338+
339+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
340+
341+ var server = result . Document . Servers . First ( ) ;
342+ Assert . Single ( result . Document . Servers ) ;
343+ Assert . Equal ( "http://demo.testfire.net:8080" , server . Url ) ;
344+ }
345+
346+ [ Fact ]
347+ public void BaseUrlWithPortAndPathShouldPreservePort ( )
348+ {
349+ var input =
350+ """
351+ swagger: 2.0
352+ info:
353+ title: test
354+ version: 1.0.0
355+ paths: {}
356+ """ ;
357+ var settings = new OpenApiReaderSettings
358+ {
359+ BaseUrl = new ( "http://demo.testfire.net:8080/swagger/properties.json" )
360+ } ;
361+ settings . AddYamlReader ( ) ;
362+
363+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
364+
365+ var server = result . Document . Servers . First ( ) ;
366+ Assert . Single ( result . Document . Servers ) ;
367+ Assert . Equal ( "http://demo.testfire.net:8080/swagger/properties.json" , server . Url ) ;
368+ }
369+
370+ [ Fact ]
371+ public void BaseUrlWithNonStandardPortShouldPreservePort ( )
372+ {
373+ var input =
374+ """
375+ swagger: 2.0
376+ info:
377+ title: test
378+ version: 1.0.0
379+ paths: {}
380+ """ ;
381+ var settings = new OpenApiReaderSettings
382+ {
383+ BaseUrl = new ( "https://api.example.com:9443/v1/openapi.yaml" )
384+ } ;
385+ settings . AddYamlReader ( ) ;
386+
387+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
388+
389+ var server = result . Document . Servers . First ( ) ;
390+ Assert . Single ( result . Document . Servers ) ;
391+ Assert . Equal ( "https://api.example.com:9443/v1/openapi.yaml" , server . Url ) ;
392+ }
393+
394+ [ Fact ]
395+ public void BaseUrlWithStandardHttpsPortShouldRemovePort ( )
396+ {
397+ var input =
398+ """
399+ swagger: 2.0
400+ info:
401+ title: test
402+ version: 1.0.0
403+ paths: {}
404+ """ ;
405+ var settings = new OpenApiReaderSettings
406+ {
407+ BaseUrl = new ( "https://foo.bar:443/api" )
408+ } ;
409+ settings . AddYamlReader ( ) ;
410+
411+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
412+
413+ var server = result . Document . Servers . First ( ) ;
414+ Assert . Single ( result . Document . Servers ) ;
415+ Assert . Equal ( "https://foo.bar/api" , server . Url ) ;
416+ }
417+
418+ [ Fact ]
419+ public void BaseUrlWithStandardHttpPortShouldRemovePort ( )
420+ {
421+ var input =
422+ """
423+ swagger: 2.0
424+ info:
425+ title: test
426+ version: 1.0.0
427+ paths: {}
428+ """ ;
429+ var settings = new OpenApiReaderSettings
430+ {
431+ BaseUrl = new ( "http://foo.bar:80/api" )
432+ } ;
433+ settings . AddYamlReader ( ) ;
434+
435+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
436+
437+ var server = result . Document . Servers . First ( ) ;
438+ Assert . Single ( result . Document . Servers ) ;
439+ Assert . Equal ( "http://foo.bar/api" , server . Url ) ;
440+ }
441+
442+ [ Fact ]
443+ public void HostWithStandardHttpsPortShouldRemovePort ( )
444+ {
445+ var input =
446+ """
447+ swagger: 2.0
448+ info:
449+ title: test
450+ version: 1.0.0
451+ host: foo.bar:443
452+ schemes:
453+ - https
454+ paths: {}
455+ """ ;
456+ var settings = new OpenApiReaderSettings
457+ {
458+ } ;
459+ settings . AddYamlReader ( ) ;
460+
461+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
462+
463+ var server = result . Document . Servers . First ( ) ;
464+ Assert . Single ( result . Document . Servers ) ;
465+ Assert . Equal ( "https://foo.bar" , server . Url ) ;
466+ }
467+
468+ [ Fact ]
469+ public void HostWithStandardHttpPortShouldRemovePort ( )
470+ {
471+ var input =
472+ """
473+ swagger: 2.0
474+ info:
475+ title: test
476+ version: 1.0.0
477+ host: foo.bar:80
478+ schemes:
479+ - http
480+ paths: {}
481+ """ ;
482+ var settings = new OpenApiReaderSettings
483+ {
484+ } ;
485+ settings . AddYamlReader ( ) ;
486+
487+ var result = OpenApiDocument . Parse ( input , "yaml" , settings ) ;
488+
489+ var server = result . Document . Servers . First ( ) ;
490+ Assert . Single ( result . Document . Servers ) ;
491+ Assert . Equal ( "http://foo.bar" , server . Url ) ;
492+ }
321493 }
322494}
0 commit comments