import 'package:angel_framework/angel_framework.dart'; import 'package:angel_html/angel_html.dart'; import 'package:angel_test/angel_test.dart'; import 'package:html_builder/elements.dart'; import 'package:html_builder/html_builder.dart'; import 'package:test/test.dart'; main() { Angel app; TestClient client; setUp(() async { app = new Angel(); app.before.add(renderHtml()); app.get('/html', () { return html(c: [ head(c: [ title(c: [text('ok')]) ]) ]); }); app .chain(renderHtml( enforceAcceptHeader: true, renderer: new StringRenderer(doctype: null, pretty: false))) .get('/strict', () { return div(c: [text('strict')]); }); client = await connectTo(app); }); tearDown(() => client.close()); test('sets content type and body', () async { var response = await client.get('/html'); print('Response: ${response.body}'); expect( response, allOf(hasContentType('text/html'), hasBody('ok'))); }); group('enforce accept header', () { test('sends if correct accept or wildcard', () async { var response = await client.get('/strict', headers: {'accept': '*/*'}); print('Response: ${response.body}'); expect(response, allOf(hasContentType('text/html'), hasBody('
strict
'))); response = await client.get('/strict', headers: {'accept': 'text/html,application/json,text/xml'}); print('Response: ${response.body}'); expect(response, allOf(hasContentType('text/html'), hasBody('
strict
'))); }); test('throws if incorrect or no accept', () async { var response = await client.get('/strict'); print('Response: ${response.body}'); expect(response, isAngelHttpException(statusCode: 406, message: '406 Not Acceptable')); response = await client .get('/strict', headers: {'accept': 'application/json,text/xml'}); print('Response: ${response.body}'); expect(response, isAngelHttpException(statusCode: 406, message: '406 Not Acceptable')); }); }); }