varnishtest "ub64dec sample fetche Test"

#REQUIRE_VERSION=2.4

feature ignore_unknown_macro

haproxy h1 -conf {
    global
        # WT: limit false-positives causing "HTTP header incomplete" due to
        # idle server connections being randomly used and randomly expiring
        # under us.
        tune.idle-pool.shared off

    defaults
        mode http
        timeout connect 1s
        timeout client  1s
        timeout server  1s

    frontend fe
        bind "fd@${fe}"
				acl input hdr(encode) -m found
        http-request return content-type text/plain hdr encode %[hdr(encode),ub64enc] hdr decode %[hdr(decode),ub64dec] if input
        http-request return content-type text/plain hdr encode %[bin(14fb9c03d97f12d97e),ub64enc] hdr decode %[str(FPucA9l_Etl-),ub64dec,hex,lower] if !input

} -start

client c1 -connect ${h1_fe_sock} {
    txreq -hdr "encode: f" -hdr "decode: Zg"
    rxresp
    expect resp.http.encode == "Zg"
    expect resp.http.decode == "f"
    txreq -hdr "encode: fo" -hdr "decode: Zm8"
    rxresp
    expect resp.http.encode == "Zm8"
    expect resp.http.decode == "fo"
    txreq -hdr "encode: foo" -hdr "decode: Zm9v"
    rxresp
    expect resp.http.encode == "Zm9v"
    expect resp.http.decode == "foo"
    txreq -hdr "encode: foob" -hdr "decode: Zm9vYg"
    rxresp
    expect resp.http.encode == "Zm9vYg"
    expect resp.http.decode == "foob"
    txreq -hdr "encode: fooba" -hdr "decode: Zm9vYmE"
    rxresp
    expect resp.http.encode == "Zm9vYmE"
    expect resp.http.decode == "fooba"
    txreq -hdr "encode: foobar" -hdr "decode: Zm9vYmFy"
    rxresp
    expect resp.http.encode == "Zm9vYmFy"
    expect resp.http.decode == "foobar"
    txreq
    rxresp
    expect resp.http.encode == "FPucA9l_Etl-"
    expect resp.http.decode == "14fb9c03d97f12d97e"
} -run
