/*! * \brief Unit tests for \ref TcToken * * \copyright Copyright (c) 2014 Governikus GmbH & Co. KG */ #include "TcToken.h" #include using namespace governikus; class test_TcToken : public QObject { Q_OBJECT private: QFile tokenXmlOk; QFile tokenXmlBroken; void checkAndOpenFile(QFile& file) { QVERIFY(file.exists()); QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text)); } public: test_TcToken() : tokenXmlOk(":/tctoken/ok.xml") , tokenXmlBroken(":/tctoken/broken.xml") { checkAndOpenFile(tokenXmlOk); checkAndOpenFile(tokenXmlBroken); } private Q_SLOTS: void parsedValues() { TcToken token(tokenXmlOk.readAll()); QVERIFY(token.isValid()); QCOMPARE(token.getBinding(), QString("urn:liberty:paos:2006-08")); QCOMPARE(token.getSessionIdentifier(), QByteArray("1A2BB129")); QCOMPARE(token.getServerAddress().toString(), QString("https://eid-server.example.de/entrypoint")); QCOMPARE(token.getRefreshAddress().toString(), QString("https://service.example.de/loggedin?7eb39f62")); QCOMPARE(token.getCommunicationErrorAddress().toString(), QString("https://service.example.de/ComError?7eb39f62")); QCOMPARE(token.getPsk(), QByteArray("4BC1A0B5")); token.clearPsk(); QVERIFY(token.getPsk().isNull()); } void parseTcTokenWithoutCommunicationErrorAddress() { TcToken token(QByteArray("" "" " https://eid-server.example.de/entrypoint" " 1A2BB129" " https://service.example.de/loggedin?7eb39f62" " urn:liberty:paos:2006-08 " " urn:ietf:rfc:4279 " " " " 4BC1A0B5 " " " "")); QVERIFY(token.isValid()); QVERIFY(!token.getBinding().isEmpty()); QVERIFY(!token.getSessionIdentifier().isEmpty()); QVERIFY(!token.getServerAddress().isEmpty()); QVERIFY(!token.getRefreshAddress().isEmpty()); QVERIFY(token.getCommunicationErrorAddress().isEmpty()); QVERIFY(!token.getPsk().isNull()); } /* * This is required from test case EID_CLIENT_A2_05 */ void parseTcTokenOnlyWithCommunicationErrorAddress() { TcToken token(QByteArray("\n" "\n" " \n" " \n" " \n" " https://service.example.de/ComError?7eb39f62\n" " \n" " \n" " \n" "")); QVERIFY(!token.isValid()); QVERIFY(token.getBinding().isEmpty()); QVERIFY(token.getSessionIdentifier().isEmpty()); QVERIFY(token.getServerAddress().isEmpty()); QVERIFY(token.getRefreshAddress().isEmpty()); QVERIFY(!token.getCommunicationErrorAddress().isEmpty()); QVERIFY(token.getPsk().isNull()); } /* * This is required from test case EID_CLIENT_A2_05 */ void parseTcTokenOnlyWithCommunicationErrorAddress2() { TcToken token(QByteArray("\n" "\n" " \n" " \n" " \n" " https://service.example.de/ComError?7eb39f62\n" " \n" " \n" " \n" "")); QVERIFY(!token.isValid()); QVERIFY(token.getBinding().isEmpty()); QVERIFY(token.getSessionIdentifier().isEmpty()); QVERIFY(token.getServerAddress().isEmpty()); QVERIFY(token.getRefreshAddress().isEmpty()); QVERIFY(!token.getCommunicationErrorAddress().isEmpty()); QVERIFY(token.getPsk().isNull()); } void parsePsk_oddNumberOfChars() { TcToken token(QByteArray("" "" " https://eid-server.example.de/entrypoint" " 1A2BB129" " https://service.example.de/loggedin?7eb39f62" " https://service.example.de/ComError?7eb39f62" " urn:liberty:paos:2006-08 " " urn:ietf:rfc:4279 " " " " 4BC1A0B56 " " " "")); QVERIFY(!token.isValid()); QVERIFY(!token.getPsk().isNull()); } void parsePsk_nonHexChars() { TcToken token(QByteArray("" "" " https://eid-server.example.de/entrypoint" " 1A2BB129" " https://service.example.de/loggedin?7eb39f62" " https://service.example.de/ComError?7eb39f62" " urn:liberty:paos:2006-08 " " urn:ietf:rfc:4279 " " " " 4BC1A0B5XX " " " "")); QVERIFY(!token.isValid()); QVERIFY(!token.getPsk().isNull()); } void parseNoPskButPathSecurityProtocol() { TcToken token(QByteArray("" "" " https://eid-server.example.de/entrypoint" " 1A2BB129" " https://service.example.de/loggedin?7eb39f62" " https://service.example.de/ComError?7eb39f62" " urn:liberty:paos:2006-08 " " urn:ietf:rfc:4279 " " " " " "")); QVERIFY(token.isValid()); QVERIFY(token.isSchemaConform()); } void parseNoPathSecurityParametersButPathSecurityProtocol() { TcToken token(QByteArray("" "" " https://eid-server.example.de/entrypoint" " 1A2BB129" " https://service.example.de/loggedin?7eb39f62" " https://service.example.de/ComError?7eb39f62" " urn:liberty:paos:2006-08 " " urn:ietf:rfc:4279 " "")); QVERIFY(token.isValid()); QVERIFY(token.isSchemaConform()); } void tryToParseCrap() { TcToken token(tokenXmlBroken.readAll()); QVERIFY(!token.isValid()); QVERIFY(token.getBinding().isNull()); QVERIFY(token.getSessionIdentifier().isNull()); QVERIFY(token.getServerAddress().isEmpty()); QVERIFY(token.getRefreshAddress().isEmpty()); QVERIFY(token.getCommunicationErrorAddress().isEmpty()); QVERIFY(token.getPsk().isNull()); token.clearPsk(); QVERIFY(token.getPsk().isNull()); } void tryToParseClosedFile() { tokenXmlOk.close(); TcToken token(tokenXmlOk.readAll()); QVERIFY(!token.isValid()); } }; QTEST_GUILESS_MAIN(test_TcToken) #include "test_TcToken.moc"