16
16
using System ;
17
17
using System . Collections . Generic ;
18
18
using System . Globalization ;
19
+ using System . IO ;
19
20
using System . Linq ;
20
21
using AWS . Lambda . Powertools . Common ;
21
22
using AWS . Lambda . Powertools . Logging . Internal ;
@@ -1094,5 +1095,85 @@ public void Log_WhenNestedException_LogsExceptionDetails()
1094
1095
)
1095
1096
) , Times . Once ) ;
1096
1097
}
1098
+
1099
+ [ Fact ]
1100
+ public void Log_WhenByteArray_LogsByteArrayNumbers ( )
1101
+ {
1102
+ // Arrange
1103
+ var loggerName = Guid . NewGuid ( ) . ToString ( ) ;
1104
+ var service = Guid . NewGuid ( ) . ToString ( ) ;
1105
+ var bytes = new byte [ 10 ] ;
1106
+ new Random ( ) . NextBytes ( bytes ) ;
1107
+ var logLevel = LogLevel . Information ;
1108
+ var randomSampleRate = 0.5 ;
1109
+
1110
+ var configurations = new Mock < IPowertoolsConfigurations > ( ) ;
1111
+ configurations . Setup ( c => c . Service ) . Returns ( service ) ;
1112
+ configurations . Setup ( c => c . LogLevel ) . Returns ( logLevel . ToString ) ;
1113
+
1114
+ var systemWrapper = new Mock < ISystemWrapper > ( ) ;
1115
+ systemWrapper . Setup ( c => c . GetRandom ( ) ) . Returns ( randomSampleRate ) ;
1116
+
1117
+ var logger = new PowertoolsLogger ( loggerName , configurations . Object , systemWrapper . Object , ( ) =>
1118
+ new LoggerConfiguration
1119
+ {
1120
+ Service = null ,
1121
+ MinimumLevel = null
1122
+ } ) ;
1123
+
1124
+ // Act
1125
+ logger . LogInformation ( new { Name = "Test Object" , Bytes = bytes } ) ;
1126
+
1127
+ // Assert
1128
+ systemWrapper . Verify ( v =>
1129
+ v . LogLine (
1130
+ It . Is < string >
1131
+ ( s =>
1132
+ s . Contains ( "\" bytes\" :[" + string . Join ( "," , bytes ) + "]" )
1133
+ )
1134
+ ) , Times . Once ) ;
1135
+ }
1136
+
1137
+ [ Fact ]
1138
+ public void Log_WhenMemoryStream_LogsBase64String ( )
1139
+ {
1140
+ // Arrange
1141
+ var loggerName = Guid . NewGuid ( ) . ToString ( ) ;
1142
+ var service = Guid . NewGuid ( ) . ToString ( ) ;
1143
+ var bytes = new byte [ 10 ] ;
1144
+ new Random ( ) . NextBytes ( bytes ) ;
1145
+ var memoryStream = new MemoryStream ( bytes )
1146
+ {
1147
+ Position = 0
1148
+ } ;
1149
+ var logLevel = LogLevel . Information ;
1150
+ var randomSampleRate = 0.5 ;
1151
+
1152
+ var configurations = new Mock < IPowertoolsConfigurations > ( ) ;
1153
+ configurations . Setup ( c => c . Service ) . Returns ( service ) ;
1154
+ configurations . Setup ( c => c . LogLevel ) . Returns ( logLevel . ToString ) ;
1155
+
1156
+ var systemWrapper = new Mock < ISystemWrapper > ( ) ;
1157
+ systemWrapper . Setup ( c => c . GetRandom ( ) ) . Returns ( randomSampleRate ) ;
1158
+
1159
+ var logger = new PowertoolsLogger ( loggerName , configurations . Object , systemWrapper . Object , ( ) =>
1160
+ new LoggerConfiguration
1161
+ {
1162
+ Service = null ,
1163
+ MinimumLevel = null
1164
+ } ) ;
1165
+
1166
+ // Act
1167
+ logger . LogInformation ( new { Name = "Test Object" , Stream = memoryStream } ) ;
1168
+
1169
+ // Assert
1170
+ systemWrapper . Verify ( v =>
1171
+ v . LogLine (
1172
+ It . Is < string >
1173
+ ( s =>
1174
+ s . Contains ( "\" stream\" :\" " + Convert . ToBase64String ( bytes ) + "\" " )
1175
+ )
1176
+ ) , Times . Once ) ;
1177
+ }
1097
1178
}
1098
1179
}
0 commit comments