github.com/avenga/couper@v1.12.2/server/testdata/integration/backends/02_couper.hcl (about)

     1  server {
     2    hosts = ["*:8080"]
     3    endpoint "/" {
     4      proxy "default" {
     5        url = "${env.COUPER_TEST_BACKEND_ADDR}/anything"
     6  
     7        backend {
     8          custom_log_fields = {
     9            default-res = backend_response.headers.content-type
    10            default-req = backend_request.headers.cookie
    11            default-ua  = backend_request.headers.user-agent
    12          }
    13  
    14          set_response_headers = {
    15            test-header = backend_response.headers.content-type
    16          }
    17        }
    18      }
    19  
    20      request "request" {
    21        url = "${env.COUPER_TEST_BACKEND_ADDR}/small"
    22  
    23        backend {
    24          custom_log_fields = {
    25            request-res = backend_response.headers.content-type
    26            request-req = backend_request.headers.cookie
    27            request-ua  = backend_request.headers.user-agent
    28          }
    29        }
    30      }
    31  
    32      request "r1" {
    33        url = "${env.COUPER_TEST_BACKEND_ADDR}/small"
    34        backend = "BE"
    35      }
    36  
    37      request "r2" {
    38        url = "${env.COUPER_TEST_BACKEND_ADDR}/anything"
    39        backend = "BE"
    40      }
    41    }
    42  
    43    endpoint "/request" {
    44      request "default" {
    45        url = "${env.COUPER_TEST_BACKEND_ADDR}/anything"
    46  
    47        headers = {
    48          x-foo = "bar"
    49        }
    50        json_body = {
    51          a = 1
    52        }
    53  
    54        backend {
    55          set_response_headers = {
    56            x-from-request-header = backend_request.headers.x-foo
    57            x-from-requests-header = backend_requests.default.headers.x-foo
    58            x-from-request-json-body = backend_request.json_body.a
    59            x-from-requests-json-body = backend_requests.default.json_body.a
    60            x-from-response-header = backend_response.headers.content-type
    61            x-from-responses-header = backend_responses.default.headers.content-type
    62            x-from-response-json-body = backend_response.json_body.URL
    63            x-from-responses-json-body = backend_responses.default.json_body.URL
    64          }
    65          custom_log_fields = {
    66            x-from-request-header = backend_request.headers.x-foo
    67            x-from-requests-header = backend_requests.default.headers.x-foo
    68            x-from-request-json-body = backend_request.json_body.a
    69            x-from-requests-json-body = backend_requests.default.json_body.a
    70            x-from-response-header = backend_response.headers.content-type
    71            x-from-responses-header = backend_responses.default.headers.content-type
    72            x-from-response-json-body = backend_response.json_body.URL
    73            x-from-responses-json-body = backend_responses.default.json_body.URL
    74          }
    75  
    76          oauth2 {
    77            grant_type = "client_credentials"
    78            token_endpoint = "http://localhost:8081/token"
    79            client_id = "qpeb"
    80            client_secret = "ben"
    81            backend {
    82              set_response_headers = {
    83                # use a response header field that is actually logged
    84                location = "${backend_request.headers.authorization}|${backend_request.form_body.grant_type[0]}|${backend_response.headers.x-pires-in}|${backend_response.json_body.access_token}"
    85              }
    86              custom_log_fields = {
    87                x-from-request-header = backend_request.headers.authorization
    88                x-from-request-body = backend_request.body
    89                x-from-request-form-body = backend_request.form_body.grant_type[0]
    90                x-from-response-header = backend_response.headers.x-pires-in
    91                x-from-response-body = backend_response.body
    92                x-from-response-json-body = backend_response.json_body.access_token
    93              }
    94            }
    95          }
    96        }
    97      }
    98    }
    99  }
   100  
   101  definitions {
   102    backend "BE" {
   103      custom_log_fields = {
   104        definitions-res = backend_response.headers.content-type
   105        definitions-req = backend_request.headers.cookie
   106        definitions-ua  = backend_request.headers.user-agent
   107      }
   108    }
   109  }
   110  
   111  server "as" {
   112    hosts = ["*:8081"]
   113    api {
   114      endpoint "/token" {
   115        response {
   116          headers = {
   117            x-pires-in = "60s"
   118          }
   119          json_body = {
   120            access_token = "the_access_token"
   121            expires_in = 60
   122          }
   123        }
   124      }
   125    }
   126  }