/**
* The FreeBSD Copyright
* Copyright 1994-2008 The FreeBSD Project. All rights reserved.
* Copyright (C) 2013-2017 Philip Helger philip[at]helger[dot]com
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation
* are those of the authors and should not be interpreted as representing
* official policies, either expressed or implied, of the FreeBSD Project.
*/
package com.helger.as2lib.params;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
import com.helger.as2lib.message.AS2Message;
/**
* Test class for class {@link CompositeParameters}.
*
* @author Philip Helger
*/
public final class CompositeParametersTest
{
@Test
public void testBasic () throws InvalidParameterException
{
final AS2Message aMsg = new AS2Message ();
aMsg.addHeader ("message-id", "12345");
aMsg.getPartnership ().setSenderAS2ID ("s1");
aMsg.getPartnership ().setReceiverAS2ID ("r1");
final CompositeParameters aParams = new CompositeParameters (false).add ("date", new DateParameters ())
.add ("msg", new MessageParameters (aMsg));
final String sNow = new SimpleDateFormat ("yyyyMMddhhmmss").format (new Date ());
// Note: the date assertions may fail if they are executed exactly at the
// edge of a second!
String sName = aParams.format ("$date.yyyyMMddhhmmss$");
assertEquals (sNow, sName);
sName = aParams.format ("any$date.yyyyMMddhhmmss$else");
assertEquals ("any" + sNow + "else", sName);
// No placeholders
assertEquals ("sender.as2_id, receiver.as2_id, headers.message-id",
aParams.format ("sender.as2_id, receiver.as2_id, headers.message-id"));
// With placeholders
assertEquals ("s1, r1, 12345",
aParams.format ("$msg.sender.as2_id$, $msg.receiver.as2_id$, $msg.headers.message-id$"));
// Unknown placeholders
try
{
aParams.format ("$dummy$");
fail ();
}
catch (final InvalidParameterException ex)
{}
// Escaping test
assertEquals ("$s1", aParams.format ("$$$msg.sender.as2_id$"));
assertEquals ("$$s1", aParams.format ("$$$$$msg.sender.as2_id$"));
assertEquals ("s1$", aParams.format ("$msg.sender.as2_id$$$"));
assertEquals ("s1$$", aParams.format ("$msg.sender.as2_id$$$$$"));
assertEquals ("s1$r1", aParams.format ("$msg.sender.as2_id$$$$msg.receiver.as2_id$"));
assertEquals ("s1$$r1", aParams.format ("$msg.sender.as2_id$$$$$$msg.receiver.as2_id$"));
assertEquals ("$$s1$$r1$$", aParams.format ("$$$$$msg.sender.as2_id$$$$$$msg.receiver.as2_id$$$$$"));
}
@Test
public void testIgnore () throws InvalidParameterException
{
final AS2Message aMsg = new AS2Message ();
aMsg.addHeader ("message-id", "12345");
aMsg.getPartnership ().setSenderAS2ID ("s1");
aMsg.getPartnership ().setReceiverAS2ID ("r1");
final CompositeParameters aParams = new CompositeParameters (true).add ("msg", new MessageParameters (aMsg));
// No placeholders
assertEquals ("sender.as2_id, receiver.as2_id, headers.message-id",
aParams.format ("sender.as2_id, receiver.as2_id, headers.message-id"));
// With placeholders
assertEquals ("s1, r1, 12345",
aParams.format ("$msg.sender.as2_id$, $msg.receiver.as2_id$, $msg.headers.message-id$"));
// Unknown placeholders
assertEquals ("", aParams.format ("$dummy$"));
assertEquals ("any", aParams.format ("any$dummy$"));
assertEquals ("any", aParams.format ("$dummy$any"));
assertEquals ("foobar", aParams.format ("foo$dummy$bar"));
}
}