def test_listed_default_security(self): service = Service("IceCream", "/icecream/{flavour}") @service.get() def view_get(self, request): return service swagger = CorniceSwagger([service]) swagger.swagger = { 'securityDefinitions': { 'basicAuth': { 'type': 'basic' } } } swagger.default_security = [{'basicAuth': []}] spec = swagger.generate() validate(spec) security = spec['paths']['/icecream/{flavour}']['get']['security'] self.assertEquals(security, [{'basicAuth': []}])
def generate_api_schema(swagger_base_spec): # type: (Dict[str, Union[str, List[str]]]) -> JSON """ Return JSON Swagger specifications of Cowbird REST API. Uses Cornice Services and Schemas to return swagger specification. :param swagger_base_spec: dictionary that specifies the 'host' and list of HTTP 'schemes' to employ. """ generator = CorniceSwagger(get_services()) # function docstrings are used to create the route's summary in Swagger-UI generator.summary_docstrings = True generator.default_security = get_security swagger_base_spec.update(SecurityDefinitionsAPI) generator.swagger = swagger_base_spec json_api_spec = generator.generate(title=TitleAPI, version=__meta__.__version__, info=InfoAPI) for tag in json_api_spec["tags"]: tag["description"] = TAG_DESCRIPTIONS[tag["name"]] return json_api_spec
def test_callable_default_security(self): def get_security(service, method): definitions = service.definitions for definition in definitions: met, view, args = definition if met == method: break if 'security' in args: return [{'basicAuth': []}] else: return [] service = Service("IceCream", "/icecream/{flavour}") @service.get() def view_get(self, request): return service @service.post(security='foo') def view_post(self, request): return service swagger = CorniceSwagger([service]) swagger.swagger = { 'securityDefinitions': { 'basicAuth': { 'type': 'basic' } } } swagger.default_security = get_security spec = swagger.generate() validate(spec) security = spec['paths']['/icecream/{flavour}']['post']['security'] self.assertEquals(security, [{'basicAuth': []}]) security = spec['paths']['/icecream/{flavour}']['get']['security'] self.assertEquals(security, [])