private void putCard (Context ctx, ISOMsg m, boolean mandatory, Set<String> validFields, Result rc) { boolean hasCard = m.hasAny("2", "14", "35", "45"); if (!mandatory && !hasCard) return; // nothing to do, card is optional try { Card.Builder cb = Card.builder().isomsg(m); if (ignoreCardValidation) cb.validator(null); Card card = cb.build(); ctx.put (ContextConstants.CARD.toString(), card); if (card.hasTrack1()) validFields.add("45"); if (card.hasTrack2()) validFields.add("35"); if (card.getPan() != null && m.hasField(2)) validFields.add("2"); if (card.getExp() != null && m.hasField(14)) validFields.add("14"); } catch (InvalidCardException e) { validFields.addAll(Arrays.asList("2", "14", "35", "45")); if (hasCard) { rc.fail(CMF.INVALID_CARD_NUMBER, Caller.info(), e.getMessage()); } else if (mandatory) { rc.fail(CMF.MISSING_FIELD, Caller.info(), e.getMessage()); } } }
@Test public void testConstructor1() throws Throwable { InvalidCardException invalidCardException = new InvalidCardException("testInvalidCardExceptions"); assertEquals("invalidCardException.getMessage()", "testInvalidCardExceptions", invalidCardException.getMessage()); } }
@Test public void testConstructorThrowsInvalidCardException3() throws Throwable { try { new CardHolder("testCardHolderTrack2"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "invalid track2", ex.getMessage()); } }
@Test public void testConstructorThrowsInvalidCardException() throws Throwable { try { new CardHolder("11Character", "3Ch"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "exp length not 4", ex.getMessage()); } }
@Test public void testConstructorThrowsInvalidCardException1() throws Throwable { try { new CardHolder("11Character", "5Char"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "exp length not 4", ex.getMessage()); } }
@Test public void testConstructorThrowsInvalidCardException2() throws Throwable { try { new CardHolder("9Characte", "testCardHolderExp"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "pan too short", ex.getMessage()); } }
@Test public void testSetEXPThrowsInvalidCardException() throws Throwable { CardHolder cardHolder = new CardHolder("testCardHolderPan", "4Cha"); try { cardHolder.setEXP("5Char"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "exp length not 4", ex.getMessage()); assertEquals("cardHolder.exp", "4Cha", cardHolder.exp); } }
@Test public void testSetEXPThrowsInvalidCardException1() throws Throwable { CardHolder cardHolder = new CardHolder("testCardHolderPan", "4Cha"); try { cardHolder.setEXP("3Ch"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "exp length not 4", ex.getMessage()); assertEquals("cardHolder.exp", "4Cha", cardHolder.exp); } }
@Test public void testSetPANThrowsInvalidCardException() throws Throwable { CardHolder cardHolder = new CardHolder("k'X9|DH:!;uQ<kG8!P?- ,\"Y!u`r;jB^)>3AbS9,"); try { cardHolder.setPAN("9Characte"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "pan too short", ex.getMessage()); assertEquals("cardHolder.pan", "k'X9|", cardHolder.pan); } }
@Test public void testConstructorThrowsInvalidCardException4() throws Throwable { ISOMsg m = new ISOMsg(100); try { new CardHolder(m); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "required fields not present", ex.getMessage()); assertEquals("m.getDirection()", 0, m.getDirection()); } }
@Test public void testParseTrack2ThrowsInvalidCardException() throws Throwable { CardHolder cardHolder = new CardHolder("testCardHolderPan", "4Cha"); try { cardHolder.parseTrack2("D0"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "invalid track2", ex.getMessage()); assertEquals("cardHolder.exp", "4Cha", cardHolder.exp); assertEquals("cardHolder.pan", "testCardHolderPan", cardHolder.pan); assertNull("cardHolder.trailler", cardHolder.trailer); } }
@Test public void testParseTrack2ThrowsInvalidCardException1() throws Throwable { CardHolder cardHolder = new CardHolder(); try { cardHolder.parseTrack2("testCardHolders"); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "invalid track2", ex.getMessage()); assertNull("cardHolder.exp", cardHolder.exp); assertNull("cardHolder.pan", cardHolder.pan); assertNull("cardHolder.trailler", cardHolder.trailer); } }
@Test public void testParseTrack2ThrowsInvalidCardException2() throws Throwable { CardHolder cardHolder = new CardHolder("k'X9|DH:!;uQ<kG8!P?- ,\"Y!u`r;jB^)>3AbS9,"); try { cardHolder.parseTrack2(null); fail("Expected InvalidCardException to be thrown"); } catch (InvalidCardException ex) { assertEquals("ex.getMessage()", "null track2 data", ex.getMessage()); assertEquals("cardHolder.exp", "H:!;", cardHolder.exp); assertEquals("cardHolder.pan", "k'X9|", cardHolder.pan); assertEquals("cardHolder.trailler", "uQ<kG8!P?- ,\"Y!u`r;jB^)>3AbS9,", cardHolder.trailer); } }
@Override public int prepare(long id, Serializable context) { Context ctx = (Context) context; ISOMsg m = (ISOMsg) ctx.get(requestName); boolean destinationSet = false; if (m != null && (m.hasField(2) || m.hasField(35))) { try { Card card = Card.builder().validator(validator).isomsg(m).build(); String destination = getDestination(card); if (destination != null) { ctx.put(destinationName, destination); destinationSet = true; } } catch (InvalidCardException ex) { return ctx.getResult().fail( CMF.INVALID_CARD_OR_CARDHOLDER_NUMBER, Caller.info(), ex.getMessage() ).FAIL(); } } if (!destinationSet && ctx.get(destinationName) == null) ctx.put(destinationName, defaultDestination); if (failOnNoRoute && ctx.get(destinationName) == null) return ctx.getResult().fail(CMF.ROUTING_ERROR, Caller.info(), "No routing info").FAIL(); return PREPARED | NO_JOIN | READONLY; }