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')
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)
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' })
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)
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)
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')
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)
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 })
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 })
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 })