Skip to content

Commit 8ca1011

Browse files
committed
Tests: improved readability in PROXY protocol v2 TLV tests.
1 parent 75eb454 commit 8ca1011

File tree

1 file changed

+68
-53
lines changed

1 file changed

+68
-53
lines changed

proxy_protocol2_tlv.t

Lines changed: 68 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -80,62 +80,42 @@ http {
8080
EOF
8181

8282
$t->write_file('t1', 'SEE-THIS');
83-
$t->try_run('no proxy_protocol tlv')->plan(15);
83+
$t->try_run('no proxy_protocol tlv')->plan(14);
8484

8585
###############################################################################
8686

87-
my $p = pack("N3C", 0x0D0A0D0A, 0x000D0A51, 0x5549540A, 0x21);
88-
my $tlv = $p . pack("CnN2n2N21nN2nN2nN4", 0x11, 134, 0xc0000201, 0xc0000202,
89-
123, 5678,
90-
# 0x01 alpn
91-
0x01000541, 0x4c504e31,
92-
# 0x02 authority
93-
0x0200096c, 0x6f63616c, 0x686f7374,
94-
# 0x03 crc32
95-
0x03000534, 0x33323130,
96-
# 0x05 unique_id
97-
0x05000555, 0x4e495151,
98-
# 0x20 ssl
99-
0x20004301, 0x000000ff,
100-
# 0x21 ssl_version
101-
0x21000132,
102-
# 0x22 ssl_cn
103-
0x22000541, 0x42433435,
104-
# 0x23 ssl_cipher
105-
0x23001b45, 0x43444845, 0x2d525341, 0x2d414553, 0x3132382d, 0x47434d2d,
106-
0x53484132, 0x3536,
107-
# 0x24 ssl_sig_alg
108-
0x24000753, 0x48413130, 0x3234,
109-
# 0x25 ssl_key_alg
110-
0x25000752, 0x53413230, 0x3438,
111-
# 0x30 netns
112-
0x3000054e, 0x45544e53,
113-
# 0xae custom
114-
0xae000531, 0x32333435);
115-
my $r;
116-
117-
$r = pp_get('/t1', $tlv);
118-
like($r, qr/X-ALPN: ALPN1-ALPN1\x0d/, 'ALPN - tlv named variable');
119-
like($r, qr/X-AUTHORITY: localhost-localhost\x0d/,
120-
'AUTHORITY - tlv named variable');
121-
like($r, qr/X-UNIQUE-ID: UNIQQ-UNIQQ\x0d/, 'UNIQUE_ID - tlv named variable');
122-
like($r, qr/X-NETNS: NETNS-NETNS\x0d/, 'NETNS - tlv named variable');
123-
like($r, qr/X-SSL-BINARY: true/, 'SSL_BINARY - tlv named variable');
124-
like($r, qr/X-SSL-VERIFY: 255\x0d/, 'SSL_VERIFY - tlv named variable');
125-
like($r, qr/X-SSL-VERSION: 2-2\x0d/, 'SSL_VERSION - tlv named variable');
126-
like($r, qr/X-SSL-CN: ABC45-ABC45\x0d/, 'SSL_CN - tlv named variable');
127-
like($r, qr/X-SSL-CIPHER: ECDHE-RSA-AES128-GCM-SHA256/,
128-
'SSL_CIPHER - tlv named variable (part 1)');
129-
like ($r, qr/-ECDHE-RSA-AES128-GCM-SHA256\x0d/,
130-
'SSL_CIPHER - tlv named variable (part 2)');
131-
like($r, qr/X-SSL-SIG-ALG: SHA1024-SHA1024\x0d/,
132-
'SSL_SIG_ALG - tlv named variable');
133-
like($r, qr/X-SSL-KEY-ALG: RSA2048-RSA2048\x0d/,
134-
'SSL_KEY_ALG - tlv named variable');
135-
like($r, qr/X-TLV-CRC32C: 43210\x0d/, 'CRC32C - tlv numeric variable');
136-
like($r, qr/X-TLV-CUSTOM: 12345\x0d/,
137-
'custom - tlv numeric variable');
138-
like($r, qr/X-TLV-X: -\x0d/, 'non-existent - tlv numeric variable');
87+
my $tlv = pp2_create_tlv(0x1, "ALPN1");
88+
$tlv .= pp2_create_tlv(0x2, "localhost");
89+
$tlv .= pp2_create_tlv(0x3, "4321");
90+
$tlv .= pp2_create_tlv(0x5, "UNIQQ");
91+
92+
my $sub = pp2_create_tlv(0x21, "TLSv1.2");
93+
$sub .= pp2_create_tlv(0x22, "example.com");
94+
$sub .= pp2_create_tlv(0x23, "AES256-SHA");
95+
$sub .= pp2_create_tlv(0x24, "SHA1");
96+
$sub .= pp2_create_tlv(0x25, "RSA512");
97+
my $ssl = pp2_create_ssl(0x01, 255, $sub);
98+
$tlv .= pp2_create_tlv(0x20, $ssl);
99+
100+
$tlv .= pp2_create_tlv(0x30, "NETNS");
101+
$tlv .= pp2_create_tlv(0xae, "12345");
102+
my $p = pp2_create($tlv);
103+
104+
my $r = pp_get('/t1', $p);
105+
like($r, qr/X-ALPN: ALPN1-ALPN1\x0d?$/m, 'ALPN');
106+
like($r, qr/X-AUTHORITY: localhost-localhost\x0d?$/m, 'AUTHORITY');
107+
like($r, qr/X-TLV-CRC32C: 4321\x0d?$/m, 'CRC32C');
108+
like($r, qr/X-UNIQUE-ID: UNIQQ-UNIQQ\x0d?$/m, 'UNIQUE_ID');
109+
like($r, qr/X-SSL-BINARY: true/, 'SSL_BINARY');
110+
like($r, qr/X-SSL-VERIFY: 255\x0d?$/m, 'SSL_VERIFY');
111+
like($r, qr/X-SSL-VERSION: TLSv1.2-TLSv1.2\x0d?$/m, 'SSL_VERSION');
112+
like($r, qr/X-SSL-CN: example.com-example.com\x0d?$/m, 'SSL_CN');
113+
like($r, qr/X-SSL-CIPHER: AES256-SHA-AES256-SHA\x0d?$/m, 'SSL_CIPHER');
114+
like($r, qr/X-SSL-SIG-ALG: SHA1-SHA1\x0d?$/m, 'SSL_SIG_ALG');
115+
like($r, qr/X-SSL-KEY-ALG: RSA512-RSA512\x0d?$/m, 'SSL_KEY_ALG');
116+
like($r, qr/X-NETNS: NETNS-NETNS\x0d?$/m, 'NETNS');
117+
like($r, qr/X-TLV-CUSTOM: 12345\x0d?$/m, 'custom');
118+
like($r, qr/X-TLV-X: -\x0d?$/m, 'non-existent');
139119

140120
###############################################################################
141121

@@ -148,4 +128,39 @@ Host: localhost
148128
EOF
149129
}
150130

131+
sub pp2_create {
132+
my ($tlv) = @_;
133+
134+
my $pp2_sig = pack("N3", 0x0D0A0D0A, 0x000D0A51, 0x5549540A);
135+
my $ver_cmd = pack('C', 0x21);
136+
my $family = pack('C', 0x11);
137+
my $packet = $pp2_sig . $ver_cmd . $family;
138+
139+
my $ip1 = pack('N', 0xc0000201); # 192.0.2.1
140+
my $ip2 = pack('N', 0xc0000202); # 192.0.2.2
141+
my $port1 = pack('n', 123);
142+
my $port2 = pack('n', 5678);
143+
my $addrs = $ip1 . $ip2 . $port1 . $port2;
144+
145+
my $len = length($addrs) + length($tlv);
146+
147+
$packet .= pack('n', $len) . $addrs . $tlv;
148+
149+
return $packet;
150+
}
151+
152+
sub pp2_create_tlv {
153+
my ($type, $content) = @_;
154+
155+
my $len = length($content);
156+
157+
return pack("CnA*", $type, $len, $content);
158+
}
159+
160+
sub pp2_create_ssl {
161+
my ($client, $verify, $content) = @_;
162+
163+
return pack("CNA*", $client, $verify, $content);
164+
}
165+
151166
###############################################################################

0 commit comments

Comments
 (0)