75 lines
2.2 KiB
Dart
75 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.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('<!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,
|
|
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'));
|
|
});
|
|
});
|
|
}
|