/*********************************************************************************** * * Copyright (c) 2014 Kamil Baczkowicz * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * * Kamil Baczkowicz - initial API and implementation and/or initial documentation * */ package pl.baczkowicz.mqttspy.ui.utils; import static org.junit.Assert.assertEquals; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import org.apache.commons.codec.binary.Hex; import org.junit.Ignore; import org.junit.Test; import pl.baczkowicz.spy.common.generated.ConversionMethod; import pl.baczkowicz.spy.common.generated.FormatterDetails; import pl.baczkowicz.spy.common.generated.FormatterFunction; import pl.baczkowicz.spy.common.generated.SubstringConversionFormatterDetails; import pl.baczkowicz.spy.common.generated.SubstringExtractFormatterDetails; import pl.baczkowicz.spy.exceptions.ConversionException; import pl.baczkowicz.spy.formatting.FormattingUtils; import pl.baczkowicz.spy.utils.ConversionUtils; /** * Uses for the formatting/conversion utils. */ public class FormattingUtilsTest { /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#stringToHex(java.lang.String)}. */ @Test public final void testStringToHex() { assertEquals("7465737432", ConversionUtils.stringToHex("test2")); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#hexToString(java.lang.String)}. * @throws ConversionException */ @Test public final void testHexToString() throws ConversionException { assertEquals("test2", ConversionUtils.hexToString("7465737432")); } @Test public void testConversion1() { final String encodedString = "3f915604fffd"; assertEquals(encodedString, new String(encodedString.getBytes())); assertEquals(encodedString.getBytes().length, new String(encodedString.getBytes()).getBytes().length); } @Test public final void testConversion2() throws ConversionException, UnsupportedEncodingException { final String encodedString = "3f915604fffd"; assertEquals(12, encodedString.length()); assertEquals(12, encodedString.getBytes().length); final byte[] plainArray = ConversionUtils.hexToArray(encodedString); assertEquals(6, plainArray.length); assertEquals(12, Hex.encodeHex(plainArray).length); assertEquals(12, new String(Hex.encodeHex(plainArray)).length()); assertEquals(12, ConversionUtils.arrayToHex(plainArray).length()); } @Ignore @Test public final void testHexToStringToHex() throws ConversionException { final String testString = "3f915604fffd"; assertEquals(true, Charset.isSupported("UTF-8")); //final Hex hex = new Hex(ConversionUtils.DEFAULT_CHARSET); assertEquals(12, ConversionUtils.stringToArray(testString).length); assertEquals(6, ConversionUtils.hexToArray(testString).length); assertEquals(6, ConversionUtils.arrayToString(ConversionUtils.hexToArray(testString)).length()); assertEquals(6, ConversionUtils.hexToString(testString).length()); assertEquals(6, ConversionUtils.hexToString(testString).getBytes().length); assertEquals(6, ConversionUtils.stringToArray(ConversionUtils.hexToString(testString)).length); assertEquals(12, Hex.encodeHex(ConversionUtils.stringToArray(ConversionUtils.hexToString(testString))).length); // return new String(Hex.encodeHex()); assertEquals(testString, ConversionUtils.stringToHex(ConversionUtils.hexToString(testString))); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#hexToString(java.lang.String)}. * @throws ConversionException */ @Test (expected = ConversionException.class) public final void testInvalidHexToString() throws ConversionException { assertEquals("not is not valid", ConversionUtils.hexToString("paosd9d")); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#hexToStringNoException(java.lang.String)}. */ @Test public final void testHexToStringNoException() { assertEquals("[invalid hex]", ConversionUtils.hexToStringNoException("hello :)")); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#base64ToString(java.lang.String)}. */ @Test public final void testBase64ToString() { assertEquals("GOOD", ConversionUtils.base64ToString("R09PRA==")); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#stringToBase64(java.lang.String)}. */ @Test public final void testStringToBase64() { assertEquals("R09PRA==", ConversionUtils.stringToBase64("GOOD")); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#formatText(pl.baczkowicz.spy.common.generated.FormatterDetails, java.lang.String)}. */ @Test public final void testCustomBase64DecodingConversion() { final FormatterDetails customFormatter = new FormatterDetails(); final FormatterFunction function = new FormatterFunction(); function.setSubstringConversion(new SubstringConversionFormatterDetails()); function.getSubstringConversion().setStartTag("<Body>"); function.getSubstringConversion().setEndTag("</Body>"); function.getSubstringConversion().setKeepTags(true); function.getSubstringConversion().setFormat(ConversionMethod.BASE_64_DECODE); customFormatter.getFunction().add(function); assertEquals("<Body>GOOD</Body>", FormattingUtils.formatText(customFormatter, "<Body>R09PRA==</Body>", null)); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#formatText(pl.baczkowicz.spy.common.generated.FormatterDetails, java.lang.String)}. */ @Test public final void testCustomBase64DecodingConversionNoTags() { final FormatterDetails customFormatter = new FormatterDetails(); final FormatterFunction function = new FormatterFunction(); function.setSubstringConversion(new SubstringConversionFormatterDetails()); function.getSubstringConversion().setStartTag("<Body>"); function.getSubstringConversion().setEndTag("</Body>"); function.getSubstringConversion().setKeepTags(false); function.getSubstringConversion().setFormat(ConversionMethod.BASE_64_DECODE); customFormatter.getFunction().add(function); assertEquals("GOOD", FormattingUtils.formatText(customFormatter, "<Body>R09PRA==</Body>", null)); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#formatText(pl.baczkowicz.spy.common.generated.FormatterDetails, java.lang.String)}. */ @Test public final void testCustomBase64DecodingWithExtract() { final FormatterDetails customFormatter = new FormatterDetails(); final FormatterFunction function1 = new FormatterFunction(); function1.setSubstringConversion(new SubstringConversionFormatterDetails()); function1.getSubstringConversion().setStartTag("<Body>"); function1.getSubstringConversion().setEndTag("</Body>"); function1.getSubstringConversion().setKeepTags(true); function1.getSubstringConversion().setFormat(ConversionMethod.BASE_64_DECODE); customFormatter.getFunction().add(function1); final FormatterFunction function2 = new FormatterFunction(); function2.setSubstringExtract(new SubstringExtractFormatterDetails()); function2.getSubstringExtract().setStartTag("<Body>"); function2.getSubstringExtract().setEndTag("</Body>"); function2.getSubstringExtract().setKeepTags(false); customFormatter.getFunction().add(function2); assertEquals("GOOD", FormattingUtils.formatText(customFormatter, "some other stuff <Body>R09PRA==</Body> and even more stuff", null)); } /** * Test method for {@link pl.baczkowicz.spy.formatting.FormattingUtils#convertText(pl.baczkowicz.spy.common.generated.ConversionMethod, java.lang.String)}. */ @Test public final void testConvert() { assertEquals("test", FormattingUtils.convertText(ConversionMethod.PLAIN, "test")); assertEquals("test2", FormattingUtils.convertText(ConversionMethod.HEX_DECODE, "7465737432")); assertEquals("7465737431", FormattingUtils.convertText(ConversionMethod.HEX_ENCODE, "test1")); assertEquals("GOOD", FormattingUtils.convertText(ConversionMethod.BASE_64_DECODE, "R09PRA==")); assertEquals("R09PRA==", FormattingUtils.convertText(ConversionMethod.BASE_64_ENCODE, "GOOD")); } @Test public final void testReplaceCharacters() { assertEquals("23", FormattingUtils.replaceCharacters(ConversionMethod.HEX_ENCODE, "#", 0, 40, null)); assertEquals("-23-1", FormattingUtils.replaceCharacters(ConversionMethod.HEX_ENCODE, "#1", 0, 40, "-")); } }