@@ -1786,6 +1786,44 @@ func TestParseBadXMLArtifactResponse(t *testing.T) {
17861786 assert .Check (t , is .Error (err .(* InvalidResponseError ).PrivateErr ,
17871787 "failed to decrypt EncryptedAssertion: certificate does not match provided key" ))
17881788 assert .Check (t , is .Nil (assertion ))
1789+
1790+ // no input
1791+ assertion , err = sp .ParseXMLArtifactResponse ([]byte ("<!-- no xml root -->" ), possibleReqIDs , reqID )
1792+ assert .Check (t , is .Error (err .(* InvalidResponseError ).PrivateErr ,
1793+ "invalid xml: no root" ))
1794+ assert .Check (t , is .Nil (assertion ))
1795+
1796+ assertion , err = sp .ParseXMLArtifactResponse ([]byte ("<invalid xml" ), possibleReqIDs , reqID )
1797+ assert .Check (t , is .Error (err .(* InvalidResponseError ).PrivateErr ,
1798+ "invalid xml: XML syntax error on line 1: unexpected EOF" ))
1799+ assert .Check (t , is .Nil (assertion ))
1800+ }
1801+
1802+ func TestParseBadXMLResponse (t * testing.T ) {
1803+ test := NewServiceProviderTest (t )
1804+ TimeNow = func () time.Time {
1805+ rv , _ := time .Parse (timeFormat , "2021-08-17T10:26:57Z" )
1806+ return rv
1807+ }
1808+ Clock = dsig .NewFakeClockAt (TimeNow ())
1809+
1810+ sp := ServiceProvider {
1811+ Key : test .Key ,
1812+ Certificate : test .Certificate ,
1813+ MetadataURL : mustParseURL ("http://localhost:8000/saml/metadata" ),
1814+ AcsURL : mustParseURL ("https://example.com/saml2/acs" ),
1815+ IDPMetadata : & EntityDescriptor {},
1816+ }
1817+
1818+ assertion , err := sp .ParseXMLResponse ([]byte ("<!-- no xml root -->" ), []string {})
1819+ assert .Check (t , is .Error (err .(* InvalidResponseError ).PrivateErr ,
1820+ "invalid xml: no root" ))
1821+ assert .Check (t , is .Nil (assertion ))
1822+
1823+ assertion , err = sp .ParseXMLResponse ([]byte ("<invalid xml" ), []string {})
1824+ assert .Check (t , is .Error (err .(* InvalidResponseError ).PrivateErr ,
1825+ "invalid xml: XML syntax error on line 1: unexpected EOF" ))
1826+ assert .Check (t , is .Nil (assertion ))
17891827}
17901828
17911829func TestMultipleAssertions (t * testing.T ) {
0 commit comments