/* * eID Applet Project. * Copyright (C) 2008-2009 FedICT. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version * 3.0 as published by the Free Software Foundation. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, see * http://www.gnu.org/licenses/. */ package test.unit.be.fedict.eid.applet.service; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.util.GregorianCalendar; import javax.imageio.ImageIO; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.Test; import be.fedict.eid.applet.service.Address; import be.fedict.eid.applet.service.EIdData; import be.fedict.eid.applet.service.Gender; import be.fedict.eid.applet.service.Identity; import be.fedict.eid.applet.service.impl.VcardGenerator; public class VcardGeneratorTest { private static final Log LOG = LogFactory.getLog(VcardGeneratorTest.class); private VcardGenerator testedInstance; @Before public void setUp() throws Exception { this.testedInstance = new VcardGenerator(); } @Test public void nullEIdDataGivesEmptyVcard() throws Exception { byte[] document = this.testedInstance.generateVcard(null); // verify assertNotNull(document); assertTrue(document.length > 0); toTmpFile(document); } @Test public void identityVcard() throws Exception { // setup Identity identity = new Identity(); identity.name = "Test Name"; identity.firstName = "Test First name"; identity.dateOfBirth = new GregorianCalendar(); identity.gender = Gender.MALE; EIdData eIdData = new EIdData(); eIdData.identity = identity; // operate byte[] document = this.testedInstance.generateVcard(eIdData); // verify assertNotNull(document); assertTrue(document.length > 0); toTmpFile(document); } @Test public void identityWithAddressVcard() throws Exception { // setup Identity identity = new Identity(); identity.name = "Test Name"; identity.firstName = "Test First name"; identity.dateOfBirth = new GregorianCalendar(); identity.gender = Gender.MALE; Address address = new Address(); address.streetAndNumber = "Test Street 1A"; address.zip = "1234"; address.municipality = "Test Municipality"; EIdData eIdData = new EIdData(); eIdData.identity = identity; eIdData.address = address; // operate byte[] document = this.testedInstance.generateVcard(eIdData); // verify assertNotNull(document); assertTrue(document.length > 0); toTmpFile(document); } @Test public void identityWithAddressAndPhotoVcard() throws Exception { // setup Identity identity = new Identity(); identity.name = "Test Name"; identity.firstName = "Test First name"; identity.dateOfBirth = new GregorianCalendar(); identity.gender = Gender.MALE; Address address = new Address(); address.streetAndNumber = "Test Street 1A"; address.zip = "1234"; address.municipality = "Test Municipality"; BufferedImage image = new BufferedImage(140, 200, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = (Graphics2D) image.getGraphics(); RenderingHints renderingHints = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); graphics.setRenderingHints(renderingHints); graphics.setColor(Color.WHITE); graphics.fillRect(1, 1, 140 - 1 - 1, 200 - 1 - 1); graphics.setFont(new Font("Dialog", Font.BOLD, 20)); graphics.setColor(Color.BLACK); graphics.drawString("Test Photo", 0, 200 / 2); graphics.dispose(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(image, "jpg", baos); byte[] photo = baos.toByteArray(); EIdData eIdData = new EIdData(); eIdData.identity = identity; eIdData.address = address; eIdData.photo = photo; // operate byte[] document = this.testedInstance.generateVcard(eIdData); // verify assertNotNull(document); assertTrue(document.length > 0); toTmpFile(document); } @Test public void identityWithAddressAndPhotoWithErrorsVcard() throws Exception { // setup Identity identity = new Identity(); identity.name = "Test Name"; identity.firstName = "Test First name"; identity.dateOfBirth = new GregorianCalendar(); identity.gender = Gender.MALE; Address address = new Address(); address.streetAndNumber = "Test Street 1A"; address.zip = "1234"; address.municipality = "Test Municipality"; byte[] photo = "foobar-photo".getBytes(); EIdData eIdData = new EIdData(); eIdData.identity = identity; eIdData.address = address; eIdData.photo = photo; // operate byte[] document = this.testedInstance.generateVcard(eIdData); // verify assertNotNull(document); assertTrue(document.length > 0); toTmpFile(document); } private void toTmpFile(byte[] document) throws IOException { File tmpFile = File.createTempFile("eid-", ".vcf"); FileUtils.writeByteArrayToFile(tmpFile, document); LOG.debug("tmp VCard file: " + tmpFile.getAbsolutePath()); } }