Пример #1
0
    def test_parameter_matching(self):
        @self.app.route(
            match_headers('/', Accept='application/json', Test='x<int:i>'))
        def json_p(**kwargs):
            return 'JSON%s' % kwargs['i']

        @self.app.route(match_headers('/', Accept='application/json'))
        def json():
            return 'JSON'

        @self.app.route('/')
        def view():
            return 'DEFAULT'

        response = self.c.get('/', headers={})
        self.assertEqual(response.data, b'DEFAULT')

        response = self.c.get('/', headers={'Accept': 'application/json'})
        self.assertEqual(response.data, b'JSON')

        response = self.c.get('/',
                              headers={
                                  'Accept': 'application/json',
                                  'Test': 'x20'
                              })
        self.assertEqual(response.data, b'JSON20')
Пример #2
0
    def test_26(self):
        @self.app.route(
            match_headers(
                '/<int:x>', **{
                    'Cache-Control': 'public, max-age=<int:max_age>',
                    'Accept': 'text/turtle'
                }))
        def view(
            x,
            max_age,
        ):
            return json.dumps({'x': x, 'max_age': max_age})

        response = self.c.get('/23',
                              headers={
                                  'Cache-Control': 'public, max-age=30',
                                  'Accept': 'text/turtle'
                              })
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {
            'x': 23,
            'max_age': 30
        })

        response = self.c.get('/23',
                              headers={
                                  'Cache-Control': 'public, max-age=30',
                                  'Accept': 'text/xxx'
                              })
        self.assertTrue(response.status_code, 404)
Пример #3
0
    def test_19(self):
        @self.app.route(
            match_headers(
                '/test/', **{
                    'Cache-Control': 'public,[ \t]max-age=<int:max_age>',
                    'Accept': 'text/<mime>'
                }))
        def view(max_age, mime):
            return json.dumps({'max_age': max_age, 'mime': mime})

        response = self.c.get('/test/',
                              headers={
                                  'Cache-Control': 'public,\tmax-age=30',
                                  'Accept': 'text/turtle'
                              })
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {
            'max_age': 30,
            'mime': 'turtle'
        })

        response = self.c.get('/test/',
                              headers={
                                  'Cache-Control': 'public, max-age=30',
                                  'Accept': 'text/turtle'
                              })
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {
            'max_age': 30,
            'mime': 'turtle'
        })
Пример #4
0
    def test_1(self):
        @self.app.route(match_headers('/', **{'Accept': 'text/turtle'}))
        def view():
            return json.dumps({})

        response = self.c.get('/', headers={'Accept': 'text/turtle'})
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {})

        response = self.c.get('/', headers={})
        self.assertTrue(response.status_code, 404)
Пример #5
0
    def test_21(self):
        @self.app.route(match_headers('/<int:x>', **{'Accept': 'text/turtle'}))
        def view(x, ):
            return json.dumps({'x': x})

        response = self.c.get('/23', headers={'Accept': 'text/turtle'})
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {'x': 23})

        response = self.c.get('/23', headers={'Accept': 'XXX/turtle'})
        self.assertTrue(response.status_code, 404)
Пример #6
0
    def test_simple_matching(self):
        @self.app.route(match_headers('/', Accept='application/json'))
        def json():
            return 'JSON'

        @self.app.route('/')
        def view():
            return 'DEFAULT'

        response = self.c.get('/', headers={})
        self.assertEqual(response.data, b'DEFAULT')

        response = self.c.get('/', headers={'Accept': 'application/json'})
        self.assertEqual(response.data, b'JSON')
Пример #7
0
    def test_2(self):
        @self.app.route(
            match_headers('/',
                          **{'Cache-Control':
                             'public, max-age=<int:max_age>'}))
        def view(max_age):
            return json.dumps({'max_age': max_age})

        response = self.c.get('/',
                              headers={'Cache-Control': 'public, max-age=30'})
        self.assertTrue(response.status_code, 200)
        self.assertEqual(json.loads(response.data.decode()), {'max_age': 30})

        response = self.c.get('/',
                              headers={'Cache-Control': 'public, max-age=xx'})
        self.assertTrue(response.status_code, 404)
Пример #8
0
def build_get_rule(app, bound_to):
    from ldp.rule import match_headers

    def ldp_get(resource, mimetype, **kwargs):
        return app.make_response(
            (getattr(resource,
                     resource.SERIALIZED_ATTRIBUTE_MAP[mimetype]), 200, {
                         'Content-Type': mimetype
                     }))

    rule = match_headers(
        bound_to.rule,
        **{'Accept': '<any("application/ld+json","text/turtle"):mimetype>'})

    yield ((rule, bound_to.endpoint + '.ldp.get', ldp_get), {
        'methods': ('GET', ),
        'bound_to': bound_to
    })
Пример #9
0
def build_post_rule(app, bound_to):
    from ldp.rule import match_headers

    def ldp_post(resource, mimetype, **kwargs):
        path = create_contained_resource(request.url_rule.bound_to,
                                         resource,
                                         data=request.data,
                                         format=MIME_FORMAT[mimetype])
        resource.uncache()
        return app.make_response(('', 201, (('Location', path), )))

    rule = match_headers(
        bound_to.rule, **{
            'Content-Type':
            '<any("application/ld+json","text/turtle"):mimetype>'
        })

    yield ((rule, bound_to.endpoint + '.ldp.post', ldp_post), {
        'methods': ('POST', ),
        'bound_to': bound_to
    })
Пример #10
0
def build_put_rule(app, bound_to):
    from ldp.rule import match_headers

    def ldp_put(resource, mimetype, **kwargs):
        replace_resource(request.url_rule,
                         resource,
                         data=request.data,
                         format=MIME_FORMAT[mimetype])
        resource.uncache()
        return app.make_response(('', 204, ()))

    rule = match_headers(
        bound_to.rule, **{
            'Content-Type':
            '<any("application/ld+json","text/turtle"):mimetype>'
        })

    yield ((rule, bound_to.endpoint + '.ldp.put', ldp_put), {
        'methods': ('PUT', ),
        'bound_to': bound_to
    })