Bug 1343373

Summary: [PicketLink] SAMLStatusResponseTypeParser.parseStatus fails on IBM JDK (SAMLSloResponseParserTestCase#testSLOResponseFromSalesforce)
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Ondrej Kotek <okotek>
Component: PicketLinkAssignee: jboss-set
Status: CLOSED WONTFIX QA Contact: Ondrej Kotek <okotek>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.4.8CC: anmiller, bdawidow, psilva, pskopek
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
IBM JDK
Last Closed: 2019-03-01 12:29:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Ondrej Kotek 2016-06-07 08:45:00 UTC
Description of problem:
There is an issue in processing XML in SAMLStatusResponseTypeParser.parseStatus on IBM JDK. org.picketlink.test.identity.federation.core.parser.saml.SAMLSloResponseParserTestCase#testSLOResponseFromSalesforce from redhat-picketlink fails on IBM JDK.

Version-Release number of selected component (if applicable):
2.5.4.SP8

How reproducible:
Run the test.

Steps to Reproduce:
mvn -f modules/federation test -Dtest=SAMLSloResponseParserTestCase#testSLOResponseFromSalesforce

Actual results:
java.util.NoSuchElementException: Either there were no more events in the queue or the state of the reader is END_DOCUMENT.
	at com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwNoSuchElementException(StAXMessageProvider.java:54)
	at com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl$EndDocumentXMLStreamReader.next(XMLInputFactoryImpl.java:398)
	at com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl$XMLStreamReaderProxy.next(XMLInputFactoryImpl.java:188)
	at com.ibm.xml.xlxp.api.stax.XMLEventReaderImpl.createNextEvent(XMLEventReaderImpl.java:361)
	at com.ibm.xml.xlxp.api.stax.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:119)
	at com.ibm.xml.xlxp.api.stax.XMLFilteredEventReaderImpl.nextEvent(XMLFilteredEventReaderImpl.java:107)
	at org.picketlink.common.util.StaxParserUtil.getNextEndElement(StaxParserUtil.java:257)
	at org.picketlink.identity.federation.core.parsers.saml.SAMLStatusResponseTypeParser.parseStatus(SAMLStatusResponseTypeParser.java:135)
	at org.picketlink.identity.federation.core.parsers.saml.SAMLSloResponseParser.parse(SAMLSloResponseParser.java:65)
	at org.picketlink.identity.federation.core.parsers.saml.SAMLParser.parse(SAMLParser.java:79)
	at org.picketlink.common.parsers.AbstractParser.parse(AbstractParser.java:108)
	at org.picketlink.test.identity.federation.core.parser.saml.SAMLSloResponseParserTestCase.testSLOResponseFromSalesforce(SAMLSloResponseParserTestCase.java:115)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

Expected results:
The test passes.

Additional info:
Looks like SAMLStatusResponseTypeParser.parseStatus cannot get next end element at line 135. Using peekNextEndElement could help.

There are two other related failing tests: SAML2LogOutHandlerUnitTestCase#handleIDPResponseWithSAMLResponderStatus, SAML2LogoutWorkflowUnitTestCase#testSAML2LogOutFromIDPServlet.