Skip to content

Commit

Permalink
decode: [WIP] Provide tests for most use cases
Browse files Browse the repository at this point in the history
  • Loading branch information
arteymix committed Mar 27, 2016
1 parent 962e960 commit be1113b
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 0 deletions.
140 changes: 140 additions & 0 deletions tests/decode-test.vala
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/

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 () {}
5 changes: 5 additions & 0 deletions tests/tests.vala
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit be1113b

Please sign in to comment.