comparison proxy_ssl.t @ 311:ad164c14058a

Tests: basic proxy tests to ssl backend.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 12 Jul 2013 20:46:32 +0400
parents
children a7d04159e52b
comparison
equal deleted inserted replaced
310:25f2ba615000 311:ad164c14058a
1 #!/usr/bin/perl
2
3 # (C) Nginx, Inc.
4
5 # Tests for proxy to ssl backend.
6
7 ###############################################################################
8
9 use warnings;
10 use strict;
11
12 use Test::More;
13
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
15
16 use lib 'lib';
17 use Test::Nginx;
18
19 ###############################################################################
20
21 select STDERR; $| = 1;
22 select STDOUT; $| = 1;
23
24 my $t = Test::Nginx->new()->has(qw/http proxy http_ssl/)->has_daemon('openssl')
25 ->plan(4)->write_file_expand('nginx.conf', <<'EOF');
26
27 %%TEST_GLOBALS%%
28
29 daemon off;
30
31 events {
32 }
33
34 http {
35 %%TEST_GLOBALS_HTTP%%
36
37 server {
38 listen 127.0.0.1:8081 ssl;
39
40 ssl_certificate_key localhost.key;
41 ssl_certificate localhost.crt;
42 }
43
44 server {
45 listen 127.0.0.1:8080;
46 server_name localhost;
47
48 add_header X-Foo ssl;
49
50 location /ssl_reuse {
51 proxy_pass https://127.0.0.1:8081/;
52 proxy_ssl_session_reuse on;
53 }
54
55 location /ssl {
56 proxy_pass https://127.0.0.1:8081/;
57 proxy_ssl_session_reuse off;
58 }
59 }
60 }
61
62 EOF
63
64 $t->write_file('openssl.conf', <<EOF);
65 [ req ]
66 default_bits = 2048
67 encrypt_key = no
68 distinguished_name = req_distinguished_name
69 [ req_distinguished_name ]
70 EOF
71
72 $t->write_file('index.html', '');
73
74 my $d = $t->testdir();
75
76 foreach my $name ('localhost') {
77 system('openssl req -x509 -new '
78 . "-config '$d/openssl.conf' -subj '/CN=$name/' "
79 . "-out '$d/$name.crt' -keyout '$d/$name.key' "
80 . ">>$d/openssl.out 2>&1") == 0
81 or die "Can't create certificate for $name: $!\n";
82 }
83
84 $t->run();
85
86 ###############################################################################
87
88 like(http_get('/ssl'), qr/200 OK.*X-Foo: ssl/ms, 'ssl');
89 like(http_get('/ssl'), qr/200 OK.*X-Foo: ssl/ms, 'ssl 2');
90 like(http_get('/ssl_reuse'), qr/200 OK.*X-Foo: ssl/ms, 'ssl reuse session');
91 like(http_get('/ssl_reuse'), qr/200 OK.*X-Foo: ssl/ms, 'ssl reuse session 2');
92
93 ###############################################################################