private void Handle()

in src/Testing/Emulator/Policies/ReturnResponseHandler.cs [40:91]


    private void Handle(GatewayContext context, ReturnResponseConfig config)
    {
        MockResponse response = new();
        if (!string.IsNullOrWhiteSpace(config.ResponseVariableName))
        {
            //copy variable
            response = context.Variables[config.ResponseVariableName] as MockResponse ??
                       throw new ArgumentException($"Variable {config.ResponseVariableName} should be response");
        }

        if (config.Status is not null)
        {
            response.StatusCode = config.Status.Code;
            response.StatusReason = config.Status.Reason;
        }

        foreach (var header in config.Headers ?? [])
        {
            switch (header.ExistsAction)
            {
                case "delete":
                    response.Headers.Remove(header.Name);
                    break;
                case "skip":
                    if (!response.Headers.TryGetValue(header.Name, out _))
                    {
                        ArgumentNullException.ThrowIfNull(header.Values);
                        response.Headers[header.Name] = header.Values;
                    }

                    break;
                case "append":
                    ArgumentNullException.ThrowIfNull(header.Values);
                    response.Headers[header.Name] = response.Headers.TryGetValue(header.Name, out var v)
                        ? v.Concat(header.Values).ToArray()
                        : header.Values;
                    break;
                case "override":
                default:
                    ArgumentNullException.ThrowIfNull(header.Values);
                    response.Headers[header.Name] = header.Values;
                    break;
            }
        }

        if (config.Body is not null)
        {
            response.Body.Content = config.Body.Content as string ?? throw new NotImplementedException();
        }

        context.Response = response;
    }