@@ -5,7 +5,8 @@ import waitForExpect from 'wait-for-expect';
5
5
6
6
import * as NetworkLogger from '../../src/modules/NetworkLogger' ;
7
7
import Interceptor from '../../src/utils/XhrNetworkInterceptor' ;
8
- import { reportNetworkLog } from '../../src/utils/InstabugUtils' ;
8
+ import { isContentTypeNotAllowed , reportNetworkLog } from '../../src/utils/InstabugUtils' ;
9
+ import InstabugConstants from '../../src/utils/InstabugConstants' ;
9
10
10
11
const clone = < T > ( obj : T ) : T => {
11
12
return JSON . parse ( JSON . stringify ( obj ) ) ;
@@ -33,6 +34,7 @@ describe('NetworkLogger Module', () => {
33
34
34
35
beforeEach ( ( ) => {
35
36
NetworkLogger . setNetworkDataObfuscationHandler ( null ) ;
37
+ NetworkLogger . setRequestFilterExpression ( 'false' ) ;
36
38
} ) ;
37
39
38
40
it ( 'should set onProgressCallback with callback' , ( ) => {
@@ -146,4 +148,132 @@ describe('NetworkLogger Module', () => {
146
148
147
149
consoleSpy . mockRestore ( ) ;
148
150
} ) ;
151
+
152
+ it ( 'should omit request body if its content type is not allowed' , ( ) => {
153
+ const consoleWarn = jest . spyOn ( console , 'warn' ) . mockImplementation ( ) ;
154
+ jest . mocked ( isContentTypeNotAllowed ) . mockReturnValueOnce ( true ) ;
155
+
156
+ const networkData = {
157
+ ...network ,
158
+ requestBody : 'some request body' ,
159
+ } ;
160
+
161
+ Interceptor . setOnDoneCallback = jest
162
+ . fn ( )
163
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
164
+
165
+ NetworkLogger . setEnabled ( true ) ;
166
+
167
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( {
168
+ ...networkData ,
169
+ requestBody : expect . stringContaining ( 'omitted' ) ,
170
+ } ) ;
171
+
172
+ expect ( consoleWarn ) . toBeCalledTimes ( 1 ) ;
173
+
174
+ consoleWarn . mockRestore ( ) ;
175
+ } ) ;
176
+
177
+ it ( 'should omit response body if its content type is not allowed' , ( ) => {
178
+ const consoleWarn = jest . spyOn ( console , 'warn' ) . mockImplementation ( ) ;
179
+ jest . mocked ( isContentTypeNotAllowed ) . mockReturnValueOnce ( true ) ;
180
+
181
+ const networkData = {
182
+ ...network ,
183
+ responseBody : 'some response body' ,
184
+ } ;
185
+
186
+ Interceptor . setOnDoneCallback = jest
187
+ . fn ( )
188
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
189
+
190
+ NetworkLogger . setEnabled ( true ) ;
191
+
192
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( {
193
+ ...networkData ,
194
+ responseBody : expect . stringContaining ( 'omitted' ) ,
195
+ } ) ;
196
+
197
+ expect ( consoleWarn ) . toBeCalledTimes ( 1 ) ;
198
+
199
+ consoleWarn . mockRestore ( ) ;
200
+ } ) ;
201
+
202
+ it ( 'should omit request body if its size exceeds the maximum allowed size' , ( ) => {
203
+ const consoleWarn = jest . spyOn ( console , 'warn' ) . mockImplementation ( ) ;
204
+
205
+ const networkData = {
206
+ ...network ,
207
+ requestBodySize : InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES + 1 ,
208
+ } ;
209
+
210
+ Interceptor . setOnDoneCallback = jest
211
+ . fn ( )
212
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
213
+
214
+ NetworkLogger . setEnabled ( true ) ;
215
+
216
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( {
217
+ ...networkData ,
218
+ requestBody : InstabugConstants . MAX_REQUEST_BODY_SIZE_EXCEEDED_MESSAGE ,
219
+ } ) ;
220
+
221
+ expect ( consoleWarn ) . toBeCalledTimes ( 1 ) ;
222
+
223
+ consoleWarn . mockRestore ( ) ;
224
+ } ) ;
225
+
226
+ it ( 'should not omit request body if its size does not exceed the maximum allowed size' , ( ) => {
227
+ const networkData = {
228
+ ...network ,
229
+ requestBodySize : InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES ,
230
+ } ;
231
+
232
+ Interceptor . setOnDoneCallback = jest
233
+ . fn ( )
234
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
235
+
236
+ NetworkLogger . setEnabled ( true ) ;
237
+
238
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( networkData ) ;
239
+ } ) ;
240
+
241
+ it ( 'should omit response body if its size exceeds the maximum allowed size' , ( ) => {
242
+ const consoleWarn = jest . spyOn ( console , 'warn' ) . mockImplementation ( ) ;
243
+
244
+ const networkData = {
245
+ ...network ,
246
+ responseBodySize : InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES + 1 ,
247
+ } ;
248
+
249
+ Interceptor . setOnDoneCallback = jest
250
+ . fn ( )
251
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
252
+
253
+ NetworkLogger . setEnabled ( true ) ;
254
+
255
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( {
256
+ ...networkData ,
257
+ responseBody : InstabugConstants . MAX_RESPONSE_BODY_SIZE_EXCEEDED_MESSAGE ,
258
+ } ) ;
259
+
260
+ expect ( consoleWarn ) . toBeCalledTimes ( 1 ) ;
261
+
262
+ consoleWarn . mockRestore ( ) ;
263
+ } ) ;
264
+
265
+ it ( 'should not omit response body if its size does not exceed the maximum allowed size' , ( ) => {
266
+ const networkData = {
267
+ ...network ,
268
+ responseBodySize : InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES ,
269
+ } ;
270
+
271
+ Interceptor . setOnDoneCallback = jest
272
+ . fn ( )
273
+ . mockImplementation ( ( callback ) => callback ( networkData ) ) ;
274
+
275
+ NetworkLogger . setEnabled ( true ) ;
276
+
277
+ expect ( reportNetworkLog ) . toHaveBeenCalledWith ( networkData ) ;
278
+ } ) ;
149
279
} ) ;
0 commit comments