varnishtest "Set server ssl via CLI"

feature ignore_unknown_macro

# for "set server <srv> ssl"
#REQUIRE_VERSION=2.4
#REGTEST_TYPE=devel
#REQUIRE_OPTIONS=OPENSSL

# Do nothing. Is there only to create s1_* macros
server s1 {
} -start

haproxy h1 -conf {
    global
        ssl-server-verify none

    defaults
        mode http
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

    frontend myfrontend
        bind "fd@${my_fe}"
        default_backend test0

    backend test0
        server www0 ${s1_addr}:${s1_port} no-ssl
        default-server ssl
        server www1 ${s1_addr}:${s1_port} no-ssl

    backend test1
        server www0 ${s1_addr}:${s1_port} no-ssl
} -start

haproxy h1 -cli {
    # supported case
    send "show servers state test0"
    expect ~ "test0 2 www1 ${s1_addr} .* - ${s1_port} - -1"
    send "set server test0/www1 ssl on"
    expect ~ "server ssl setting updated"
    send "show servers state test0"
    expect ~ "test0 2 www1 ${s1_addr} .* - ${s1_port} - 1"
    send "set server test0/www1 ssl off"
    expect ~ "server ssl setting updated"
    send "show servers state test0"
    expect ~ "test0 2 www1 ${s1_addr} .* - ${s1_port} - 0"

    # unsupported cases
    send "show servers state test0"
    expect ~ "test0 1 www0 ${s1_addr} .* - ${s1_port} - -1"
    send "set server test0/www0 ssl on"
    expect ~ "'set server <srv> ssl' cannot be set"

    send "show servers state test1"
    expect ~ "test1 1 www0 ${s1_addr} .* - ${s1_port} - -1"
    send "set server test1/www0 ssl on"
    expect ~ "'set server <srv> ssl' cannot be set"
} -wait
