From f83c6c19257e4072a4c8e017df1e9c63b175be21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaudio=20Ku=C3=A7aj?= Date: Tue, 17 Dec 2024 09:59:09 +0100 Subject: [PATCH] test: Updating and implementing tests for 'date' header to supporte lazy initialization --- test/headers/basic/date_header_test.dart | 21 +++++++++++++++++++++ test/headers/headers_test_utils.dart | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/test/headers/basic/date_header_test.dart b/test/headers/basic/date_header_test.dart index d009ab1..2970bcd 100644 --- a/test/headers/basic/date_header_test.dart +++ b/test/headers/basic/date_header_test.dart @@ -39,6 +39,8 @@ void main() { () async => await getServerRequestHeaders( server: server, headers: {'date': ''}, + // trigger lazy initialization + onHeadersParsed: (headers) => headers?.date, ), throwsA( isA().having( @@ -60,6 +62,8 @@ void main() { () async => await getServerRequestHeaders( server: server, headers: {'date': 'invalid-date-format'}, + // trigger lazy initialization + onHeadersParsed: (headers) => headers?.date, ), throwsA( isA().having( @@ -72,6 +76,20 @@ void main() { }, ); + test( + 'when a Date header with an invalid date format is passed ' + 'then the server does not respond with a bad request if the headers ' + 'is not actually used', + () async { + Headers headers = await getServerRequestHeaders( + server: server, + headers: {'date': 'invalid-date-format'}, + ); + + expect(headers, isNotNull); + }, + ); + test( 'when a valid Date header is passed then it should parse the date correctly', () async { @@ -155,6 +173,7 @@ void main() { Headers headers = await getServerRequestHeaders( server: server, headers: {'date': ''}, + onHeadersParsed: (headers) => headers?.date, ); expect( @@ -172,6 +191,7 @@ void main() { Headers headers = await getServerRequestHeaders( server: server, headers: {'date': 'invalid-date-format'}, + onHeadersParsed: (headers) => headers?.date, ); expect(headers.date, isNull); @@ -184,6 +204,7 @@ void main() { Headers headers = await getServerRequestHeaders( server: server, headers: {'date': 'invalid-date-format'}, + onHeadersParsed: (headers) => headers?.date, ); expect( diff --git a/test/headers/headers_test_utils.dart b/test/headers/headers_test_utils.dart index 5ed642e..65455f1 100644 --- a/test/headers/headers_test_utils.dart +++ b/test/headers/headers_test_utils.dart @@ -17,12 +17,17 @@ class BadRequestException implements Exception { Future getServerRequestHeaders({ required RelicServer server, required Map headers, + // Since we implement lazy initialization, we need to pass a function + // in order to access the headers that we are interested in and trigger + // the lazy initialization. + void Function(Headers?)? onHeadersParsed, }) async { Headers? parsedHeaders; server.mountAndStart( (Request request) { parsedHeaders = request.headers; + onHeadersParsed?.call(parsedHeaders); return Response.ok(); }, );