#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

#
# This replay file assumes that caching is enabled and
# proxy.config.http.cache.ignore_client_cc_max_age is set to 0 so that we can
# test max-age in the client requests.
#

meta:
  version: "1.0"

  blocks:
  - 200_ok_response: &200_ok_response
      server-response:
        status: 200
        reason: OK
        headers:
          fields:
          - [ Content-Length, 16 ]
          - [ Connection, close ]

sessions:

#
# Test 1: Create a session using an SNI of "bob".
#
- protocol: [ {name: http, version: 2},
              {name: tls, sni: bob.com},
              {name: tcp },
              {name: ip} ]

  transactions:

  - all: { headers: { fields: [[ uuid, 1 ]]}}
    client-request:
      headers:
        fields:
        - [ :method, GET ]
        - [ :scheme, https ]
        - [ :authority, bob.com ]
        - [ :path, '/path/use/sni/bob' ]


    <<: *200_ok_response

    proxy-response:
      status: 200

#
# Test 2: Create a session using an SNI of "dave.com".
#
- protocol: [ {name: http, version: 2},
              {name: tls, sni: dave.com},
              {name: tcp },
              {name: ip} ]

  transactions:

  - all: { headers: { fields: [[ uuid, 2 ]]}}
    client-request:
      headers:
        fields:
        - [ :method, GET ]
        - [ :scheme, https ]
        - [ :authority, dave.com ]
        - [ :path, '/path/use/sni/dave' ]


    <<: *200_ok_response

    proxy-response:
      status: 200

#
# Test 3: Create a session using no SNI.
#
- protocol: [ {name: http, version: 2},
              {name: tls},
              {name: tcp },
              {name: ip} ]

  transactions:

  - all: { headers: { fields: [[ uuid, 3 ]]}}
    client-request:
      headers:
        fields:
        - [ :method, GET ]
        - [ :scheme, https ]
        - [ :authority, example.com ]
        - [ :path, '/path/use/sni/absent' ]


    <<: *200_ok_response

    proxy-response:
      status: 200

