platform/packages/html/test/all_test.dart
Tobe O a584b8ce02 Add 'packages/html/' from commit '62d29b45fde6a235a24b280c461d35bf1158585e'
git-subtree-dir: packages/html
git-subtree-mainline: 5834fbe416
git-subtree-split: 62d29b45fd
2020-02-15 18:28:52 -05:00

83 lines
2.2 KiB
Dart

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.fallback(renderHtml());
app.get('/html', (req, res) {
return html(c: [
head(c: [
title(c: [text('ok')])
])
]);
});
app.get(
'/strict',
chain([
renderHtml(
enforceAcceptHeader: true,
renderer: new 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('/html');
print('Response: ${response.body}');
expect(
response,
allOf(
hasContentType('text/html'),
hasBody(
'<!DOCTYPE html><html><head><title>ok</title></head></html>')));
});
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('<div>strict</div>')));
response = await client.get('/strict',
headers: {'accept': 'text/html,application/json,text/xml'});
print('Response: ${response.body}');
expect(response,
allOf(hasContentType('text/html'), hasBody('<div>strict</div>')));
});
test('throws if incorrect or no accept', () async {
var response = await client.get('/strict');
print('Response: ${response.body}');
expect(response, hasStatus(406));
response = await client
.get('/strict', headers: {'accept': 'application/json,text/xml'});
print('Response: ${response.body}');
expect(response,
isAngelHttpException(statusCode: 406, message: '406 Not Acceptable'));
});
});
}