Merge pull request #76 from jvelilla/master

Fixed Issue #75 CONNEG doesn't handle accept encodings correcty
This commit is contained in:
jvelilla
2013-09-25 12:20:04 -07:00
2 changed files with 58 additions and 2 deletions

View File

@@ -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

View File

@@ -123,6 +123,61 @@ 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)
-- Scenario 7, the server set `identity' and the client mention identity;q=0.5, gzip;q=0.7,compress
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0.5, gzip;q=0.7,compress")
assert ("Expected Acceptable",compression_variants.is_acceptable)
assert ("Variants is void",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 8, the server set `identity' and the client mention identity;q=0.5
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0.5")
assert ("Expected Acceptable",compression_variants.is_acceptable)
assert ("Variants is void",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"))
end