예제 #1
0
 @Test
 public void testParseMiddlewareEIDFile() throws Exception {
   final byte[] eidFile =
       IOUtils.toByteArray(TlvParserTest.class.getResourceAsStream("/71715100070.eid"));
   final MiddlewareEIDFile middlewareEIDFile = TlvParser.parse(eidFile, MiddlewareEIDFile.class);
   final Identity identity = TlvParser.parse(middlewareEIDFile.identityFile, Identity.class);
   LOG.debug("identity: " + identity);
   LOG.debug("identity NRN: " + identity.nationalNumber);
   assertEquals("71715100070", identity.nationalNumber);
   LOG.debug("special status: " + identity.specialStatus);
 }
예제 #2
0
  @Test
  public void testGermanIdentityFileDoB() throws Exception {
    // setup
    final byte[] idFileCaseInTheField =
        new byte[] {12, 12, '2', '3', '.', 'S', 'E', 'P', '.', ' ', '1', '9', '8', '2'};

    // operate
    final Identity identity = TlvParser.parse(idFileCaseInTheField, Identity.class);

    // verify
    assertNotNull(identity.getDateOfBirth());
    LOG.debug("date of birth: " + identity.getDateOfBirth().getTime());

    final byte[] idFile =
        new byte[] {12, 11, '2', '3', '.', 'S', 'E', 'P', '.', '1', '9', '8', '2'};
    final Identity identity2 = TlvParser.parse(idFile, Identity.class);
    assertEquals(identity.getDateOfBirth(), identity2.getDateOfBirth());
  }
예제 #3
0
  @Test
  public void testLargeField() throws Exception {
    // setup
    final ByteArrayOutputStream byteStream = new ByteArrayOutputStream();

    // field length < 0x80
    byteStream.write(1); // tag
    byteStream.write(0x7f); // length
    for (int i = 0; i < 0x7f; i++) {
      byteStream.write(0x12); // data
    }

    // field length = 0x80
    byteStream.write(2); // tag
    byteStream.write(0x81); // length
    byteStream.write(0x00);
    for (int i = 0; i < 0x80; i++) {
      byteStream.write(0x34); // data
    }

    // field length = 0x3fff
    byteStream.write(3); // tag
    byteStream.write(0xff); // length
    byteStream.write(0x7f);
    for (int i = 0; i < 0x3fff; i++) {
      byteStream.write(0x56); // data
    }

    // field length = 0x4000
    byteStream.write(4); // tag
    byteStream.write(0x81); // length
    byteStream.write(0x80);
    byteStream.write(0x00);
    for (int i = 0; i < 0x4000; i++) {
      byteStream.write(0x78); // data
    }

    // our check field
    byteStream.write(100);
    byteStream.write(4);
    byteStream.write(0xca);
    byteStream.write(0xfe);
    byteStream.write(0xba);
    byteStream.write(0xbe);
    final byte[] file = byteStream.toByteArray();

    // operate
    final LargeField largeField = TlvParser.parse(file, LargeField.class);

    // verify
    assertEquals(0x7f, largeField.field1.length);
    assertArrayEquals(
        new byte[] {(byte) 0xca, (byte) 0xfe, (byte) 0xba, (byte) 0xbe}, largeField.field2);
  }
예제 #4
0
  @Test
  public void testInvalidDateTruncatedYear() throws Exception {
    final byte[] yearOnlyTLV = new byte[] {12, 3, '9', '8', '4'};

    try {
      TlvParser.parse(yearOnlyTLV, Identity.class);
      fail("Parser failed to throw exception at invalid date");
    } catch (final RuntimeException rte) {
      // expected
    }
  }
예제 #5
0
  @Test
  public void testInvalidDateMissingDayOfMonth() throws Exception {
    final byte[] yearOnlyTLV = new byte[] {12, 8, 'S', 'E', 'P', ' ', '1', '9', '6', '4'};

    try {
      TlvParser.parse(yearOnlyTLV, Identity.class);
      fail("Parser failed to throw exception at missing day of month");
    } catch (final RuntimeException rte) {
      // expected
    }
  }
예제 #6
0
  @Test
  public void testInvalidDateUnknownMonth() throws Exception {
    final byte[] yearOnlyTLV =
        new byte[] {12, 12, '2', '0', ' ', 'J', 'U', 'N', 'O', ' ', '1', '9', '6', '4'};

    try {
      TlvParser.parse(yearOnlyTLV, Identity.class);
      fail("Parser failed to throw exception at invalid month");
    } catch (final RuntimeException rte) {
      // expected
    }
  }
예제 #7
0
  @Test
  public void testIdentityFileDoBYearOnlyWithSpaces() throws Exception {
    // setup
    final byte[] idFile =
        new byte[] {12, 12, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', '9', '6', '2'};

    // operate
    final Identity identity = TlvParser.parse(idFile, Identity.class);

    // verify
    assertNotNull(identity.getDateOfBirth());
    LOG.debug("date of birth: " + identity.getDateOfBirth().getTime());
    assertEquals(1962, identity.getDateOfBirth().get(Calendar.YEAR));
    assertEquals(0, identity.getDateOfBirth().get(Calendar.MONTH));
    assertEquals(1, identity.getDateOfBirth().get(Calendar.DAY_OF_MONTH));
  }
예제 #8
0
  @Test
  public void testWhiteCane() throws Exception {
    // setup
    final byte[] idFile =
        IOUtils.toByteArray(TlvParserTest.class.getResourceAsStream("/white-cane.tlv"));

    // operate
    final Identity identity = TlvParser.parse(idFile, Identity.class);

    // verify
    LOG.debug("special status: " + identity.specialStatus);
    assertEquals(SpecialStatus.WHITE_CANE, identity.specialStatus);
    assertTrue(identity.specialStatus.hasBadSight());
    assertTrue(identity.specialStatus.hasWhiteCane());
    assertFalse(identity.specialStatus.hasYellowCane());
  }
예제 #9
0
  @Test
  public void testParseOldIdentityFile() throws Exception {
    // setup
    final InputStream inputStream = TlvParserTest.class.getResourceAsStream("/old-eid.txt");
    final byte[] base64IdentityData = IOUtils.toByteArray(inputStream);
    final byte[] identityData = Base64.decodeBase64(base64IdentityData);

    // operate
    final Identity identity = TlvParser.parse(identityData, Identity.class);

    // verify
    LOG.debug("name: " + identity.getName());
    LOG.debug("first name: " + identity.getFirstName());
    LOG.debug("document type: " + identity.getDocumentType());
    LOG.debug("card validity date begin: " + identity.getCardValidityDateBegin().getTime());
    assertEquals(DocumentType.BELGIAN_CITIZEN, identity.getDocumentType());
  }
예제 #10
0
  @Test
  public void testExtendedMinority() throws Exception {
    // setup
    final byte[] idFile =
        IOUtils.toByteArray(TlvParserTest.class.getResourceAsStream("/extended-minority.tlv"));

    // operate
    final Identity identity = TlvParser.parse(idFile, Identity.class);

    // verify
    LOG.debug("special status: " + identity.specialStatus);
    assertEquals(SpecialStatus.EXTENDED_MINORITY, identity.specialStatus);
    assertFalse(identity.specialStatus.hasBadSight());
    assertTrue(identity.specialStatus.hasExtendedMinority());
    LOG.debug("special organisation: \"" + identity.getSpecialOrganisation() + "\"");
    assertNull(identity.getSpecialOrganisation());
  }
예제 #11
0
  @Test
  public void testHCard() throws Exception {
    // setup
    final InputStream inputStream = TlvParserTest.class.getResourceAsStream("/h-card.tlv");
    final byte[] identityData = IOUtils.toByteArray(inputStream);

    // operate
    final Identity identity = TlvParser.parse(identityData, Identity.class);

    // verify
    LOG.debug("document type: " + identity.getDocumentType());
    assertEquals(DocumentType.EUROPEAN_BLUE_CARD_H, identity.getDocumentType());
    LOG.debug("duplicate: " + identity.getDuplicate());
    assertEquals("01", identity.getDuplicate());
    assertTrue(identity.isMemberOfFamily());
    LOG.debug("special organisation: \"" + identity.getSpecialOrganisation() + "\"");
    assertEquals(SpecialOrganisation.UNSPECIFIED, identity.getSpecialOrganisation());
  }
예제 #12
0
  @Test
  public void testDuplicate02() throws Exception {
    // setup
    final InputStream inputStream = TlvParserTest.class.getResourceAsStream("/duplicate-02.tlv");
    final byte[] identityData = IOUtils.toByteArray(inputStream);

    // operate
    final Identity identity = TlvParser.parse(identityData, Identity.class);

    // verify
    LOG.debug("document type: " + identity.getDocumentType());
    assertEquals(DocumentType.FOREIGNER_A, identity.getDocumentType());
    LOG.debug("duplicate: " + identity.getDuplicate());
    assertEquals("02", identity.getDuplicate());
    LOG.debug("member of family: " + identity.isMemberOfFamily());
    assertTrue(identity.isMemberOfFamily());
    LOG.debug("special organisation: \"" + identity.getSpecialOrganisation() + "\"");
    assertEquals(SpecialOrganisation.RESEARCHER, identity.getSpecialOrganisation());
  }
예제 #13
0
  @Test
  public void testForeignerIdentityFile() throws Exception {
    // setup
    final InputStream inputStream = TlvParserTest.class.getResourceAsStream("/id-foreigner.tlv");
    final byte[] identityData = IOUtils.toByteArray(inputStream);

    // operate
    final Identity identity = TlvParser.parse(identityData, Identity.class);

    // verify
    LOG.debug("name: " + identity.getName());
    LOG.debug("first name: " + identity.getFirstName());
    LOG.debug("document type: " + identity.getDocumentType());
    assertEquals(DocumentType.FOREIGNER_E_PLUS, identity.getDocumentType());
    assertNotNull(identity.getDuplicate());
    LOG.debug("duplicate: " + identity.getDuplicate());
    LOG.debug("special organisation: \"" + identity.getSpecialOrganisation() + "\"");
    assertEquals(SpecialOrganisation.UNSPECIFIED, identity.getSpecialOrganisation());
  }
예제 #14
0
  @Test
  public void parseIdentityFile() throws Exception {
    // setup
    final InputStream idInputStream = TlvParserTest.class.getResourceAsStream("/id-alice.tlv");
    final byte[] idFile = IOUtils.toByteArray(idInputStream);

    // operate
    final Identity identity = TlvParser.parse(idFile, Identity.class);

    // verify
    assertNotNull(identity);
    LOG.debug("name: " + identity.name);
    assertEquals("SPECIMEN", identity.name);
    LOG.debug("first name: " + identity.firstName);
    assertEquals("Alice Geldigekaart2266", identity.firstName);
    LOG.debug("card number: " + identity.cardNumber);
    assertEquals("000000226635", identity.cardNumber);
    LOG.debug("card validity date begin: " + identity.cardValidityDateBegin.getTime());
    assertEquals(new GregorianCalendar(2005, 7, 8), identity.cardValidityDateBegin);
    LOG.debug("card validity date end: " + identity.cardValidityDateEnd.getTime());
    assertEquals(new GregorianCalendar(2010, 7, 8), identity.cardValidityDateEnd);
    LOG.debug("Card Delivery Municipality: " + identity.cardDeliveryMunicipality);
    assertEquals("Certipost Specimen", identity.cardDeliveryMunicipality);
    LOG.debug("national number: " + identity.nationalNumber);
    assertEquals("71715100070", identity.nationalNumber);
    LOG.debug("middle name: " + identity.middleName);
    assertEquals("A", identity.middleName);
    LOG.debug("nationality: " + identity.nationality);
    assertEquals("Belg", identity.nationality);
    LOG.debug("place of birth: " + identity.placeOfBirth);
    assertEquals("Hamont-Achel", identity.placeOfBirth);
    LOG.debug("gender: " + identity.gender);
    assertEquals(Gender.FEMALE, identity.gender);
    assertNotNull(identity.dateOfBirth);
    LOG.debug("date of birth: " + identity.dateOfBirth.getTime());
    assertEquals(new GregorianCalendar(1971, 0, 1), identity.dateOfBirth);
    LOG.debug("special status: " + identity.specialStatus);
    assertEquals(SpecialStatus.NO_STATUS, identity.specialStatus);
    assertNull(identity.getSpecialOrganisation());

    assertNotNull(identity.getData());
  }
예제 #15
0
  @Test
  public void parseAddressFile() throws Exception {
    // setup
    final InputStream addressInputStream =
        TlvParserTest.class.getResourceAsStream("/address-alice.tlv");
    final byte[] addressFile = IOUtils.toByteArray(addressInputStream);

    // operate
    final Address address = TlvParser.parse(addressFile, Address.class);

    // verify
    assertNotNull(address);
    LOG.debug("street and number: " + address.streetAndNumber);
    assertEquals("Meirplaats 1 bus 1", address.streetAndNumber);
    LOG.debug("zip: " + address.zip);
    assertEquals("2000", address.zip);
    LOG.debug("municipality: " + address.municipality);
    assertEquals("Antwerpen", address.municipality);

    assertNotNull(address.getData());
  }
예제 #16
0
 @Test
 public void testYearOnlyDate() throws Exception {
   final byte[] yearOnlyTLV = new byte[] {12, 4, '1', '9', '8', '4'};
   final Identity identity = TlvParser.parse(yearOnlyTLV, Identity.class);
   assertEquals(1984, identity.getDateOfBirth().get(Calendar.YEAR));
 }