# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: Apache-2.0

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-sdcore-test-dummy
  namespace: {{ .Release.Namespace }}
data:
  sdcore-test-dummy.conf: |-
    log_format client '$remote_addr - $remote_user $request_time $upstream_response_time '
                      '[$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    server {
      listen 0.0.0.0:8080;
      default_type application/json;
      access_log /opt/bitnami/nginx/logs/access.log client;

      # You can provide a special subPath or the root
      location = /v1/config {
        root /;
        proxy_pass http://127.0.0.1:8080/post_dummy;
      }
      location = /v1/config/policies {
        root /;
        proxy_pass http://127.0.0.1:8080/post_dummy;
      }
      location = /v1/config/imsis {
        root /;
        proxy_pass http://127.0.0.1:8080/post_dummy;
      }
      location /v1/config/5g {
        rewrite ^/v1/config/5g/.* /v1/config/5g break;
        proxy_pass http://127.0.0.1:8080/post_dummy;
      }
      location /api/subscriber {
        rewrite ^/api/subscriber/.* /api/subscriber break;
        proxy_pass http://127.0.0.1:8080/post_dummy;
      }
      location = /post_dummy {
        # turn off logging here to avoid double logging
        access_log off;
        return 200;
      }
      error_page  405     =200 $uri;
    }
