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'; void main() { Angel app; late TestClient client; setUp(() async { app = Angel(); app.fallback(renderHtml()); app.get('/html', (req, res) { return html(c: [ head(c: [ title(c: [text('ok')]) ]) ]); }); app.get( '/strict', chain([ renderHtml( enforceAcceptHeader: true, renderer: StringRenderer( //doctype: null, pretty: false, ), ), (req, res) { return div(c: [text('strict')]); }, ]), ); client = await connectTo(app); }); tearDown(() => client.close()); test('sets content type and body', () async { var response = await client.get(Uri.parse('/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(Uri.parse('/strict'), headers: {'accept': '*/*'}); print('Response: ${response.body}'); expect(response, allOf(hasContentType('text/html'), hasBody('
strict
'))); response = await client.get(Uri.parse('/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(Uri.parse('/strict')); print('Response: ${response.statusCode} ${response.body}'); expect(response, hasStatus(406)); response = await client.get(Uri.parse('/strict'), headers: {'accept': 'application/json,text/xml'}); print('Response: ${response.body}'); expect(response, isAngelHttpException(statusCode: 406, message: '406 Not Acceptable')); }); }); }