Skip to content

Commit

Permalink
bugfix: get securitySchemes in openapi 3 APIs (spec-first#712)
Browse files Browse the repository at this point in the history
  • Loading branch information
dtkav authored and jmcs committed Oct 5, 2018
1 parent e83bd14 commit 069c59b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 13 deletions.
13 changes: 9 additions & 4 deletions connexion/apis/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,17 @@ def __init__(self, specification, base_path=None, arguments=None,
# API calls.
self.consumes = self.specification.get('consumes', ['application/json']) # type: List[str]

self.security = self.specification.get('security')
self.security_definitions = self.specification.get('securityDefinitions', dict())
logger.debug('Security Definitions: %s', self.security_definitions)

self.definitions = self.specification.get('definitions', {})
self.components = self.specification.get('components', {})

self.security = self.specification.get('security', dict())
_security_schemes = self.components.get('securitySchemes', dict())
self.security_definitions = self.specification.get(
'securityDefinitions',
_security_schemes
)
logger.debug('Security Definitions: %s', self.security_definitions)

self.parameter_definitions = self.specification.get('parameters', {})
self.response_definitions = self.specification.get('responses', {})

Expand Down
10 changes: 2 additions & 8 deletions tests/api/test_secure_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,8 @@
from connexion import FlaskApp


def test_security_over_nonexistent_endpoints(oauth_requests, secure_api_spec_dir):
options = {"swagger_ui": False}
app1 = FlaskApp(__name__, port=5001, specification_dir=secure_api_spec_dir,
options=options, debug=True, auth_all_paths=True)
app1.add_api('swagger.yaml')
assert app1.port == 5001

app_client = app1.app.test_client()
def test_security_over_nonexistent_endpoints(oauth_requests, secure_api_app):
app_client = secure_api_app.app.test_client()
headers = {"Authorization": "Bearer 300"}
get_inexistent_endpoint = app_client.get('/v1.0/does-not-exist-invalid-token',
headers=headers) # type: flask.Response
Expand Down
4 changes: 3 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ def secure_endpoint_app(request):

@pytest.fixture(scope="session", params=SPECS)
def secure_api_app(request):
return build_app_from_fixture('secure_api', request.param)
options = {"swagger_ui": False}
return build_app_from_fixture('secure_api', request.param,
options=options, auth_all_paths=True)


@pytest.fixture(scope="session", params=SPECS)
Expand Down

0 comments on commit 069c59b

Please sign in to comment.