/* * Copyright (c) 2010 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ /* * Copyright (c) 2015 Tarun Gupta. * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ package com.isode.stroke.parser.payloadparsers; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNotNull; import org.junit.BeforeClass; import org.junit.Test; import com.isode.stroke.elements.VCard; import com.isode.stroke.elements.Payload; import com.isode.stroke.parser.payloadparsers.VCardParser; import com.isode.stroke.parser.payloadparsers.PayloadsParserTester; import com.isode.stroke.eventloop.DummyEventLoop; import com.isode.stroke.jid.JID; import com.isode.stroke.base.DateTime; import com.isode.stroke.base.ByteArray; import com.isode.stroke.stringcodecs.Hexify; public class VCardParserTest { @Test public void testParse() { DummyEventLoop eventloop = new DummyEventLoop(); PayloadsParserTester parser = new PayloadsParserTester(eventloop); assertNotNull(parser.parse( "" + "2.0" + "Alice In Wonderland" + "" + "Wonderland" + "Alice" + "In" + "Mrs" + "PhD" + "" + "" + "alice@wonderland.lit" + "" + "" + "" + "" + "" + "alice@teaparty.lit" + "" + "" + "" + "" + "555-6273" + "" + "" + "" + "" + "Any Town" + "Fake Street 123" + "12345" + "USA" + "" + "" + "" + "DreamGirl" + "1865-05-04T00:00:00Z" + "alice@teaparty.lit" + "alice@wonderland.lit" + "I once fell down a rabbit hole." + "" + "Alice In Wonderland Inc." + "" + "Some Title" + "Main Character" + "http://wonderland.lit/~alice" + "http://teaparty.lit/~alice2" + "mutt" + "")); VCard payload = (VCard)(parser.getPayload()); assertEquals(("2.0"), payload.getVersion()); assertEquals(("Alice In Wonderland"), payload.getFullName()); assertEquals(("Alice"), payload.getGivenName()); assertEquals(("In"), payload.getMiddleName()); assertEquals(("Wonderland"), payload.getFamilyName()); assertEquals(("Mrs"), payload.getPrefix()); assertEquals(("PhD"), payload.getSuffix()); assertEquals(("DreamGirl"), payload.getNickname()); assertEquals(DateTime.stringToDate("1865-05-04T00:00:00Z"), payload.getBirthday()); assertEquals(2, (payload.getEMailAddresses().size())); assertEquals(("alice@wonderland.lit"), payload.getEMailAddresses().get(0).address); assertTrue(payload.getEMailAddresses().get(0).isHome); assertTrue(payload.getEMailAddresses().get(0).isInternet); assertTrue(payload.getEMailAddresses().get(0).isPreferred); assertFalse(payload.getEMailAddresses().get(0).isWork); assertFalse(payload.getEMailAddresses().get(0).isX400); assertEquals(("alice@teaparty.lit"), payload.getEMailAddresses().get(1).address); assertFalse(payload.getEMailAddresses().get(1).isHome); assertFalse(payload.getEMailAddresses().get(1).isInternet); assertFalse(payload.getEMailAddresses().get(1).isPreferred); assertTrue(payload.getEMailAddresses().get(1).isWork); assertTrue(payload.getEMailAddresses().get(1).isX400); assertEquals(1, (payload.getTelephones().size())); assertEquals(("555-6273"), payload.getTelephones().get(0).number); assertTrue(payload.getTelephones().get(0).isHome); assertTrue(payload.getTelephones().get(0).isVoice); assertFalse(payload.getTelephones().get(0).isPreferred); assertEquals(1, (payload.getAddresses().size())); assertEquals(("Any Town"), payload.getAddresses().get(0).locality); assertEquals(("Fake Street 123"), payload.getAddresses().get(0).street); assertEquals(("12345"), payload.getAddresses().get(0).postalCode); assertEquals(("USA"), payload.getAddresses().get(0).country); assertTrue(payload.getAddresses().get(0).isHome); assertEquals(1, (payload.getAddressLabels().size())); assertEquals(("Fake Street 123"), payload.getAddressLabels().get(0).lines.get(0)); assertEquals(("12345 Any Town"), payload.getAddressLabels().get(0).lines.get(1)); assertEquals(("USA"), payload.getAddressLabels().get(0).lines.get(2)); assertTrue(payload.getAddressLabels().get(0).isHome); assertEquals(2, (payload.getJIDs().size())); assertEquals(new JID("alice@teaparty.lit"), payload.getJIDs().get(0)); assertEquals(new JID("alice@wonderland.lit"), payload.getJIDs().get(1)); assertEquals(("I once fell down a rabbit hole."), payload.getDescription()); assertEquals(1, (payload.getOrganizations().size())); assertEquals(("Alice In Wonderland Inc."), payload.getOrganizations().get(0).name); assertEquals(0, (payload.getOrganizations().get(0).units.size())); assertEquals(1, (payload.getTitles().size())); assertEquals(("Some Title"), payload.getTitles().get(0)); assertEquals(1, (payload.getRoles().size())); assertEquals(("Main Character"), payload.getRoles().get(0)); assertEquals(2, (payload.getURLs().size())); assertEquals(("http://wonderland.lit/~alice"), payload.getURLs().get(0)); assertEquals(("http://teaparty.lit/~alice2"), payload.getURLs().get(1)); assertEquals(("mutt"), payload.getUnknownContent()); } @Test public void testParse_Photo() { DummyEventLoop eventloop = new DummyEventLoop(); PayloadsParserTester parser = new PayloadsParserTester(eventloop); assertNotNull(parser.parse( "" + "" + "image/jpeg" + "" + "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ej" + "EyMzQ1Njc4OTA=" + "" + "" + "")); VCard payload = (VCard)(parser.getPayload()); assertEquals(("image/jpeg"), payload.getPhotoType()); assertEquals(new ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), payload.getPhoto()); } void testParse_NewlinedPhoto() { DummyEventLoop eventloop = new DummyEventLoop(); PayloadsParserTester parser = new PayloadsParserTester(eventloop); assertNotNull(parser.parse( "" + "" + "image/jpeg" + "" + "dTsETKSAskgu2/BqVO+ogcu3DJy4QATGJqpsa6znWwNGiLnVElVVB6PtS+mTiHUXsrOlKvRjtvzV\n" + "VDknNaRF58Elmu5EC6VoCllBEEB/lFf0emYn2gkp0X1khNi75dl+rOj95Ar6XuwLh+ZoSStqwOWj\n" + "pIpxmZmVw7E69qr0FY0oI3zcaxXwzHw7Lx9Qf4sH7ufQvIN88ga+hwp8MiXevh3Ac8pN00kgINlq\n" + "9AY/bYJL418Y/6wWsJbgmrJ/N78wSMpC7VVszLBZVv8uFnupubyi8Ophd/1wIWWzPPwAbBhepWVb\n" + "1oPiFEBT5MNKCMTPEi0npXtedVz0HQbbPNIVwmo=" + "" + "" + "")); VCard payload = (VCard)(parser.getPayload()); assertEquals(("image/jpeg"), payload.getPhotoType()); assertEquals("753B044CA480B2482EDBF06A54EFA881CBB70C9CB84004C626AA6C6BACE75B034688B9D512555507A3ED4BE993887517B2B3A52AF463B6FCD554392735A445E7C1259AEE440BA5680A594110407F9457F47A6627DA0929D17D6484D8BBE5D97EACE8FDE40AFA5EEC0B87E668492B6AC0E5A3A48A71999995C3B13AF6AAF4158D28237CDC6B15F0CC7C3B2F1F507F8B07EEE7D0BC837CF206BE870A7C3225DEBE1DC073CA4DD3492020D96AF4063F6D824BE35F18FFAC16B096E09AB27F37BF3048CA42ED556CCCB05956FF2E167BA9B9BCA2F0EA6177FD702165B33CFC006C185EA5655BD683E2144053E4C34A08C4CF122D27A57B5E755CF41D06DB3CD215C26A", Hexify.hexify(payload.getPhoto())); } @Test public void testParse_Nickname() { DummyEventLoop eventloop = new DummyEventLoop(); PayloadsParserTester parser = new PayloadsParserTester(eventloop); assertNotNull(parser.parse( "" + "mynick" + "")); VCard payload = (VCard)(parser.getPayload()); assertEquals(("mynick"), payload.getNickname()); } }