From 9b9bc1f190e4ad1bbf922ed7bd3f3169f69c05df Mon Sep 17 00:00:00 2001 From: jvelilla Date: Wed, 30 Nov 2011 08:56:13 -0300 Subject: [PATCH] Fixed minor issue, added test cases to check language negotiation. --- .../protocol/CONNEG/src/conneg_server_side.e | 2 +- .../CONNEG/test/conneg_server_side_test.e | 36 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/library/protocol/CONNEG/src/conneg_server_side.e b/library/protocol/CONNEG/src/conneg_server_side.e index 0e34108c..02e2cf73 100644 --- a/library/protocol/CONNEG/src/conneg_server_side.e +++ b/library/protocol/CONNEG/src/conneg_server_side.e @@ -147,7 +147,7 @@ feature -- Language Negotiation if header.is_empty then -- the request has no Accept header, ie the header is empty, in this case we use the default format Result.set_acceptable (TRUE) - Result.set_language_type (mime_default) + Result.set_language_type (language_default) else -- select the best match, server support, client preferences language_match := language.best_match (server_language_supported, header) diff --git a/library/protocol/CONNEG/test/conneg_server_side_test.e b/library/protocol/CONNEG/test/conneg_server_side_test.e index a36084a0..8a966f4e 100644 --- a/library/protocol/CONNEG/test/conneg_server_side_test.e +++ b/library/protocol/CONNEG/test/conneg_server_side_test.e @@ -38,7 +38,7 @@ feature -- Test routines assert ("Variant header is void",media_variants.variant_header = Void) assert ("Media type is void",media_variants.media_type = Void) - -- Scenario 2, the client doesnt send values in the header, Accpet: + -- Scenario 2, the client doesnt send values in the header, Accept: media_variants := conneg.media_type_preference (mime_types_supported, "") assert ("Expected Acceptable", media_variants.is_acceptable) assert ("Variants is dettached",media_variants.supported_variants = Void) @@ -56,6 +56,40 @@ feature -- Test routines + test_language_negotiation + local + language_variants : LANGUAGE_VARIANT_RESULTS + languages_supported : LIST [STRING] + l_languages : STRING + do + -- Scenario 1, the server side does not support client preferences + l_languages := "es,en,en-US,fr;q=0.6" + languages_supported := l_languages.split(',') + language_variants := conneg.language_preference (languages_supported, "de") + assert ("Expected Not Acceptable", not language_variants.is_acceptable) + assert ("Same Value at 1",languages_supported.at (1).is_equal (language_variants.supported_variants.at (1))) + assert ("Same count",languages_supported.count = language_variants.supported_variants.count) + assert ("Variant header is void",language_variants.variant_header = Void) + assert ("Language type is void",language_variants.language_type = Void) + + + -- Scenario 2, the client doesnt send values in the header, Accept-Language: + language_variants := conneg.language_preference (languages_supported, "") + assert ("Expected Acceptable", language_variants.is_acceptable) + assert ("Variants is dettached",language_variants.supported_variants = Void) + assert ("Language is defaul", conneg.language_default.is_equal (language_variants.language_type)) + assert ("Variant header", language_variants.variant_header = Void) + + + --Scenario 3, the server select the best match, and set the vary header + language_variants := conneg.language_preference (languages_supported, "fr,es;q=0.4") + assert ("Expected Acceptable", language_variants.is_acceptable) + assert ("Variants is dettached",language_variants.supported_variants = Void) + assert ("Variant Header", language_variants.variant_header.is_equal ("Accept-Language")) + assert ("Language Type is fr", language_variants.language_type.is_equal ("fr")) + + + end feature -- Implementation conneg : CONNEG_SERVER_SIDE end