24 #include <QMutexLocker> 31 #include "SignOn/signonplugincommon.h" 32 #include "SignOn/uisessiondata.h" 33 #include "SignOn/uisessiondata_priv.h" 40 static bool is_canceled =
false;
41 static QEventLoop uiLoop;
42 static SignOn::UiSessionData uiData;
44 SsoTest2Plugin::SsoTest2Plugin(QObject *parent):
45 AuthPluginInterface(parent)
49 m_type = QLatin1String(
"ssotest2");
50 m_mechanisms = QStringList(QLatin1String(
"mech1"));
51 m_mechanisms += QLatin1String(
"mech2");
52 m_mechanisms += QLatin1String(
"mech3");
54 qRegisterMetaType<SignOn::SessionData>(
"SignOn::SessionData");
65 QMutexLocker locker(&mutex);
67 if (uiLoop.isRunning()) uiLoop.quit();
74 const QString &mechanism)
77 emit error(Error::MechanismNotAvailable);
81 QMetaObject::invokeMethod(
this,
84 Q_ARG(SignOn::SessionData, inData),
85 Q_ARG(QString, mechanism));
88 static QByteArray loadImage(
const QString &name)
91 QString resource = QLatin1String(
":/");
94 QImage realImage(resource + name);
96 buffer.open(QIODevice::ReadWrite);
98 realImage.save(&buffer);
102 static QVariantMap nameToParameters(
const QString &dialogName)
106 if (dialogName == QLatin1String(
"Browser")) {
111 data[
"OpenUrl"] =
"www.yahoo.com";
113 data[
"OpenUrl"] =
"www.google.com";
115 data[
"watchdog"] = QString(SSOUI_KEY_SLOT_ACCEPT);
117 }
else if (dialogName == QLatin1String(
"Login")) {
118 data[
"UserName"] =
"testUsername";
119 data[
"Secret"] =
"testSecret";
120 data[
"QueryMessageId"] = 0;
121 data[
"QueryUserName"] =
true;
122 data[
"QueryPassword"] =
true;
123 data[
"watchdog"] = QString(SSOUI_KEY_SLOT_ACCEPT);
124 }
else if (dialogName == QLatin1String(
"Captcha")) {
125 data[
"QueryMessageId"] = 0;
126 data[
"CaptchaImage"] = loadImage(
"Captcha1.jpg");
127 data[
"watchdog"] = QString(SSOUI_KEY_SLOT_REJECT);
128 }
else if (dialogName == QLatin1String(
"LoginAndCaptcha")) {
129 data[
"UserName"] =
"testUsername";
130 data[
"Secret"] =
"testSecret";
131 data[
"QueryMessageId"] = 0;
132 data[
"QueryUserName"] =
true;
133 data[
"QueryPassword"] =
true;
134 data[
"QueryMessageId"] = 0;
136 data[
"CaptchaImage"] = loadImage(
"Captcha1.jpg");
137 data[
"watchdog"] = QString(SSOUI_KEY_SLOT_REJECT);
143 void SsoTest2Plugin::execProcess(
const SignOn::SessionData &inData,
144 const QString &mechanism)
149 QStringList chainOfResults;
151 for (
int i = 0; i < testData.ChainOfStates().length(); i++)
153 quint32 currState = testData.CurrentState();
155 QString(
"message from plugin, state : %1").arg(currState);
157 emit statusChanged(PLUGIN_STATE_WAITING, message);
158 usleep(0.1 * 1000000);
160 QString dialogName = testData.ChainOfStates().at(currState);
162 QVariantMap parameters = nameToParameters(dialogName);
163 SignOn::UiSessionData data(parameters);
165 emit userActionRequired(data);
168 int errorCode = data.QueryErrorCode();
170 if ( dialogName == QLatin1String(
"Browser") ) {
171 if ( errorCode == SignOn::QUERY_ERROR_NONE ||
172 errorCode == SignOn::QUERY_ERROR_BAD_URL )
173 chainOfResults.append(QLatin1String(
"OK"));
175 chainOfResults.append(QString(
"FAIL"));
176 }
else if ( dialogName == QLatin1String(
"Login") ) {
177 if (errorCode == SignOn::QUERY_ERROR_NONE)
178 chainOfResults.append(QLatin1String(
"OK"));
180 chainOfResults.append(QString(
"FAIL"));
181 }
else if ( dialogName == QLatin1String(
"Captcha") ||
182 dialogName == QLatin1String(
"LoginAndCaptcha") ) {
183 if (errorCode == SignOn::QUERY_ERROR_CANCELED)
184 chainOfResults.append(QLatin1String(
"OK"));
186 chainOfResults.append(QLatin1String(
"FAIL"));
189 testData.setCurrentState(currState+1);
193 TRACE() <<
"Operation is canceled";
194 QMutexLocker locker(&mutex);
196 emit error(Error::SessionCanceled);
200 if (!testData.ChainOfStates().length() ||
201 testData.CurrentState() >= (quint32)testData.ChainOfStates().length()) {
205 testData.setSecret(
"testSecret_after_test");
207 foreach(QString key, testData.propertyNames())
208 TRACE() << key <<
": " << testData.getProperty(key);
210 TRACE() <<
"Emit the signal";
214 emit result(testData);
222 TRACE() <<
"Completed";
231 QString imageName = QString(
"Captcha%1.jpg").arg(ii);
232 TRACE() << imageName;
233 uiData.setCaptchaImage(loadImage(imageName));
237 emit refreshed(uiData);
238 TRACE() <<
"Completed";
virtual ~SsoTest2Plugin()
void refresh(const SignOn::UiSessionData &data)
void userActionFinished(const SignOn::UiSessionData &data)
QStringList mechanisms() const
void process(const SignOn::SessionData &inData, const QString &mechanism=0)