@Test public void testTrack2() throws Throwable { Track2 t2 = Track2.builder() .track("4111111111111111=201112345612345678901").build(); assertEquals("pan", "4111111111111111", t2.getPan()); assertEquals("exp", "2011", t2.getExp()); assertEquals("serviceCode", "123", t2.getServiceCode()); assertEquals("cvv", "4561", t2.getCvv()); assertEquals("discretionaryData", "2345678901", t2.getDiscretionaryData()); }
public Track2 build() { return new Track2(this); } }
exp(m.getString(14)); if (m.hasField(35)) track2(Track2.builder().track(m.getString(35)).build()); if (m.hasField(45)) track1(Track1.builder().track(m.getString(45)).build()); if (pan == null && track2 != null) pan (track2.getPan()); if (pan == null && track1 != null) pan (track1.getPan()); if (exp == null && track2 != null) exp (track2.getExp()); if (exp == null && track1 != null) exp (track1.getExp()); if (track2 != null) { if (pan == null) pan (track2.getPan()); if (exp == null) exp (track2.getExp()); if (serviceCode == null) serviceCode(track2.getServiceCode());
if (card.getTrack1() != null && !pan.equals(card.getTrack1().getPan())) throw new InvalidCardException ("track1 PAN mismatch"); if (card.getTrack2() != null && !pan.equals(card.getTrack2().getPan())) throw new InvalidCardException ("track2 PAN mismatch"); if (card.getTrack1() != null && !exp.equals(card.getTrack1().getExp())) throw new InvalidCardException ("track1 EXP mismatch"); if (card.getTrack2() != null && !exp.equals(card.getTrack2().getExp())) throw new InvalidCardException ("track2 EXP mismatch"); int mismatch = 0; if (card.hasBothTracks()) { if (card.getTrack2().getServiceCode() != null) { if (!card.getTrack2().getServiceCode().equals(card.getServiceCode())) mismatch++; if (!card.getTrack2().getServiceCode().equals(card.getTrack1().getServiceCode())) mismatch++; if (card.getTrack2().getServiceCode() != null) { if (!card.getTrack2().getServiceCode().equals(card.getServiceCode())) mismatch++;
@Test public void testISOMsg() throws Throwable { ISOMsg m = new ISOMsg("0800"); m.set(45, "%B4111111111111111^FAT ALBERT ^201112345671234567890?"); m.set(35, "4111111111111111=201112345612345678901"); m.set(2, "4111111111111111"); m.set(14, "2011"); Card c = Card.builder() .isomsg(m) .cvv2("123") .serviceCode("123") .build(); assertEquals("not expired", false, c.isExpired(new Date())); assertEquals("pan", "4111111111111111", c.getPan()); assertEquals("exp", "2011", c.getExp()); assertEquals("serviceCode", "123", c.getServiceCode()); assertEquals("t1.serviceCode", "123", c.getTrack1().getServiceCode()); assertEquals("t2.serviceCode", "123", c.getTrack2().getServiceCode()); assertEquals("cvv2", "123", c.getCvv2()); assertEquals("t1.cvv", "4567", c.getTrack1().getCvv()); assertEquals("t2.cvv", "4561", c.getTrack2().getCvv()); assertEquals("discretionaryData", "1234567890", c.getTrack1().getDiscretionaryData()); assertEquals("discretionaryData", "2345678901", c.getTrack2().getDiscretionaryData()); } }
@Test public void testCard() throws Throwable { Track1 t1 = Track1.builder() .track("%B4111111111111111^FAT ALBERT ^201112345671234567890?").build(); Track2 t2 = Track2.builder() .track("4111111111111111=201112345612345678901").build(); Card c = Card.builder() .pan("4111111111111111") .exp("2011") .cvv("123") .cvv2("4567") .serviceCode("123") .track1(t1) .track2(t2) .build(); assertEquals("not expired", false, c.isExpired(new Date())); }
@Test public void testInvalidPAN() throws Throwable { try { Track1 t1 = Track1.builder() .track("%B4111111111111112^FAT ALBERT ^201112345671234567890?").build(); Track2 t2 = Track2.builder() .track("4111111111111112=201112345612345678901").build(); Card c = Card.builder() .pan("4111111111111112") .exp("2011") .cvv("123") .cvv2("4567") .serviceCode("201") .track1(t1) .track2(t2) .build(); fail ("InvalidCardException was not raised"); } catch (InvalidCardException ignored) { } }