/* * Copyright 2010-2017 Norwegian Agency for Public Management and eGovernment (Difi) * * Licensed under the EUPL, Version 1.1 or – as soon they * will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * * You may not use this work except in compliance with the Licence. * * You may obtain a copy of the Licence at: * * https://joinup.ec.europa.eu/community/eupl/og_page/eupl * * Unless required by applicable law or agreed to in * writing, software distributed under the Licence is * distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the Licence for the specific language governing * permissions and limitations under the Licence. */ package no.difi.oxalis.as2.model; import org.testng.annotations.Test; import java.util.regex.Matcher; import static org.testng.Assert.*; /** * @author steinar * Date: 10.10.13 * Time: 18:50 */ public class As2DispositionTest { @Test public void testToString() throws Exception { String s = As2Disposition.processed().toString(); assertEquals(s, "automatic-action/MDN-sent-automatically; processed"); s = As2Disposition.failed("uhada").toString(); assertEquals(s.toLowerCase(), "automatic-action/mdn-sent-automatically; failed/failure: uhada"); s = As2Disposition.processedWithError("Ouch!").toString(); assertEquals(s.toLowerCase(), "automatic-action/mdn-sent-automatically; processed/error: ouch!"); } @Test public void parseWithPattern() throws Exception { String s = "automatic-action/MDN-sent-automatically; processed/error: Unknown recipient"; Matcher matcher = As2Disposition.pattern.matcher(s); assertTrue(matcher.matches()); assertEquals(matcher.groupCount(), 6); String actionMode = matcher.group(1); String sendingMode = matcher.group(2); String dispositionType = matcher.group(3); String dispositionModifierPrefix = matcher.group(5); String dispositionModifier = matcher.group(6); assertEquals(actionMode, "automatic-action"); assertEquals(sendingMode, "MDN-sent-automatically"); assertEquals(dispositionType, "processed"); assertEquals(dispositionModifierPrefix, "error"); assertEquals(dispositionModifier, "Unknown recipient"); s = "automatic-action/MDN-sent-automatically; processed"; matcher = As2Disposition.pattern.matcher(s); assertTrue(matcher.matches()); assertEquals(matcher.toMatchResult().groupCount(), 6); assertEquals(matcher.group(4), null); } @Test public void parseWithValueOf() throws Exception { String s = "automatic-action/MdN-sent-automatically; processed/error: Unknown recipient"; As2Disposition as2Disposition = As2Disposition.valueOf(s); assertNotNull(as2Disposition); assertEquals(as2Disposition.getActionMode(), As2Disposition.ActionMode.AUTOMATIC); assertEquals(as2Disposition.getSendingMode(), As2Disposition.SendingMode.AUTOMATIC); assertEquals(as2Disposition.getDispositionType(), As2Disposition.DispositionType.PROCESSED); assertEquals(as2Disposition.getDispositionModifier().getPrefix(), As2Disposition.DispositionModifier.Prefix.ERROR); assertEquals(as2Disposition.getDispositionModifier().getDispositionModifierExtension(), "Unknown recipient"); } @Test public void parseWithValueOfAdvanced() throws Exception { String s = "automatic-action/MDN-sent-automatically; processed/ERROR: Payload does not contain Standard Business Document Header "; As2Disposition as2Disposition = As2Disposition.valueOf(s); assertNotNull(as2Disposition); } @Test(expectedExceptions = IllegalArgumentException.class) public void parseLongDispositionFromRealWorldTesting() { String s = "automatic-action/MDN-sent-automatically; processed\\Error: unexpected-error"; As2Disposition unimaze = As2Disposition.valueOf(s); // illegal syntax } @Test public void parseLongDispositionFromRealWorldTestingFixed() { String s = " automatic-action/MDN-sent-automatically; processed/Error: unexpected-error "; As2Disposition unimaze = As2Disposition.valueOf(s); assertEquals(unimaze.getDispositionModifier().getDispositionModifierExtension(), "unexpected-error"); } @Test(expectedExceptions = IllegalArgumentException.class) public void parseShortDispositionFromRealWorldTesting() { String s = "Disposition: \"disposition-mode\"; processed"; s = s.split("Disposition:")[1]; As2Disposition unimaze = As2Disposition.valueOf(s); // illegal syntax } }