platform/packages/html/test/all_test.dart

85 lines
2.3 KiB
Dart
Raw Normal View History

2017-07-23 15:50:37 +00:00
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';
2021-06-20 12:37:20 +00:00
void main() {
2017-07-23 15:50:37 +00:00
Angel app;
2021-06-20 12:37:20 +00:00
late TestClient client;
2017-07-23 15:50:37 +00:00
setUp(() async {
2021-06-20 12:37:20 +00:00
app = Angel();
2017-07-23 15:50:37 +00:00
2019-01-06 18:11:11 +00:00
app.fallback(renderHtml());
2017-07-23 15:50:37 +00:00
2019-01-06 18:11:11 +00:00
app.get('/html', (req, res) {
2017-07-23 15:50:37 +00:00
return html(c: [
head(c: [
title(c: [text('ok')])
])
]);
});
2019-01-06 18:11:11 +00:00
app.get(
'/strict',
chain([
renderHtml(
enforceAcceptHeader: true,
2021-06-20 12:37:20 +00:00
renderer: StringRenderer(
//doctype: null,
2019-01-06 18:11:11 +00:00
pretty: false,
),
),
(req, res) {
return div(c: [text('strict')]);
},
]),
);
2017-07-23 15:50:37 +00:00
client = await connectTo(app);
});
tearDown(() => client.close());
test('sets content type and body', () async {
2021-06-20 12:37:20 +00:00
var response = await client.get(Uri.parse('/html'));
2017-07-23 15:50:37 +00:00
print('Response: ${response.body}');
expect(
response,
2019-01-06 18:11:11 +00:00
allOf(
hasContentType('text/html'),
hasBody(
'<!DOCTYPE html><html><head><title>ok</title></head></html>')));
2017-07-23 15:50:37 +00:00
});
group('enforce accept header', () {
test('sends if correct accept or wildcard', () async {
2021-06-20 12:37:20 +00:00
var response =
await client.get(Uri.parse('/strict'), headers: {'accept': '*/*'});
2017-07-23 15:50:37 +00:00
print('Response: ${response.body}');
expect(response,
allOf(hasContentType('text/html'), hasBody('<div>strict</div>')));
2021-06-20 12:37:20 +00:00
response = await client.get(Uri.parse('/strict'),
2017-07-23 15:50:37 +00:00
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 {
2021-06-20 12:37:20 +00:00
var response = await client.get(Uri.parse('/strict'));
print('Response: ${response.statusCode} ${response.body}');
2019-01-06 18:11:11 +00:00
expect(response, hasStatus(406));
2017-07-23 15:50:37 +00:00
2021-06-20 12:37:20 +00:00
response = await client.get(Uri.parse('/strict'),
headers: {'accept': 'application/json,text/xml'});
2017-07-23 15:50:37 +00:00
print('Response: ${response.body}');
expect(response,
isAngelHttpException(statusCode: 406, message: '406 Not Acceptable'));
});
});
}