Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -74,24 +74,21 @@ public static bool Extract(AspectEventArgs args)
return false;

var index = Array.FindIndex(args.Method.GetParameters(), p => p.ParameterType == typeof(ILambdaContext));
if (index >= 0)
{
var x = (ILambdaContext)args.Args[index];

Instance = new LoggingLambdaContext
{
AwsRequestId = x.AwsRequestId,
FunctionName = x.FunctionName,
FunctionVersion = x.FunctionVersion,
InvokedFunctionArn = x.InvokedFunctionArn,
LogGroupName = x.LogGroupName,
LogStreamName = x.LogStreamName,
MemoryLimitInMB = x.MemoryLimitInMB
};
return true;
}
if (index < 0 || args.Args[index] == null || args.Args[index] is not ILambdaContext) return false;

var x = (ILambdaContext)args.Args[index];

return false;
Instance = new LoggingLambdaContext
{
AwsRequestId = x.AwsRequestId,
FunctionName = x.FunctionName,
FunctionVersion = x.FunctionVersion,
InvokedFunctionArn = x.InvokedFunctionArn,
LogGroupName = x.LogGroupName,
LogStreamName = x.LogStreamName,
MemoryLimitInMB = x.MemoryLimitInMB
};
return true;
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,33 @@ public void Extract_WhenHasLambdaContextArgument_InitializesLambdaContextInfo()
Assert.Null(LoggingLambdaContext.Instance);
}

[Fact]
public void Extract_When_LambdaContext_Is_Null_But_Not_First_Parameter_Returns_False()
{
// Arrange
ILambdaContext lambdaContext = null;
var args = Substitute.For<AspectEventArgs>();
var method = Substitute.For<MethodInfo>();
var parameter1 = Substitute.For<ParameterInfo>();
var parameter2 = Substitute.For<ParameterInfo>();

// Setup parameters
parameter1.ParameterType.Returns(typeof(string));
parameter2.ParameterType.Returns(typeof(ILambdaContext));

// Setup method
method.GetParameters().Returns(new[] { parameter1, parameter2 });

// Setup args
args.Method = method;
args.Args = new object[] { "requestContext", lambdaContext };

// Act && Assert
LoggingLambdaContext.Clear();
Assert.Null(LoggingLambdaContext.Instance);
Assert.False(LoggingLambdaContext.Extract(args));
}

[Fact]
public void Extract_When_Args_Null_Returns_False()
{
Expand Down
Loading