@@ -255,4 +255,95 @@ public void testRegexMatch() {
255255
256256 }
257257
258+ @ Test
259+ public void testRegexMatchFromNullSrcOrg () {
260+ Sid srcSid = null ;
261+ Sid destSid = Sid .generate (Sid .Type .ORGANIZATION );
262+ String regex = "12.*" ;
263+ String longestRegex = "123.*" ;
264+ List <IncomingPhoneNumber > emptyNumbers = new ArrayList ();
265+ List <IncomingPhoneNumber > numbers = new ArrayList ();
266+ final IncomingPhoneNumber .Builder builder = IncomingPhoneNumber .builder ();
267+ builder .setPhoneNumber (regex );
268+ numbers .add (builder .build ());
269+ builder .setPhoneNumber (longestRegex );
270+ numbers .add (builder .build ());
271+ IncomingPhoneNumbersDao numDao = Mockito .mock (IncomingPhoneNumbersDao .class );
272+ when (numDao .getTotalIncomingPhoneNumbers ((IncomingPhoneNumberFilter ) any ())).
273+ thenReturn (1 ,1 );
274+ when (numDao .getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ())).
275+ thenReturn (emptyNumbers , emptyNumbers );
276+ when (numDao .getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ())).
277+ thenReturn (numbers );
278+ InOrder inOrder = inOrder (numDao );
279+ NumberSelectorService service = new NumberSelectorService (numDao );
280+
281+ IncomingPhoneNumber found = service .searchNumber ("1234" , srcSid , destSid );
282+
283+ Assert .assertNotNull (found );
284+ Assert .assertEquals (longestRegex , found .getPhoneNumber ());
285+ inOrder .verify (numDao , times (2 )).getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ());
286+ inOrder .verify (numDao , times (1 )).getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ());
287+ }
288+
289+ @ Test
290+ public void testRegexFailToMatchBecauseOfPhone () {
291+ Sid srcSid = null ;
292+ Sid destSid = Sid .generate (Sid .Type .ORGANIZATION );
293+ String regex = "12.*" ;
294+ String longestRegex = "123.*" ;
295+ List <IncomingPhoneNumber > emptyNumbers = new ArrayList ();
296+ List <IncomingPhoneNumber > numbers = new ArrayList ();
297+ final IncomingPhoneNumber .Builder builder = IncomingPhoneNumber .builder ();
298+ builder .setPhoneNumber (regex );
299+ numbers .add (builder .build ());
300+ builder .setPhoneNumber (longestRegex );
301+ numbers .add (builder .build ());
302+ IncomingPhoneNumbersDao numDao = Mockito .mock (IncomingPhoneNumbersDao .class );
303+ when (numDao .getTotalIncomingPhoneNumbers ((IncomingPhoneNumberFilter ) any ())).
304+ thenReturn (1 ,1 );
305+ when (numDao .getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ())).
306+ thenReturn (emptyNumbers , emptyNumbers );
307+ when (numDao .getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ())).
308+ thenReturn (numbers );
309+ InOrder inOrder = inOrder (numDao );
310+ NumberSelectorService service = new NumberSelectorService (numDao );
311+
312+ IncomingPhoneNumber found = service .searchNumber ("7788" , srcSid , destSid );
313+
314+ Assert .assertNull (found );
315+ inOrder .verify (numDao , times (4 )).getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ());
316+ inOrder .verify (numDao , never ()).getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ());
317+ }
318+
319+
320+ @ Test
321+ public void testRegexFailToMatchBecauseDestOrgNull () {
322+ Sid srcSid = Sid .generate (Sid .Type .ORGANIZATION );
323+ Sid destSid = null ;
324+ String regex = "12.*" ;
325+ String longestRegex = "123.*" ;
326+ List <IncomingPhoneNumber > emptyNumbers = new ArrayList ();
327+ List <IncomingPhoneNumber > numbers = new ArrayList ();
328+ final IncomingPhoneNumber .Builder builder = IncomingPhoneNumber .builder ();
329+ builder .setPhoneNumber (regex );
330+ numbers .add (builder .build ());
331+ builder .setPhoneNumber (longestRegex );
332+ numbers .add (builder .build ());
333+ IncomingPhoneNumbersDao numDao = Mockito .mock (IncomingPhoneNumbersDao .class );
334+ when (numDao .getTotalIncomingPhoneNumbers ((IncomingPhoneNumberFilter ) any ())).
335+ thenReturn (1 ,1 );
336+ when (numDao .getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ())).
337+ thenReturn (emptyNumbers , emptyNumbers );
338+ when (numDao .getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ())).
339+ thenReturn (numbers );
340+ InOrder inOrder = inOrder (numDao );
341+ NumberSelectorService service = new NumberSelectorService (numDao );
342+
343+ IncomingPhoneNumber found = service .searchNumber ("1234" , srcSid , destSid );
344+
345+ Assert .assertNull (found );
346+ inOrder .verify (numDao , times (2 )).getIncomingPhoneNumbersByFilter ((IncomingPhoneNumberFilter ) any ());
347+ inOrder .verify (numDao , never ()).getIncomingPhoneNumbersRegex ((IncomingPhoneNumberFilter ) any ());
348+ }
258349}
0 commit comments