Commit be35b28f authored by Geoff Simmons's avatar Geoff Simmons

add tests for decode_n() with base64

parent e39f531c
# looks like -*- perl -*-
varnishtest "base64 decode_n()"
varnish v1 -vcl {
import blobcode from "${vmod_topbuild}/src/.libs/libvmod_blobcode.so";
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set req.http.foobarbazquux = "L0hlbGxvIHdvcmxkLw==";
set req.http.pangram
= "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==";
set req.http.hobbes =
{"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="};
set req.http.hobbesnopad = regsuball(req.http.hobbes, "=", "");
set req.http.all =
{"AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZaaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz0000111122223333444455556666777788889999++++////"};
set req.http.allurl =
{"AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZaaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz0000111122223333444455556666777788889999----____"};
set resp.http.dec
= blobcode.encode(IDENTITY,
blobcode.decode_n(8, BASE64,
req.http.foobarbazquux));
set resp.http.deceq
= blobcode.encode(IDENTITY,
blobcode.decode_n(20, BASE64,
req.http.foobarbazquux));
set resp.http.declong
= blobcode.encode(IDENTITY,
blobcode.decode_n(30, BASE64,
req.http.foobarbazquux));
set resp.http.dec2
= blobcode.encode(IDENTITY,
blobcode.decode_n(12, BASE64, req.http.pangram));
set resp.http.b64dechobbes =
blobcode.encode(IDENTITY,
blobcode.decode_n(24, BASE64, req.http.hobbes));
set resp.http.b64decall =
blobcode.encode(HEXLC, blobcode.decode_n(128, BASE64,
req.http.all));
set resp.http.urldechobbes =
blobcode.encode(IDENTITY, blobcode.decode_n(180, BASE64URL,
req.http.hobbes));
set resp.http.urldecall =
blobcode.encode(HEXLC,
blobcode.decode_n(256, BASE64URL,
req.http.allurl));
set resp.http.nopaddechobbes =
blobcode.encode(IDENTITY,
blobcode.decode_n(500, BASE64URLNOPAD,
req.http.hobbesnopad));
set resp.http.nopaddecall =
blobcode.encode(HEXLC,
blobcode.decode_n(256, BASE64URLNOPAD,
req.http.allurl));
set resp.http.b64empty =
blobcode.encode(IDENTITY, blobcode.decode_n(0, BASE64, ""));
set resp.http.urlempty =
blobcode.encode(IDENTITY, blobcode.decode_n(1, BASE64URL, ""));
set resp.http.nopadempty =
blobcode.encode(IDENTITY,
blobcode.decode_n(0, BASE64URLNOPAD, ""));
set resp.http.emptypieces =
blobcode.encode(IDENTITY,
blobcode.decode_n(0, BASE64, req.http.unset + "" + req.http.unset
+ "" + req.http.unset + ""));
set resp.http.decenc
= blobcode.encode(BASE64,
blobcode.decode_n(20, BASE64,
req.http.foobarbazquux));
set resp.http.l = "L";
set resp.http.dec2pieces
= blobcode.encode(IDENTITY, blobcode.decode_n(8, BASE64,
resp.http.l + "0hlbGxvIHdvcmxkLw=="));
set resp.http.pad = "==";
set resp.http.dec3pieces
= blobcode.encode(IDENTITY, blobcode.decode_n(12, BASE64,
resp.http.l + "0hlbGxvIHdvcmxkLw"
+ resp.http.pad));
set resp.http.mid1 = "GxvI";
set resp.http.mid2 = "dvcmx";
set resp.http.dec7pieces
= blobcode.encode(IDENTITY, blobcode.decode_n(16, BASE64,
resp.http.l + "0hlb" + resp.http.mid1
+ "H" + resp.http.mid2 + "kLw"
+ resp.http.pad));
set resp.http.dec7param
= blobcode.encode(blob=blobcode.decode_n(encoded=resp.http.l
+ "0hlb" + resp.http.mid1 + "H" + resp.http.mid2
+ "kLw" + resp.http.pad, decoding=BASE64, n=20),
encoding=IDENTITY);
set resp.http.decnopad = blobcode.encode(IDENTITY,
blobcode.decode_n(18, BASE64URLNOPAD,
"L0hlbGxvIHdvcmxkLw"));
set resp.http.decnopad2pieces
= blobcode.encode(IDENTITY, blobcode.decode_n(19, BASE64URLNOPAD,
resp.http.l + "0hlbGxvIHdvcmxkLw"));
set resp.http.decnopad6pieces
= blobcode.encode(IDENTITY, blobcode.decode_n(18, BASE64URLNOPAD,
resp.http.l + "0hlb" + resp.http.mid1
+ "H" + resp.http.mid2 + "kLw"));
set resp.http.decnopadlong
= blobcode.encode(IDENTITY,
blobcode.decode_n(60, BASE64URLNOPAD,
"VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw"
));
}
} -start
client c1 {
txreq -url "/"
rxresp
expect resp.http.dec == "/Hello"
expect resp.http.deceq == "/Hello world/"
expect resp.http.declong == "/Hello world/"
expect resp.http.dec2 == "The quick"
expect resp.http.b64dechobbes == "Man is distinguish"
expect resp.http.b64decall == "0000000410410820820c30c31041041451451861861c71c720820824924928a28a2cb2cb30c30c34d34d38e38e3cf3cf4104104514514924924d34d35145145555555965965d75d761861865965969a69a6db6db71c71c75d75d79e79e7df7df"
expect resp.http.urldechobbes == "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 p"
expect resp.http.urldecall == "0000000410410820820c30c31041041451451861861c71c720820824924928a28a2cb2cb30c30c34d34d38e38e3cf3cf4104104514514924924d34d35145145555555965965d75d761861865965969a69a6db6db71c71c75d75d79e79e7df7df8208208618618a28a28e38e39249249659659a69a69e79e7a28a28a69a69aaaaaaaebaebb2cb2cb6db6dbaebaebefbefc30c30c71c71cb2cb2cf3cf3d34d34d75d75db6db6df7df7e38e38e79e79ebaebaefbefbf3cf3cf7df7dfbefbeffffff"
expect resp.http.nopaddechobbes == "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."
expect resp.http.nopaddecall == "0000000410410820820c30c31041041451451861861c71c720820824924928a28a2cb2cb30c30c34d34d38e38e3cf3cf4104104514514924924d34d35145145555555965965d75d761861865965969a69a6db6db71c71c75d75d79e79e7df7df8208208618618a28a28e38e39249249659659a69a69e79e7a28a28a69a69aaaaaaaebaebb2cb2cb6db6dbaebaebefbefc30c30c71c71cb2cb2cf3cf3d34d34d75d75db6db6df7df7e38e38e79e79ebaebaefbefbf3cf3cf7df7dfbefbeffffff"
expect resp.http.b64empty == ""
expect resp.http.urlempty == ""
expect resp.http.nopadempty == ""
expect resp.http.emptypieces == ""
expect resp.http.decenc == "L0hlbGxvIHdvcmxkLw=="
expect resp.http.dec2pieces == "/Hello"
expect resp.http.dec3pieces == "/Hello wo"
expect resp.http.dec7pieces == "/Hello world"
expect resp.http.dec7param == "/Hello world/"
expect resp.http.decnopad == "/Hello world/"
expect resp.http.decnopad2pieces == "/Hello world/"
expect resp.http.decnopad6pieces == "/Hello world/"
expect resp.http.decnopadlong == "The quick brown fox jumps over the lazy dog"
} -run
varnish v1 -vcl {
import blobcode from "${vmod_topbuild}/src/.libs/libvmod_blobcode.so";
backend b { .host = "${bad_ip}"; }
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set req.http.foo = "AAA=";
set resp.http.bad64 = blobcode.encode(IDENTITY,
blobcode.decode(BASE64, "-_-_" + req.http.foo));
set resp.http.badurl = blobcode.encode(IDENTITY,
blobcode.decode(BASE64URL,
"+/+/" + req.http.foo));
set resp.http.badpad = blobcode.encode(IDENTITY,
blobcode.decode(BASE64URLNOPAD,
"TWFu" + req.http.foo));
}
}
client c1 {
txreq
rxresp
expect resp.http.bad64 == ""
expect resp.http.badurl == ""
expect resp.http.badpad == ""
} -run
logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"-_-_\"$"
#"
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"\+/\+/\"$"
#"
expect * = VCL_Error "^vmod blobcode error: cannot decode, illegal encoding beginning with \"TWFu\"$"
#"
expect * = End
} -start
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