Esempio n. 1
0
    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': []}])
Esempio n. 2
0
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
Esempio n. 3
0
    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, [])