@@ -10,10 +10,29 @@ describe('minErr', function() {
10
10
testError = minErr ( 'test' ) ;
11
11
12
12
var originalObjectMaxDepthInErrorMessage = minErrConfig . objectMaxDepth ;
13
+ var originalUrlMaxLengthInErrorMessage = minErrConfig . urlMaxLength ;
13
14
afterEach ( function ( ) {
14
15
minErrConfig . objectMaxDepth = originalObjectMaxDepthInErrorMessage ;
16
+ minErrConfig . urlMaxLength = originalUrlMaxLengthInErrorMessage ;
15
17
} ) ;
16
18
19
+ function extractUrlFromErrorMessage ( message ) {
20
+ var match = message . match ( / h t t p [ \s \S ] * \? p 0 = / ) ;
21
+ var urlStartAt = message . indexOf ( match [ 0 ] ) ;
22
+ if ( urlStartAt < 0 ) {
23
+ throw new Error ( 'Could not find url' ) ;
24
+ }
25
+ return message . slice ( urlStartAt ) ;
26
+ }
27
+
28
+ function createDummyString ( size ) {
29
+ var str = '' ;
30
+ for ( var i = 0 ; i < size ; i ++ ) {
31
+ str += 'a' ;
32
+ }
33
+ return str ;
34
+ }
35
+
17
36
it ( 'should return an Error factory' , function ( ) {
18
37
var myError = testError ( 'test' , 'Oops' ) ;
19
38
expect ( myError instanceof Error ) . toBe ( true ) ;
@@ -143,4 +162,36 @@ describe('minErr', function() {
143
162
expect ( testError ( 'acode' , 'aproblem' , 'a' , 'b' , 'value with space' ) . message )
144
163
. toMatch ( / ^ [ \s \S ] * \? p 0 = a & p 1 = b & p 2 = v a l u e % 2 0 w i t h % 2 0 s p a c e $ / ) ;
145
164
} ) ;
165
+
166
+ it ( 'should slice error reference URL in the message if it exceeds url max length' , function ( ) {
167
+ var a = createDummyString ( 2000 ) ;
168
+
169
+ var myError = testError ( '26' , 'a when default=2000 is {0}' , a ) ;
170
+ var url = extractUrlFromErrorMessage ( myError . message ) ;
171
+ expect ( url . length ) . toBe ( 2000 ) ;
172
+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 2000 ) ;
173
+
174
+ errorHandlingConfig ( { urlMaxLength : 500 } ) ;
175
+ myError = testError ( '26' , 'a when urlMaxLength=500 is {0}' , a ) ;
176
+ url = extractUrlFromErrorMessage ( myError . message ) ;
177
+ expect ( url . length ) . toBe ( 500 ) ;
178
+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 500 ) ;
179
+
180
+ errorHandlingConfig ( { urlMaxLength : undefined } ) ;
181
+ myError = testError ( '26' , 'a when urlMaxLength=undefined is {0}' , a ) ;
182
+ url = extractUrlFromErrorMessage ( myError . message ) ;
183
+ expect ( url . length ) . toBe ( 500 ) ;
184
+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBe ( 500 ) ;
185
+ } ) ;
186
+
187
+ they ( 'should ignore url max length when urlMaxLength = $prop' ,
188
+ [ NaN , null , true , false , - 1 , 0 ] , function ( maxLength ) {
189
+ errorHandlingConfig ( { urlMaxLength : maxLength } ) ;
190
+ var a = createDummyString ( 2100 ) ;
191
+ var myError = testError ( '26' , 'a is {0}' , a ) ;
192
+ var url = extractUrlFromErrorMessage ( myError . message ) ;
193
+ expect ( url . length ) . toBeGreaterThan ( 2100 ) ;
194
+ expect ( errorHandlingConfig ( ) . urlMaxLength ) . toBeNaN ( ) ;
195
+ }
196
+ ) ;
146
197
} ) ;
0 commit comments