Commit c8bdc0b5 authored by Geoff Simmons's avatar Geoff Simmons

add tests for transcode_n() with URL encoding

parent eec11783
......@@ -12,8 +12,7 @@ varnish v1 -vcl {
}
sub vcl_synth {
set req.http.pangram
= "The quick brown fox jumps over the lazy dog";
set req.http.foobar = "foo:bar:baz:quux";
set req.http.hobbes =
{"Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure."};
set req.http.hobbesb64 =
......@@ -43,6 +42,12 @@ varnish v1 -vcl {
set resp.http.id2hexlc
= blobcode.transcode_n(5, IDENTITY, HEXLC, req.http.hobbes);
set resp.http.id2urluc
= blobcode.transcode_n(5, IDENTITY, URLUC, req.http.foobar);
set resp.http.id2urllc
= blobcode.transcode_n(5, IDENTITY, URLLC, req.http.foobar);
set resp.http.b642id
= blobcode.transcode_n(8, BASE64, IDENTITY, req.http.hobbesb64);
......@@ -67,6 +72,18 @@ varnish v1 -vcl {
set resp.http.hexallup2b64nopad
= blobcode.transcode_n(10, HEX, BASE64URLNOPAD, req.http.hexallup);
set resp.http.hexalldown2urluc
= blobcode.transcode_n(12, HEX, URLUC, req.http.hexalldown);
set resp.http.hexalldown2urllc
= blobcode.transcode_n(12, HEX, URLLC, req.http.hexalldown);
set resp.http.hexallup2urluc
= blobcode.transcode_n(12, HEX, URLUC, req.http.hexallup);
set resp.http.hexallup2urllc
= blobcode.transcode_n(12, HEX, URLLC, req.http.hexallup);
set resp.http.b64all2hexuc
= blobcode.transcode_n(8, BASE64, HEXUC, req.http.b64all);
......@@ -79,6 +96,18 @@ varnish v1 -vcl {
set resp.http.b64allurl2hexlc
= blobcode.transcode_n(8, BASE64URL, HEXLC, req.http.b64allurl);
set resp.http.b64all2urluc
= blobcode.transcode_n(8, BASE64, URLUC, req.http.b64all);
set resp.http.b64all2urllc
= blobcode.transcode_n(8, BASE64, URLLC, req.http.b64all);
set resp.http.b64allurl2urluc
= blobcode.transcode_n(8, BASE64URL, URLUC, req.http.b64allurl);
set resp.http.b64allurl2urllc
= blobcode.transcode_n(8, BASE64URL, URLLC, req.http.b64allurl);
set resp.http.hexuc2hexuc
= blobcode.transcode_n(10, HEX, HEXUC, "0123456789ABCDEF");
......@@ -101,52 +130,39 @@ varnish v1 -vcl {
set req.http.hexpart2 = "89abcdef";
set resp.http.hexparam
= blobcode.transcode_n(encoded="" + req.http.unset + ""
+ req.http.unset + "" + req.http.hexpart1
+ "" + req.http.unset + "" + req.http.unset
+ req.http.hexpart2, decoding=HEX,
encoding=HEXUC, n=10);
+ req.http.unset + "" + req.http.hexpart1
+ "" + req.http.unset + "" + req.http.unset
+ req.http.hexpart2, decoding=HEX,
encoding=HEXUC, n=10);
set resp.http.b642b64
= blobcode.transcode_n(36, BASE64, BASE64,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789+/");
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789+/");
set resp.http.b64url2b64url =
blobcode.transcode_n(34, BASE64URL, BASE64URL,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789-_");
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789-_");
set resp.http.b64urlnopad2b64urlnopad =
blobcode.transcode_n(34, BASE64URLNOPAD, BASE64URLNOPAD,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789-_");
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
+ "ghijklmnopqrstuvwxyz0123456789-_");
set resp.http.badhex = blobcode.transcode_n(8, HEX, IDENTITY, "0x123456");
set req.http.foo = "AAA=";
set resp.http.bad64 = blobcode.transcode_n(4, BASE64, IDENTITY,
"-_-_" + req.http.foo);
set resp.http.badurl = blobcode.transcode_n(4, BASE64URL, IDENTITY,
"+/+/" + req.http.foo);
set resp.http.badpad = blobcode.transcode_n(8, BASE64URLNOPAD, IDENTITY,
"TWFu" + req.http.foo);
set resp.http.bad64264 = blobcode.transcode_n(4, BASE64, BASE64,
"_-_-" + req.http.foo);
set resp.http.badurl2url = blobcode.transcode_n(4, BASE64URL, BASE64URL,
"/+/+" + req.http.foo);
set resp.http.badpad2pad
= blobcode.transcode_n(8, BASE64URLNOPAD, BASE64URLNOPAD,
"Zm9v" + req.http.foo);
}
} -start
client c1 {
txreq -url "/"
txreq
rxresp
expect resp.http.id2id == "Hello"
expect resp.http.id2b64 == "TWFuIGk="
expect resp.http.id2b64nopad == "TWFuIGk"
expect resp.http.id2hexuc == "4D616E2069"
expect resp.http.id2hexlc == "4d616e2069"
expect resp.http.id2urluc == "foo%3Ab"
expect resp.http.id2urllc == "foo%3ab"
expect resp.http.b642id == "Man is"
expect resp.http.hex2id == "Man is"
expect resp.http.hexalldown2b64 == "//79/Pv6"
......@@ -155,10 +171,18 @@ client c1 {
expect resp.http.hexallup2b64 == "AAECAwQF"
expect resp.http.hexallup2b64url == "AAECAwQ="
expect resp.http.hexallup2b64nopad == "AAECAwQ"
expect resp.http.hexalldown2urluc == "%FF%FE%FD%FC%FB%FA"
expect resp.http.hexalldown2urllc == "%ff%fe%fd%fc%fb%fa"
expect resp.http.hexallup2urluc == "%00%01%02%03%04%05"
expect resp.http.hexallup2urllc == "%00%01%02%03%04%05"
expect resp.http.b64all2hexuc == "000000041041"
expect resp.http.b64all2hexlc == "000000041041"
expect resp.http.b64allurl2hexuc == "000000041041"
expect resp.http.b64allurl2hexlc == "000000041041"
expect resp.http.b64all2urluc == "%00%00%00%04%10A"
expect resp.http.b64all2urllc == "%00%00%00%04%10A"
expect resp.http.b64allurl2urluc == "%00%00%00%04%10A"
expect resp.http.b64allurl2urllc == "%00%00%00%04%10A"
expect resp.http.hexuc2hexuc == "0123456789"
expect resp.http.hexlc2hexlc == "0123456789"
expect resp.http.hexuc2hexlc == "0012345678"
......@@ -169,18 +193,166 @@ client c1 {
expect resp.http.b642b64 == "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij"
expect resp.http.b64url2b64url == "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefeQ=="
expect resp.http.b64urlnopad2b64urlnopad == "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgg"
expect resp.http.badhex == ""
expect resp.http.bad64 == ""
expect resp.http.bad64264 == ""
expect resp.http.badurl == ""
expect resp.http.badurl2url == ""
expect resp.http.badpad == ""
expect resp.http.badpad2pad == ""
} -run
varnish v1 -vcl {
import blobcode from "${vmod_topbuild}/src/.libs/libvmod_blobcode.so";
import std;
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set req.http.urlhobbeslc = "Man%20is%20distinguished%2c%20not%20only%20by%20his%20reason%2c%20but%20by%20this%20singular%20passion%20from%20other%20animals%2c%20which%20is%20a%20lust%20of%20the%20mind%2c%20that%20by%20a%20perseverance%20of%20delight%20in%20the%20continued%20and%20indefatigable%20generation%20of%20knowledge%2c%20exceeds%20the%20short%20vehemence%20of%20any%20carnal%20pleasure.";
set req.http.urlhobbesuc = "Man%20is%20distinguished%2C%20not%20only%20by%20his%20reason%2C%20but%20by%20this%20singular%20passion%20from%20other%20animals%2C%20which%20is%20a%20lust%20of%20the%20mind%2C%20that%20by%20a%20perseverance%20of%20delight%20in%20the%20continued%20and%20indefatigable%20generation%20of%20knowledge%2C%20exceeds%20the%20short%20vehemence%20of%20any%20carnal%20pleasure.";
set req.http.urlallupuc = "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF";
set req.http.urlalluplc = "%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f%20%21%22%23%24%25%26%27%28%29%2a%2b%2c-.%2f0123456789%3a%3b%3c%3d%3e%3f%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5b%5c%5d%5e_%60abcdefghijklmnopqrstuvwxyz%7b%7c%7d~%7f%80%81%82%83%84%85%86%87%88%89%8a%8b%8c%8d%8e%8f%90%91%92%93%94%95%96%97%98%99%9a%9b%9c%9d%9e%9f%a0%a1%a2%a3%a4%a5%a6%a7%a8%a9%aa%ab%ac%ad%ae%af%b0%b1%b2%b3%b4%b5%b6%b7%b8%b9%ba%bb%bc%bd%be%bf%c0%c1%c2%c3%c4%c5%c6%c7%c8%c9%ca%cb%cc%cd%ce%cf%d0%d1%d2%d3%d4%d5%d6%d7%d8%d9%da%db%dc%dd%de%df%e0%e1%e2%e3%e4%e5%e6%e7%e8%e9%ea%eb%ec%ed%ee%ef%f0%f1%f2%f3%f4%f5%f6%f7%f8%f9%fa%fb%fc%fd%fe%ff";
set req.http.urlalldownuc = "%FF%FE%FD%FC%FB%FA%F9%F8%F7%F6%F5%F4%F3%F2%F1%F0%EF%EE%ED%EC%EB%EA%E9%E8%E7%E6%E5%E4%E3%E2%E1%E0%DF%DE%DD%DC%DB%DA%D9%D8%D7%D6%D5%D4%D3%D2%D1%D0%CF%CE%CD%CC%CB%CA%C9%C8%C7%C6%C5%C4%C3%C2%C1%C0%BF%BE%BD%BC%BB%BA%B9%B8%B7%B6%B5%B4%B3%B2%B1%B0%AF%AE%AD%AC%AB%AA%A9%A8%A7%A6%A5%A4%A3%A2%A1%A0%9F%9E%9D%9C%9B%9A%99%98%97%96%95%94%93%92%91%90%8F%8E%8D%8C%8B%8A%89%88%87%86%85%84%83%82%81%80%7F~%7D%7C%7Bzyxwvutsrqponmlkjihgfedcba%60_%5E%5D%5C%5BZYXWVUTSRQPONMLKJIHGFEDCBA%40%3F%3E%3D%3C%3B%3A9876543210%2F.-%2C%2B%2A%29%28%27%26%25%24%23%22%21%20%1F%1E%1D%1C%1B%1A%19%18%17%16%15%14%13%12%11%10%0F%0E%0D%0C%0B%0A%09%08%07%06%05%04%03%02%01%00";
set req.http.urlalldownlc = "%ff%fe%fd%fc%fb%fa%f9%f8%f7%f6%f5%f4%f3%f2%f1%f0%ef%ee%ed%ec%eb%ea%e9%e8%e7%e6%e5%e4%e3%e2%e1%e0%df%de%dd%dc%db%da%d9%d8%d7%d6%d5%d4%d3%d2%d1%d0%cf%ce%cd%cc%cb%ca%c9%c8%c7%c6%c5%c4%c3%c2%c1%c0%bf%be%bd%bc%bb%ba%b9%b8%b7%b6%b5%b4%b3%b2%b1%b0%af%ae%ad%ac%ab%aa%a9%a8%a7%a6%a5%a4%a3%a2%a1%a0%9f%9e%9d%9c%9b%9a%99%98%97%96%95%94%93%92%91%90%8f%8e%8d%8c%8b%8a%89%88%87%86%85%84%83%82%81%80%7f~%7d%7c%7bzyxwvutsrqponmlkjihgfedcba%60_%5e%5d%5c%5bZYXWVUTSRQPONMLKJIHGFEDCBA%40%3f%3e%3d%3c%3b%3a9876543210%2f.-%2c%2b%2a%29%28%27%26%25%24%23%22%21%20%1f%1e%1d%1c%1b%1a%19%18%17%16%15%14%13%12%11%10%0f%0e%0d%0c%0b%0a%09%08%07%06%05%04%03%02%01%00";
set resp.http.urluc2id
= blobcode.transcode_n(27, URL, IDENTITY, req.http.urlhobbesuc);
set resp.http.urllc2id
= blobcode.transcode_n(63, URL, IDENTITY, req.http.urlhobbeslc);
set resp.http.urlalldownuc2b64
= blobcode.transcode_n(18, URL, BASE64, req.http.urlalldownuc);
set resp.http.urlalldownuc2b64url
= blobcode.transcode_n(15, URL, BASE64URL, req.http.urlalldownuc);
set resp.http.urlalldownuc2b64nopad
= blobcode.transcode_n(15, URL, BASE64URLNOPAD,
req.http.urlalldownuc);
set resp.http.urlalldownlc2b64
= blobcode.transcode_n(18, URL, BASE64, req.http.urlalldownlc);
set resp.http.urlalldownlc2b64url
= blobcode.transcode_n(15, URL, BASE64URL, req.http.urlalldownlc);
set resp.http.urlalldownlc2b64nopad
= blobcode.transcode_n(15, URL, BASE64URLNOPAD,
req.http.urlalldownlc);
set resp.http.urlallupuc2b64
= blobcode.transcode_n(36, URL, BASE64, req.http.urlallupuc);
set resp.http.urlallupuc2b64url
= blobcode.transcode_n(33, URL, BASE64URL, req.http.urlallupuc);
set resp.http.urlallupuc2b64nopad
= blobcode.transcode_n(33, URL, BASE64URLNOPAD,
req.http.urlallupuc);
set resp.http.urlalluplc2b64
= blobcode.transcode_n(36, URL, BASE64, req.http.urlalluplc);
set resp.http.urlalluplc2b64url
= blobcode.transcode_n(33, URL, BASE64URL, req.http.urlalluplc);
set resp.http.urlalluplc2b64nopad
= blobcode.transcode_n(33, URL, BASE64URLNOPAD,
req.http.urlalluplc);
set resp.http.urlalldownuc2urluc
= blobcode.transcode_n(423, URL, URLUC, req.http.urlalldownuc);
set resp.http.urlalldownuc2urllc
= blobcode.transcode_n(423, URL, URLLC, req.http.urlalldownuc);
set resp.http.urlalldownlc2urluc
= blobcode.transcode_n(423, URL, URLUC, req.http.urlalldownlc);
set resp.http.urlalldownlc2urllc
= blobcode.transcode_n(423, URL, URLLC, req.http.urlalldownlc);
set resp.http.urlallupuc2urluc
= blobcode.transcode_n(197, URL, URLUC, req.http.urlallupuc);
set resp.http.urlallupuc2urllc
= blobcode.transcode_n(197, URL, URLLC, req.http.urlallupuc);
set resp.http.urlalluplc2urluc
= blobcode.transcode_n(197, URL, URLUC, req.http.urlalluplc);
set resp.http.urlalluplc2urllc
= blobcode.transcode_n(197, URL, URLLC, req.http.urlalluplc);
}
}
client c1 -run
client c1 {
txreq
rxresp
expect resp.http.urluc2id == "Man is distinguished,"
expect resp.http.urllc2id == "Man is distinguished, not only by his reason,"
expect resp.http.urlalldownuc2b64 == "//79/Pv6"
expect resp.http.urlalldownuc2b64url == "__79_Ps="
expect resp.http.urlalldownuc2b64nopad == "__79_Ps"
expect resp.http.urlalldownlc2b64 == "//79/Pv6"
expect resp.http.urlalldownlc2b64url == "__79_Ps="
expect resp.http.urlalldownlc2b64nopad == "__79_Ps"
expect resp.http.urlallupuc2b64 == "AAECAwQFBgcICQoL"
expect resp.http.urlallupuc2b64url == "AAECAwQFBgcICQo="
expect resp.http.urlallupuc2b64nopad == "AAECAwQFBgcICQo"
expect resp.http.urlalluplc2b64 == "AAECAwQFBgcICQoL"
expect resp.http.urlalluplc2b64url == "AAECAwQFBgcICQo="
expect resp.http.urlalluplc2b64nopad == "AAECAwQFBgcICQo"
expect resp.http.urlalldownuc2urluc == "%FF%FE%FD%FC%FB%FA%F9%F8%F7%F6%F5%F4%F3%F2%F1%F0%EF%EE%ED%EC%EB%EA%E9%E8%E7%E6%E5%E4%E3%E2%E1%E0%DF%DE%DD%DC%DB%DA%D9%D8%D7%D6%D5%D4%D3%D2%D1%D0%CF%CE%CD%CC%CB%CA%C9%C8%C7%C6%C5%C4%C3%C2%C1%C0%BF%BE%BD%BC%BB%BA%B9%B8%B7%B6%B5%B4%B3%B2%B1%B0%AF%AE%AD%AC%AB%AA%A9%A8%A7%A6%A5%A4%A3%A2%A1%A0%9F%9E%9D%9C%9B%9A%99%98%97%96%95%94%93%92%91%90%8F%8E%8D%8C%8B%8A%89%88%87%86%85%84%83%82%81%80%7F~%7D%7C%7Bzyxwvutsrqponmlkjihgfedcba"
expect resp.http.urlalldownuc2urllc == "%ff%fe%fd%fc%fb%fa%f9%f8%f7%f6%f5%f4%f3%f2%f1%f0%ef%ee%ed%ec%eb%ea%e9%e8%e7%e6%e5%e4%e3%e2%e1%e0%df%de%dd%dc%db%da%d9%d8%d7%d6%d5%d4%d3%d2%d1%d0%cf%ce%cd%cc%cb%ca%c9%c8%c7%c6%c5%c4%c3%c2%c1%c0%bf%be%bd%bc%bb%ba%b9%b8%b7%b6%b5%b4%b3%b2%b1%b0%af%ae%ad%ac%ab%aa%a9%a8%a7%a6%a5%a4%a3%a2%a1%a0%9f%9e%9d%9c%9b%9a%99%98%97%96%95%94%93%92%91%90%8f%8e%8d%8c%8b%8a%89%88%87%86%85%84%83%82%81%80%7f~%7d%7c%7bzyxwvutsrqponmlkjihgfedcba"
expect resp.http.urlalldownlc2urluc == "%FF%FE%FD%FC%FB%FA%F9%F8%F7%F6%F5%F4%F3%F2%F1%F0%EF%EE%ED%EC%EB%EA%E9%E8%E7%E6%E5%E4%E3%E2%E1%E0%DF%DE%DD%DC%DB%DA%D9%D8%D7%D6%D5%D4%D3%D2%D1%D0%CF%CE%CD%CC%CB%CA%C9%C8%C7%C6%C5%C4%C3%C2%C1%C0%BF%BE%BD%BC%BB%BA%B9%B8%B7%B6%B5%B4%B3%B2%B1%B0%AF%AE%AD%AC%AB%AA%A9%A8%A7%A6%A5%A4%A3%A2%A1%A0%9F%9E%9D%9C%9B%9A%99%98%97%96%95%94%93%92%91%90%8F%8E%8D%8C%8B%8A%89%88%87%86%85%84%83%82%81%80%7F~%7D%7C%7Bzyxwvutsrqponmlkjihgfedcba"
expect resp.http.urlalldownlc2urllc == "%ff%fe%fd%fc%fb%fa%f9%f8%f7%f6%f5%f4%f3%f2%f1%f0%ef%ee%ed%ec%eb%ea%e9%e8%e7%e6%e5%e4%e3%e2%e1%e0%df%de%dd%dc%db%da%d9%d8%d7%d6%d5%d4%d3%d2%d1%d0%cf%ce%cd%cc%cb%ca%c9%c8%c7%c6%c5%c4%c3%c2%c1%c0%bf%be%bd%bc%bb%ba%b9%b8%b7%b6%b5%b4%b3%b2%b1%b0%af%ae%ad%ac%ab%aa%a9%a8%a7%a6%a5%a4%a3%a2%a1%a0%9f%9e%9d%9c%9b%9a%99%98%97%96%95%94%93%92%91%90%8f%8e%8d%8c%8b%8a%89%88%87%86%85%84%83%82%81%80%7f~%7d%7c%7bzyxwvutsrqponmlkjihgfedcba"
expect resp.http.urlallupuc2urluc == "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ"
expect resp.http.urlalluplc2urluc == "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ"
expect resp.http.urlallupuc2urllc == "%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f%20%21%22%23%24%25%26%27%28%29%2a%2b%2c-.%2f0123456789%3a%3b%3c%3d%3e%3f%40ABCDEFGHIJKLMNOPQRSTUVWXYZ"
expect resp.http.urlalluplc2urllc == "%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f%20%21%22%23%24%25%26%27%28%29%2a%2b%2c-.%2f0123456789%3a%3b%3c%3d%3e%3f%40ABCDEFGHIJKLMNOPQRSTUVWXYZ"
} -run
varnish v1 -vcl {
import blobcode from "${vmod_topbuild}/src/.libs/libvmod_blobcode.so";
import std;
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
return(synth(200));
}
logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
sub vcl_synth {
set resp.http.badhex
= blobcode.transcode_n(8, HEX, IDENTITY, "0x123456");
set req.http.foo = "AAA=";
set resp.http.bad64 = blobcode.transcode_n(4, BASE64, IDENTITY,
"-_-_" + req.http.foo);
set resp.http.badb64url = blobcode.transcode_n(4, BASE64URL, IDENTITY,
"+/+/" + req.http.foo);
set resp.http.badpad
= blobcode.transcode_n(8, BASE64URLNOPAD, IDENTITY,
"TWFu" + req.http.foo);
set resp.http.bad64264 = blobcode.transcode_n(4, BASE64, BASE64,
"_-_-" + req.http.foo);
set resp.http.badb64url2b64url
= blobcode.transcode_n(4, BASE64URL, BASE64URL,
"/+/+" + req.http.foo);
set resp.http.badpad2pad
= blobcode.transcode_n(8, BASE64URLNOPAD, BASE64URLNOPAD,
"Zm9v" + req.http.foo);
set resp.http.badurl1
= blobcode.transcode_n(1, URL, IDENTITY, "%20");
set resp.http.badurl2
= blobcode.transcode_n(2, URL, IDENTITY, "%20");
set resp.http.goodurl1
= blobcode.transcode_n(3, URL, IDENTITY, "%2c%q");
set resp.http.goodurl2
= blobcode.transcode_n(3, URL, IDENTITY, "%3a%2q");
}
}
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"0x123456\"$"
#"
......@@ -195,8 +367,28 @@ logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"/\+/\+\"$"
#"
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"Zm9v\"$"
#"
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"%20\"$"
#"
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"%20\"$"
#"
expect * = End
} -start
client c1 {
txreq -url "/"
rxresp
expect resp.http.badhex == ""
expect resp.http.bad64 == ""
expect resp.http.bad64264 == ""
expect resp.http.badb64url == ""
expect resp.http.badb64url2b64url == ""
expect resp.http.badpad == ""
expect resp.http.badpad2pad == ""
expect resp.http.badurl1 == ""
expect resp.http.badurl2 == ""
expect resp.http.goodurl1 == ","
expect resp.http.goodurl2 == ":"
} -run
logexpect l1 -wait
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment