77 lines
2.1 KiB
Dart
77 lines
2.1 KiB
Dart
|
import 'dart:convert';
|
||
|
import 'dart:io';
|
||
|
import 'package:angel_compress/angel_compress.dart';
|
||
|
import 'package:angel_framework/angel_framework.dart';
|
||
|
import 'package:angel_proxy/angel_proxy.dart';
|
||
|
import 'package:angel_test/angel_test.dart';
|
||
|
import 'package:test/test.dart';
|
||
|
|
||
|
main() {
|
||
|
Angel app, testApp;
|
||
|
TestClient client;
|
||
|
|
||
|
setUp(() async {
|
||
|
testApp = new Angel();
|
||
|
testApp.get('/foo', (req, res) => res.write('pub serve'));
|
||
|
testApp.get('/empty', (req, res) => res.end());
|
||
|
testApp.responseFinalizers.add(gzip());
|
||
|
var server = await testApp.startServer();
|
||
|
|
||
|
app = new Angel();
|
||
|
app.get('/bar', (req, res) => res.write('normal'));
|
||
|
var layer = new PubServeLayer(
|
||
|
publicPath: '/proxy', host: server.address.address, port: server.port);
|
||
|
print('streamToIO: ${layer.streamToIO}');
|
||
|
await app.configure(layer);
|
||
|
|
||
|
app.responseFinalizers.add((req, ResponseContext res) async {
|
||
|
print('Normal. Buf: ' +
|
||
|
new String.fromCharCodes(res.buffer.toBytes()) +
|
||
|
', headers: ${res.headers}');
|
||
|
});
|
||
|
app.responseFinalizers.add(gzip());
|
||
|
|
||
|
client = await connectTo(app);
|
||
|
});
|
||
|
|
||
|
tearDown(() async {
|
||
|
await client.close();
|
||
|
await app.close();
|
||
|
await testApp.close();
|
||
|
app = null;
|
||
|
testApp = null;
|
||
|
});
|
||
|
|
||
|
test('proxied', () async {
|
||
|
var response = await client.get('/proxy/foo');
|
||
|
|
||
|
// Should say it is gzipped...
|
||
|
expect(response, hasHeader('content-encoding', 'gzip'));
|
||
|
|
||
|
// Should have gzipped body
|
||
|
expect(response.body, 'pub serve');
|
||
|
});
|
||
|
|
||
|
test('empty', () async {
|
||
|
var response = await client.get('/proxy/empty');
|
||
|
|
||
|
// Should say it is gzipped...
|
||
|
expect(response, hasHeader('content-encoding', 'gzip'));
|
||
|
|
||
|
// Should have gzipped body
|
||
|
expect(response.bodyBytes, isEmpty);
|
||
|
});
|
||
|
|
||
|
test('normal', () async {
|
||
|
var response = await client.get('/bar');
|
||
|
|
||
|
// Should say it is gzipped...
|
||
|
expect(response, hasHeader('content-encoding', 'gzip'));
|
||
|
|
||
|
// Should have normal body
|
||
|
//
|
||
|
// We have to decode it, because `mock_request` does not auto-decode.
|
||
|
expect(UTF8.decode(GZIP.decode(response.bodyBytes)), 'normal');
|
||
|
});
|
||
|
}
|