diff --git a/library/network/protocol/content_negotiation/src/parsers/common_accept_header_parser.e b/library/network/protocol/content_negotiation/src/parsers/common_accept_header_parser.e index 9a8e983f..172d0e58 100644 --- a/library/network/protocol/content_negotiation/src/parsers/common_accept_header_parser.e +++ b/library/network/protocol/content_negotiation/src/parsers/common_accept_header_parser.e @@ -1,7 +1,7 @@ note description: "[ COMMON_ACCEPT_HEADER_PARSER, this class allows to parse Accept-Charset and Accept-Encoding headers - + ]" date: "$Date$" revision: "$Revision$" @@ -88,7 +88,8 @@ feature -- Parser loop range := parsed_charsets.item_for_iteration if attached range.field as l_range_common then - if l_target_field.same_string (l_range_common) or l_target_field.same_string ("*") or l_range_common.same_string ("*") then + if l_target_field.same_string (l_range_common) or l_target_field.same_string ("*") or l_range_common.same_string ("*") + or l_target_field.same_string ("identity") then if l_range_common.same_string (l_target_field) then l_fitness := 100 else diff --git a/library/network/protocol/content_negotiation/test/conneg_server_side_test.e b/library/network/protocol/content_negotiation/test/conneg_server_side_test.e index e53d28c9..1b1c5114 100644 --- a/library/network/protocol/content_negotiation/test/conneg_server_side_test.e +++ b/library/network/protocol/content_negotiation/test/conneg_server_side_test.e @@ -123,6 +123,39 @@ feature -- Test routines assert ("Variants is dettached",compression_variants.supported_variants = Void) assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding")) assert ("Encoding Type is gzip", compression_variants.type.is_equal ("gzip")) + + + -- Scenario 4, the server set `identity' and the client doesn't mention identity + l_compression := "identity" + compression_supported := l_compression.split(',') + conneg.set_encoding_default("gzip") + compression_variants := conneg.encoding_preference (compression_supported, "gzip;q=0.7") + assert ("Expected Acceptable", compression_variants.is_acceptable) + assert ("Variants is dettached",compression_variants.supported_variants = Void) + assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding")) + assert ("Encoding Type is identity", compression_variants.type.is_equal ("identity")) + + -- Scenario 5, the server set `identity' and the client mention identity,q=0 + l_compression := "identity" + compression_supported := l_compression.split(',') + conneg.set_encoding_default("gzip") + compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0") + assert ("Expected Not Acceptable", not compression_variants.is_acceptable) + assert ("Variants is attached",attached compression_variants.supported_variants ) + assert ("Variant Header is void", compression_variants.variant_header = Void) + assert ("Encoding Type is Void", compression_variants.type = Void) + + -- Scenario 6, the server set `identity' and the client mention *,q=0 + l_compression := "identity" + compression_supported := l_compression.split(',') + conneg.set_encoding_default("gzip") + compression_variants := conneg.encoding_preference (compression_supported, "*;q=0") + assert ("Expected Not Acceptable", not compression_variants.is_acceptable) + assert ("Variants is attached",attached compression_variants.supported_variants ) + assert ("Variant Header is void", compression_variants.variant_header = Void) + assert ("Encoding Type is Void", compression_variants.type = Void) + + end