From ca2a112a8a65282399cf2b5dc18eeac13da90d37 Mon Sep 17 00:00:00 2001 From: Daniel Grossmann-Kavanagh Date: Thu, 3 May 2018 00:26:57 -0700 Subject: [PATCH] fix: handle empty servers list in oas3 spec when getting baseUrl --- src/execute/index.js | 4 ++-- test/oas3/execute/main.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/execute/index.js b/src/execute/index.js index 0a33aae1e..6f1a98ddc 100755 --- a/src/execute/index.js +++ b/src/execute/index.js @@ -270,7 +270,7 @@ function oas3BaseUrl({spec, pathName, method, server, contextUrl, serverVariable let selectedServerUrl = '' let selectedServerObj = null - if (server && servers) { + if (server && servers && servers.length) { const serverUrls = servers.map(srv => srv.url) if (serverUrls.indexOf(server) > -1) { @@ -279,7 +279,7 @@ function oas3BaseUrl({spec, pathName, method, server, contextUrl, serverVariable } } - if (!selectedServerUrl && servers) { + if (!selectedServerUrl && servers && servers.length) { // default to the first server if we don't have one by now selectedServerUrl = servers[0].url selectedServerObj = servers[0] diff --git a/test/oas3/execute/main.js b/test/oas3/execute/main.js index 6c8893184..233445187 100644 --- a/test/oas3/execute/main.js +++ b/test/oas3/execute/main.js @@ -755,6 +755,20 @@ describe('buildRequest - OpenAPI Specification 3.0', function () { expect(res).toEqual('http://google.com') }) + it('should fall back to contextUrls if servers list is empty', function () { + const spec = { + openapi: '3.0.0', + servers: [] + } + + const res = baseUrl({ + spec, + server: 'http://some-invalid-server.com/', + contextUrl: 'http://google.com/' + }) + + expect(res).toEqual('http://google.com') + }) it('should create a relative url based on a relative server if no contextUrl is available', function () { const spec = { openapi: '3.0.0',