protected override void Handle()

in src/Testing/Emulator/Policies/CheckHeaderHandler.cs [24:56]


    protected override void Handle(GatewayContext context, CheckHeaderConfig config)
    {
        bool pass = false;
        if (context.Request.Headers.TryGetValue(config.Name, out var values) && values.Length == 1)
        {
            pass = config.Values.Length == 0 || config.Values.Contains(values[0], ValueComparer(config));
        }

        if (pass)
        {
            OnCheckPassed.Find(tuple => tuple.Item1(context, config))?.Item2(context, config);
            return;
        }

        context.Response = new MockResponse()
        {
            StatusCode = config.FailCheckHttpCode,
            // StatusReason = GetStatusReason(config.FailCheckHttpCode), TODO: Create status reason mapper
            Headers = { { "Content-Type", ["application/json"] } },
            Body =
            {
                Content = $$"""
                            {
                              "statusCode": {{config.FailCheckHttpCode}},
                              "message": "{{config.FailCheckErrorMessage}}"
                            }
                            """
            }
        };

        OnCheckFailed.Find(tuple => tuple.Item1(context, config))?.Item2(context, config);
        throw new FinishSectionProcessingException();
    }