diff --git a/tests/expected/static.txt b/tests/expected/static.txt new file mode 100644 index 0000000..52dd0b6 --- /dev/null +++ b/tests/expected/static.txt @@ -0,0 +1,95 @@ +global + log stdout format raw local0 info + maxconn 2000 + tune.ssl.default-dh-param 2048 + +defaults + log global + + timeout connect 3s + timeout client 10s + timeout server 10m + errorfile 400 /etc/haproxy/errors-custom/400.http + errorfile 403 /etc/haproxy/errors-custom/403.http + errorfile 408 /etc/haproxy/errors-custom/408.http + errorfile 500 /etc/haproxy/errors-custom/500.http + errorfile 502 /etc/haproxy/errors-custom/502.http + errorfile 503 /etc/haproxy/errors-custom/503.http + errorfile 504 /etc/haproxy/errors-custom/504.http + +frontend stats + bind *:1936 + mode http + stats enable + stats hide-version + stats realm Haproxy\ Statistics + stats uri / + stats auth admin:test123 +# acl is_proxystats hdr(host) -i some.host.com +# default_backend srv_stats +# use_backend srv_stats if is_proxystats + default_backend srv_stats + +backend srv_stats + mode http + server Local 127.0.0.1:1936 + +frontend http_in_80_1 + bind *:80 + mode http + redirect prefix http://host1.com.br code 301 if { hdr(host) -i www.host1.com.br } + + acl is_rule_host1_com_br_80_1_1 hdr(host) -i host1.com.br + acl is_rule_host1_com_br_80_1_2 hdr(host) -i host1.com.br:80 + use_backend srv_host1_com_br_80_1 if is_rule_host1_com_br_80_1_1 OR is_rule_host1_com_br_80_1_2 + + acl is_rule_host2_com_br_80_1_1 hdr(host) -i host2.com.br + acl is_rule_host2_com_br_80_1_2 hdr(host) -i host2.com.br:80 + use_backend srv_host2_com_br_80_1 if is_rule_host2_com_br_80_1_1 OR is_rule_host2_com_br_80_1_2 + +backend srv_host1_com_br_80_1 + balance roundrobin + mode http + option forwardfor + http-request set-header X-Forwarded-Port %[dst_port] + http-request add-header X-Forwarded-Proto https if { ssl_fc } + server srv container:5000 check weight 1 +backend srv_host2_com_br_80_1 + balance roundrobin + mode http + option forwardfor + http-request set-header X-Forwarded-Port %[dst_port] + http-request add-header X-Forwarded-Proto https if { ssl_fc } + server srv other:3000 check weight 1 + +frontend http_in_443_2 + bind *:443 ssl crt /etc/haproxy/certs/mycert.pem + mode http + + acl is_rule_host1_com_br_443_2_1 hdr(host) -i host1.com.br + acl is_rule_host1_com_br_443_2_2 hdr(host) -i host1.com.br:443 + use_backend srv_host1_com_br_443_2 if is_rule_host1_com_br_443_2_1 OR is_rule_host1_com_br_443_2_2 + +backend srv_host1_com_br_443_2 + balance roundrobin + mode http + option forwardfor + http-request set-header X-Forwarded-Port %[dst_port] + http-request add-header X-Forwarded-Proto https if { ssl_fc } + server srv container:80 check weight 1 + +frontend http_in_8080_3 + bind *:8080 + mode http + + acl is_rule_host3_com_br_8080_3_1 hdr(host) -i host3.com.br + acl is_rule_host3_com_br_8080_3_2 hdr(host) -i host3.com.br:8080 + use_backend srv_host3_com_br_8080_3 if is_rule_host3_com_br_8080_3_1 OR is_rule_host3_com_br_8080_3_2 + +backend srv_host3_com_br_8080_3 + balance roundrobin + mode http + option forwardfor + http-request set-header X-Forwarded-Port %[dst_port] + http-request add-header X-Forwarded-Proto https if { ssl_fc } + server srv domain:8181 check weight 1 diff --git a/tests/fixtures/static.yml b/tests/fixtures/static.yml index dd660d5..82ea2e2 100644 --- a/tests/fixtures/static.yml +++ b/tests/fixtures/static.yml @@ -14,7 +14,7 @@ easymapping: www.host1.com.br: http://host1.com.br - port: 443 - ssl_cert: BASE64_PEM_CERTIFICATE + ssl_cert: /etc/haproxy/certs/mycert.pem hosts: host1.com.br: container:80 diff --git a/tests/test_parser.py b/tests/test_parser.py index 0851833..c9ff08e 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -52,32 +52,8 @@ def test_parser_static(): haproxy_config = cfg.generate() assert len(haproxy_config) > 0 - # assert on auth on stats - assert "stats auth admin:test123" in haproxy_config - - # assert that we found redirect - assert "redirect prefix http://host1.com.br code 301 if { hdr(host) -i www.host1.com.br }" in haproxy_config - - # assert that we found the services - frontend_http_cfg = "frontend http_in_80_1\n" - frontend_http_cfg += " bind *:80" - assert frontend_http_cfg in haproxy_config - - frontend_https_cfg = "frontend http_in_443_2\n" - frontend_https_cfg += " bind *:443" - assert frontend_https_cfg in haproxy_config - - # print(haproxy_config) - frontend_http8080_cfg = "frontend http_in_8080_3\n" - frontend_http8080_cfg += " bind *:8080" - assert frontend_http8080_cfg in haproxy_config - - - # verify ssl config with certificate - frontend_ssl_cfg = "frontend http_in_443_2\n" - frontend_ssl_cfg += " bind *:443 ssl crt BASE64_PEM_CERTIFICATE" - assert frontend_ssl_cfg in haproxy_config - + with open(path + "/expected/static.txt", 'r') as expected_file: + assert expected_file.read() == haproxy_config def test_parser_tcp(): lineList = load_fixture("services-tcp")