From be1113ba5cd3af1cb392bde6c6bc4201c9e9b5b9 Mon Sep 17 00:00:00 2001 From: Guillaume Poirier-Morency Date: Thu, 11 Feb 2016 23:49:50 -0500 Subject: [PATCH] decode: [WIP] Provide tests for most use cases --- tests/decode-test.vala | 140 +++++++++++++++++++++++++++++++++++++++++ tests/tests.vala | 5 ++ 2 files changed, 145 insertions(+) create mode 100644 tests/decode-test.vala diff --git a/tests/decode-test.vala b/tests/decode-test.vala new file mode 100644 index 000000000..f89901c77 --- /dev/null +++ b/tests/decode-test.vala @@ -0,0 +1,140 @@ +/* + * This file is part of Valum. + * + * Valum is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * Valum is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Valum. If not, see . + */ + +using Valum; +using VSGI.Mock; + +/** + * @since 0.3 + */ +public void test_decode_gzip () { + var req = new Request.with_method ("POST", new Soup.URI ("http://127.0.0.1/")); + var res = new Response (req); + + req.headers.append ("Content-Encoding", "gzip"); + + assert ("gzip" == req.headers.get_list ("Content-Encoding")); + + try { + decode () (req, res, () => { + assert ("" == req.headers.get_list ("Content-Encoding")); + return true; + }, new Context ()); + } catch (Error err) { + assert_not_reached (); + } +} + +/** + * @since 0.3 + */ +public void test_decode_deflate () { + var req = new Request.with_method ("POST", new Soup.URI ("http://127.0.0.1/")); + var res = new Response (req); + + req.headers.append ("Content-Encoding", "deflate"); + + assert ("deflate" == req.headers.get_list ("Content-Encoding")); + + try { + decode () (req, res, () => { + assert ("" == req.headers.get_list ("Content-Encoding")); + return true; + }, new Context ()); + } catch (Error err) { + assert_not_reached (); + } +} + +/** + * @since 0.3 + */ +public void test_decode_identity () { + var req = new Request.with_method ("POST", new Soup.URI ("http://127.0.0.1/")); + var res = new Response (req); + + req.headers.append ("Content-Encoding", "identity"); + + assert ("deflate" == req.headers.get_list ("Content-Encoding")); + + try { + decode () (req, res, () => { + assert ("identity" == req.headers.get_list ("Content-Encoding")); + return true; + }, new Context ()); + } catch (Error err) { + assert_not_reached (); + } +} + +/** + * @since 0.3 + */ +public void test_decode_unknown_encoding () { + var req = new Request.with_method ("POST", new Soup.URI ("http://127.0.0.1/")); + var res = new Response (req); + + try { + decode () (req, res, () => { + assert_not_reached (); + }, new Context ()); + assert_not_reached (); + } catch (ServerError.NOT_IMPLEMENTED err) { + + } catch (Error err) { + assert_not_reached (); + } +} + +/** + * @since 0.3 + */ +public void test_decode_forward_remaining_encodings () { + var req = new Request.with_method ("POST", new Soup.URI ("http://127.0.0.1/")); + var res = new Response (req); + + req.headers.append ("Content-Encoding", "gzip, brotli, deflate"); // brotli is not handled + + try { + decode (DecodeFlags.FORWARD_REMAINING_ENCODINGS) (req, res, () => { + assert ("gzip brotli" == req.headers.get_list ("Content-Encoding")); + return true; + }, new Context ()); + } catch (Error err) { + assert_not_reached (); + } +} + +/** + * @since 0.3 + */ +public void tset_decode_charset () {} + +/** + * @since 0.3 + */ +public void tset_decode_charset_fallback_charset () {} + +/** + * @since 0.3 + */ +public void test_decode_charset_ignore_non_text () {} + +/** + * @since 0.3 + */ +public void test_decode_charset_unknown_charset () {} diff --git a/tests/tests.vala b/tests/tests.vala index dc4cb0084..3f5ecc7d9 100644 --- a/tests/tests.vala +++ b/tests/tests.vala @@ -103,6 +103,11 @@ public int main (string[] args) { Test.add_func ("/route/match/not_matching", test_route_match_not_matching); Test.add_func ("/route/fire", test_route_match_not_matching); + Test.add_func ("/decode/gzip", test_decode_gzip); + Test.add_func ("/decode/deflate", test_decode_deflate); + Test.add_func ("/decode/unknown_encoding", test_decode_unknown_encoding); + Test.add_func ("/decode/forward_remaining_encodings", test_decode_forward_remaining_encodings); + Test.add_func ("/subdomain", test_subdomain); Test.add_func ("/subdomain/joker", test_subdomain_joker); Test.add_func ("/subdomain/strict", test_subdomain_strict);